This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit a703f7915e7fc2d2a1ca1d3a05f5cb5e95c9cb1a Author: Dmitry Lychagin <[email protected]> AuthorDate: Tue Feb 8 11:50:33 2022 -0800 [NO ISSUE][FUN] DATETIME constructor should accept TIME - user model changes: no - storage format changes: no - interface changes: no Details: - Fix datetime() constructor function to handle TIME argument, instead of returning NULL Change-Id: I9eab6b3e29642ef6d7f88808e7eb446e8f7c455c Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15203 Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Dmitry Lychagin <[email protected]> Reviewed-by: Ian Maxon <[email protected]> --- .../constructor/datetime_01/datetime_01.3.query.sqlpp | 4 ++-- .../constructor/datetime_02/datetime_02.1.query.sqlpp | 7 +++---- .../runtimets/results/constructor/datetime_01/datetime_01.1.adm | 2 +- .../runtimets/results/constructor/datetime_02/datetime_02.1.adm | 2 +- .../constructor/datetime_01/datetime_01.3.ast | 6 +++--- .../asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml | 7 +++---- .../constructors/AbstractDateTimeConstructorEvaluator.java | 8 ++++++++ 7 files changed, 21 insertions(+), 15 deletions(-) diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp index 97a9955..eb34dbf 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_01/datetime_01.3.query.sqlpp @@ -34,7 +34,8 @@ test = [ '-19280329T17493737+0630', '-19280301T05493737+0630', test.datetime('-19280301T05493737+0630'), - date('2020-01-02') + date('2020-01-02'), + time('01:02:03.456') ], testNull = [ null, @@ -47,7 +48,6 @@ testNull = [ int64(0), float(0), double(0), - time('01:02:03'), duration('PT0H'), year_month_duration('P0Y0M'), day_time_duration('P0D') diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp index 082d840..dec3016 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/constructor/datetime_02/datetime_02.1.query.sqlpp @@ -24,8 +24,7 @@ "null_0": datetime("@#!"), "null_1": datetime(false), "null_2": datetime(0), - "null_3": datetime(time("01:02:03")), - "null_4": datetime([]), - "null_5": datetime({}), - "null_6": datetime("1951-12-27T12:20:15Z", "INVALID_FORMAT") + "null_3": datetime([]), + "null_4": datetime({}), + "null_5": datetime("1951-12-27T12:20:15Z", "INVALID_FORMAT") }; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm index 8d2b2d2..cb20c29 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_01/datetime_01.1.adm @@ -14,6 +14,7 @@ { "g": 0, "i": 13, "actual": datetime("-1928-03-01T05:49:37.370") } { "g": 0, "i": 14, "actual": datetime("-1928-03-01T05:49:37.370") } { "g": 0, "i": 15, "actual": datetime("2020-01-02T00:00:00.000") } +{ "g": 0, "i": 16, "actual": datetime("1970-01-01T01:02:03.456") } { "g": 1, "i": 0, "expected": null, "actual": null } { "g": 1, "i": 1, "expected": null, "actual": null } { "g": 1, "i": 2, "expected": null, "actual": null } @@ -27,5 +28,4 @@ { "g": 1, "i": 10, "expected": null, "actual": null } { "g": 1, "i": 11, "expected": null, "actual": null } { "g": 1, "i": 12, "expected": null, "actual": null } -{ "g": 1, "i": 13, "expected": null, "actual": null } { "g": 2, "i": 0, "expected": true, "actual": true } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm index a7601ae..4d80977 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/constructor/datetime_02/datetime_02.1.adm @@ -1 +1 @@ -{ "null_0": null, "null_1": null, "null_2": null, "null_3": null, "null_4": null, "null_5": null, "null_6": null } \ No newline at end of file +{ "null_0": null, "null_1": null, "null_2": null, "null_3": null, "null_4": null, "null_5": null } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast index b348fda..ad2b9d9 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/constructor/datetime_01/datetime_01.3.ast @@ -22,6 +22,9 @@ Let Variable [ Name=$test ] FunctionCall asterix.date@1[ LiteralExpr [STRING] [2020-01-02] ] + FunctionCall asterix.time@1[ + LiteralExpr [STRING] [01:02:03.456] + ] ] Let Variable [ Name=$testNull ] := @@ -48,9 +51,6 @@ Let Variable [ Name=$testNull ] FunctionCall asterix.double@1[ LiteralExpr [LONG] [0] ] - FunctionCall asterix.time@1[ - LiteralExpr [STRING] [01:02:03] - ] FunctionCall asterix.duration@1[ LiteralExpr [STRING] [PT0H] ] diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index 0b98369..bc9353b 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -3674,10 +3674,9 @@ <expected-warn>ASX0006: Invalid format for datetime in @#! (in line 24, at column 13)</expected-warn> <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type boolean (in line 25, at column 13)</expected-warn> <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type bigint (in line 26, at column 13)</expected-warn> - <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type time (in line 27, at column 13)</expected-warn> - <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type array (in line 28, at column 13)</expected-warn> - <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type object (in line 29, at column 13)</expected-warn> - <expected-warn>ASX0006: Invalid format for datetime in 1951-12-27T12:20:15Z (in line 30, at column 13)</expected-warn> + <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type array (in line 27, at column 13)</expected-warn> + <expected-warn>ASX0004: Unsupported type: datetime() cannot process input type object (in line 28, at column 13)</expected-warn> + <expected-warn>ASX0006: Invalid format for datetime in 1951-12-27T12:20:15Z (in line 29, at column 13)</expected-warn> </compilation-unit> </test-case> <test-case FilePath="constructor"> diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java index 6765d90..3b4355d 100644 --- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java +++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/constructors/AbstractDateTimeConstructorEvaluator.java @@ -20,6 +20,7 @@ package org.apache.asterix.runtime.evaluators.constructors; import org.apache.asterix.dataflow.data.nontagged.serde.ADateSerializerDeserializer; +import org.apache.asterix.dataflow.data.nontagged.serde.ATimeSerializerDeserializer; import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider; import org.apache.asterix.om.base.ADateTime; import org.apache.asterix.om.base.AMutableDateTime; @@ -67,6 +68,13 @@ public abstract class AbstractDateTimeConstructorEvaluator extends AbstractConst datetimeSerde.serialize(aDateTime, out); result.set(resultStorage); break; + case TIME: + int chronon = ATimeSerializerDeserializer.getChronon(bytes, startOffset + 1); + aDateTime.setValue(chronon); + resultStorage.reset(); + datetimeSerde.serialize(aDateTime, out); + result.set(resultStorage); + break; case STRING: utf8Ptr.set(bytes, startOffset + 1, len - 1); if (parseDateTime(utf8Ptr, aDateTime)) {
