[ https://issues.apache.org/jira/browse/FLINK-11935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16974838#comment-16974838 ]
Zhenghua Gao commented on FLINK-11935: -------------------------------------- The impact to legacy planner: # toString of java.sql.Timestamp/Date considers Gregorian cutover which should be ignore. CALCITE-1884 has ignored the cutover, so CAST timestamp/date to STRING should ignore it too. # CALCITE-3199 is not merged in avatica-1.15.0 (we currently depends on) which should be fixed by ourself. The impact to blink planner: # SimpleDateFormat(used by casting timestamp to string and vice-versa) considers Gregorian cutover which should be ignore. # CALCITE-3199 is not merged in avatica-1.15.0 By fix CALCITE-3199 in flink, I will copy `DateTimeUtils.unixDateCeil` and some necessary utils and add a TODO to flag copied code. CALCITE-3199 has merged to avatica-1.16.0 and we can remove the copied code when we upgraded to avatica-1.16.0 > 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: Improvement > Components: Table SQL / API > Reporter: Rong Rong > Assignee: Zhenghua Gao > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > 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 (v8.3.4#803005)