[ 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)