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

Rong Rong commented on FLINK-11935:
-----------------------------------

I dug a little deeper: I think there are something problematic in the 
{{java.sql.Date}} class where according to 
https://www.rgagnon.com/javadetails/java-0506.html. This is exactly where the 
Gregorian date start. 

My suggestions is 
* if Calcite is set to use Julian, then we should set use the same approach - 
This means we need to set everywhere in Flink to use Julian Date instead of 
java.sql.Date (this seems problematic). 
* if Calcite supports user to choose particular calendar (Julian, Gregorian, 
Truncated Julian, etc) - then it makes our life easier to just set the correct 
one we use.
* if we can somehow avoid using Avatica by using our own SqlDateTimeUtils (see 
Blink's implementation of {{SqlDateTimeUtils}}) - this is also a simple 
approach IMO.

I think one very concern of this is that we should not mix calendars. Other 
than that I think any approach is fine. [~yanghua], [~twalthr] ?

> Remove DateTimeUtils pull-in and fix datetime casting problem
> -------------------------------------------------------------
>
>                 Key: FLINK-11935
>                 URL: https://issues.apache.org/jira/browse/FLINK-11935
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / API
>            Reporter: Rong Rong
>            Assignee: vinoyang
>            Priority: Major
>
> This {{DateTimeUtils}} was pulled in in FLINK-7235.
> Originally the time operation was not correctly done via the {{ymdToJulian}} 
> function before the date {{1970-01-01}} thus we need the fix. similar to 
> addressing this problem:
> {code:java}
>  Optimized :1017-12-05 22:58:58.998 
>  Expected :1017-11-29 22:58:58.998
>  Actual :1017-12-05 22:58:58.998
> {code}
>  
> However, after pulling in avatica 1.13, I found out that the optimized plans 
> of the time operations are actually correct. it is in fact the casting part 
> that creates problem:
> For example, the following:
> *{{(plus(-12000.months, cast('2017-11-29 22:58:58.998', TIMESTAMP))}}*
> result in a StringTestExpression of:
> *{{CAST(1017-11-29 22:58:58.998):VARCHAR(65536) CHARACTER SET "UTF-16LE" 
> COLLATE "ISO-8859-1$en_US$primary" NOT NULL}}*
> but the testing results are:
> {code:java}
>  Optimized :1017-11-29 22:58:58.998
>  Expected :1017-11-29 22:58:58.998
>  Actual :1017-11-23 22:58:58.998
> {code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to