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