[ 
https://issues.apache.org/jira/browse/FLINK-3856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15276330#comment-15276330
 ] 

ASF GitHub Bot commented on FLINK-3856:
---------------------------------------

Github user fhueske commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1959#discussion_r62493248
  
    --- Diff: 
flink-core/src/main/java/org/apache/flink/api/common/typeutils/base/DateComparator.java
 ---
    @@ -59,15 +55,37 @@ public boolean isNormalizedKeyPrefixOnly(int keyBytes) {
        }
     
        @Override
    -   public void putNormalizedKey(Date lValue, MemorySegment target, int 
offset, int numBytes) {
    -           long value = lValue.getTime() - Long.MIN_VALUE;
    -           
    +   public void putNormalizedKey(Date record, MemorySegment target, int 
offset, int numBytes) {
    +           putNormalizedKeyDate(record, target, offset, numBytes);
    +   }
    +
    +   @Override
    +   public DateComparator duplicate() {
    +           return new DateComparator(ascendingComparison);
    +   }
    +
    +   // 
--------------------------------------------------------------------------------------------
    +   //                           Static Helpers for Date Comparison
    +   // 
--------------------------------------------------------------------------------------------
    +
    +   public static int compareSerializedDate(DataInputView firstSource, 
DataInputView secondSource,
    +                   boolean ascendingComparison) throws IOException {
    +           final long l1 = firstSource.readLong();
    +           final long l2 = secondSource.readLong();
    +           final int comp = (l1 < l2 ? -1 : (l1 == l2 ? 0 : 1));
    +           return ascendingComparison ? comp : -comp;
    +   }
    +
    +   public static void putNormalizedKeyDate(Date record, MemorySegment 
target, int offset, int numBytes) {
    +           final long value = record.getTime() - Long.MIN_VALUE;
    +
                // see IntValue for an explanation of the logic
                if (numBytes == 8) {
                        // default case, full normalized key
                        target.putLongBigEndian(offset, value);
                }
                else if (numBytes <= 0) {
    --- End diff --
    
    for `numBytes == 0`, the `numBytes < 8` branch would match and the loop 
would not be entered, because `numBytes > 0`. So the check is not necessary and 
only adds overhead for some cases. Actually, `numBytes` should be larger than 
`0` because otherwise calling this method would not make sense.



> Create types for java.sql.Date/Time/Timestamp
> ---------------------------------------------
>
>                 Key: FLINK-3856
>                 URL: https://issues.apache.org/jira/browse/FLINK-3856
>             Project: Flink
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Timo Walther
>            Assignee: Timo Walther
>
> At the moment there is only the {{Date}} type which is not sufficient for 
> most use cases about time.
> The Table API would also benefit from having different types as output result.
> I would propose to add the three {{java.sql.}} types either as {{BasicTypes}} 
> or in an additional class {{TimeTypes}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to