Jianfeng Jia has submitted this change and it was merged. Change subject: Fix ASTERIXDB-1292 ......................................................................
Fix ASTERIXDB-1292 Change-Id: Iee8e9b87145d9b3511874cd11d61ae87acdc94c7 Reviewed-on: https://asterix-gerrit.ics.uci.edu/636 Reviewed-by: Till Westmann <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Yingyi Bu <[email protected]> --- M asterix-app/src/test/resources/runtimets/queries/temporal/parse_02/parse_02.3.query.aql M asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/parse_02/parse_02.3.query.sqlpp M asterix-app/src/test/resources/runtimets/results/temporal/parse_02/parse_02.1.adm M asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast M asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java 5 files changed, 24 insertions(+), 12 deletions(-) Approvals: Yingyi Bu: Looks good to me, approved Till Westmann: Looks good to me, but someone else must approve Jenkins: Verified diff --git a/asterix-app/src/test/resources/runtimets/queries/temporal/parse_02/parse_02.3.query.aql b/asterix-app/src/test/resources/runtimets/queries/temporal/parse_02/parse_02.3.query.aql index dd1a2a5..318c4fe 100644 --- a/asterix-app/src/test/resources/runtimets/queries/temporal/parse_02/parse_02.3.query.aql +++ b/asterix-app/src/test/resources/runtimets/queries/temporal/parse_02/parse_02.3.query.aql @@ -26,7 +26,8 @@ let $date := date("-0123-01-30") let $time := time("08:07:29.030Z") let $datetime := datetime("0137-12-31T23:59:59.999+08:00") -return { +let $datetime2 := datetime("1000-10-10T10:10:10.100+00:00") +return { "date-string-1": print-date($date, "YY/M/D"), "date-string-2": print-date($date, "MMM DD, YYYY"), "date-string-3": print-date($date, "YYYY/MM/DD"), @@ -34,5 +35,6 @@ "time-string-2": print-time($time, "hh.mm.ss.nnn a z"), "datetime-string-1": print-datetime($datetime, "MMM DD h:m:s.nnn a YY z"), "datetime-string-2": print-datetime($datetime, "YYYY/MMM/DD h:m:s.nnnz a"), - "datetime-string-3": print-datetime($datetime, "YYYY-MM-DDThh:mm:ss.nnnz") + "datetime-string-3": print-datetime($datetime, "YYYY-MM-DDThh:mm:ss.nnnz"), + "datetime-string-4": print-datetime($datetime2, "YYYY-MM-DDThh:mm:ss.nnnz") } diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/parse_02/parse_02.3.query.sqlpp b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/parse_02/parse_02.3.query.sqlpp index a6f8354..5b7df2e 100644 --- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/parse_02/parse_02.3.query.sqlpp +++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/temporal/parse_02/parse_02.3.query.sqlpp @@ -24,4 +24,4 @@ use test; -{'date-string-1':test."print-date"(test.date('-0123-01-30'),'YY/M/D'),'date-string-2':test."print-date"(test.date('-0123-01-30'),'MMM DD, YYYY'),'date-string-3':test."print-date"(test.date('-0123-01-30'),'YYYY/MM/DD'),'time-string-1':test."print-time"(test.time('08:07:29.030Z'),'h.m.s.nn a z'),'time-string-2':test."print-time"(test.time('08:07:29.030Z'),'hh.mm.ss.nnn a z'),'datetime-string-1':test."print-datetime"(test.datetime('0137-12-31T23:59:59.999+08:00'),'MMM DD h:m:s.nnn a YY z'),'datetime-string-2':test."print-datetime"(test.datetime('0137-12-31T23:59:59.999+08:00'),'YYYY/MMM/DD h:m:s.nnnz a'),'datetime-string-3':test."print-datetime"(test.datetime('0137-12-31T23:59:59.999+08:00'),'YYYY-MM-DDThh:mm:ss.nnnz')}; +{'date-string-1':test."print-date"(test.date('-0123-01-30'),'YY/M/D'),'date-string-2':test."print-date"(test.date('-0123-01-30'),'MMM DD, YYYY'),'date-string-3':test."print-date"(test.date('-0123-01-30'),'YYYY/MM/DD'),'time-string-1':test."print-time"(test.time('08:07:29.030Z'),'h.m.s.nn a z'),'time-string-2':test."print-time"(test.time('08:07:29.030Z'),'hh.mm.ss.nnn a z'),'datetime-string-1':test."print-datetime"(test.datetime('0137-12-31T23:59:59.999+08:00'),'MMM DD h:m:s.nnn a YY z'),'datetime-string-2':test."print-datetime"(test.datetime('0137-12-31T23:59:59.999+08:00'),'YYYY/MMM/DD h:m:s.nnnz a'),'datetime-string-3':test."print-datetime"(test.datetime('0137-12-31T23:59:59.999+08:00'),'YYYY-MM-DDThh:mm:ss.nnnz'),'datetime-string-4':test."print-datetime"(test.datetime('1000-10-10T10:10:10.100+00:00'),'YYYY-MM-DDThh:mm:ss.nnnz')}; diff --git a/asterix-app/src/test/resources/runtimets/results/temporal/parse_02/parse_02.1.adm b/asterix-app/src/test/resources/runtimets/results/temporal/parse_02/parse_02.1.adm index 53035aa..68f22cc 100644 --- a/asterix-app/src/test/resources/runtimets/results/temporal/parse_02/parse_02.1.adm +++ b/asterix-app/src/test/resources/runtimets/results/temporal/parse_02/parse_02.1.adm @@ -1 +1 @@ -{ "date-string-1": "-123/1/30", "date-string-2": "JAN 30, -0123", "date-string-3": "-0123/01/30", "time-string-1": "8.7.29.03 AM Z", "time-string-2": "08.07.29.030 AM Z", "datetime-string-1": "DEC 31 3:59:59.999 PM 137 Z", "datetime-string-2": "0137/DEC/31 3:59:59.999Z PM", "datetime-string-3": "0137-12-31T15:59:59.999Z" } +{ "date-string-1": "-123/1/30", "date-string-2": "JAN 30, -0123", "date-string-3": "-0123/01/30", "time-string-1": "8.7.29.03 AM Z", "time-string-2": "08.07.29.030 AM Z", "datetime-string-1": "DEC 31 3:59:59.999 PM 137 Z", "datetime-string-2": "0137/DEC/31 3:59:59.999Z PM", "datetime-string-3": "0137-12-31T15:59:59.999Z", "datetime-string-4": "1000-10-10T10:10:10.100Z" } diff --git a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast index 1fe2ac2..5ff0efc 100644 --- a/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast +++ b/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/temporal/parse_02/parse_02.3.ast @@ -81,4 +81,14 @@ LiteralExpr [STRING] [YYYY-MM-DDThh:mm:ss.nnnz] ] ) + ( + LiteralExpr [STRING] [datetime-string-4] + : + FunctionCall test.print-datetime@2[ + FunctionCall test.datetime@1[ + LiteralExpr [STRING] [1000-10-10T10:10:10.100+00:00] + ] + LiteralExpr [STRING] [YYYY-MM-DDThh:mm:ss.nnnz] + ] + ) ] diff --git a/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java b/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java index 30ff44d..8e33d44 100644 --- a/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java +++ b/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java @@ -875,14 +875,12 @@ } else { val = day; } - int valFieldCount = (int) Math.ceil(Math.log10(val)); - if (val == 1 || val == 0) { - valFieldCount = 1; - } + String strVal = String.valueOf(val); + int valFieldCount = strVal.length(); for (int i = 0; i < formatCharCopies - valFieldCount; i++) { appender.append('0'); } - appender.append(String.valueOf(val)); + appender.append(strVal); break; case HOUR: case MINUTE: @@ -904,7 +902,8 @@ appender.append(String.valueOf(val)); break; case MILLISECOND: - int msFieldCount = (int) Math.ceil(Math.log10(ms)); + String strMS = String.valueOf(ms); + int msFieldCount = strMS.length(); for (int i = 0; i < 3 - msFieldCount; i++) { appender.append('0'); } @@ -924,9 +923,10 @@ ms = ms / 10; } } - + appender.append(String.valueOf(ms)); + } else { + appender.append(strMS); } - appender.append(String.valueOf(ms)); break; case TIMEZONE: if (timezone == 0) { -- To view, visit https://asterix-gerrit.ics.uci.edu/636 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iee8e9b87145d9b3511874cd11d61ae87acdc94c7 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Jianfeng Jia <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Jianfeng Jia <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]> Gerrit-Reviewer: Yingyi Bu <[email protected]>
