From a0e69055435263c17907db0dad1b7edf3d3ff30c Mon Sep 17 00:00:00 2001 From: Yingtao Liu Date: Thu, 13 Jul 2023 13:45:23 -0700 Subject: [PATCH 1/7] timestamp parsing --- .../primitives/timestamp-constructor.ion | 655 ++++++++++++++++++ .../primitives/timestamp-constructor.ion | 47 ++ .../primitives/timestamp-constructor.ion | 402 +++++++++++ 3 files changed, 1104 insertions(+) create mode 100644 partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion create mode 100644 partiql-tests-data/fail/syntax/primitives/timestamp-constructor.ion create mode 100644 partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion diff --git a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion new file mode 100644 index 0000000..92a4f0e --- /dev/null +++ b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion @@ -0,0 +1,655 @@ +// Timestamp WITH OUT TIME ZONE +// SQL Format +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid YEAR field - beyond 9999", + statement: "TIMESTAMP '12345-03-10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid YEAR field - minus before year", + statement: "TIMESTAMP '-9999-03-10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid YEAR field - plus before year", + statement: "TIMESTAMP '+9999-03-10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - above upper bound", + statement: "TIMESTAMP '2021-13-01 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - month of zero", + statement: "TIMESTAMP '2021-00-01 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - minus before month", + statement: "TIMESTAMP '2021--03-10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - plus before month", + statement: "TIMESTAMP '2021-+03-10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for January", + statement: "TIMESTAMP '2021-01-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for February leap year", + statement: "TIMESTAMP '2012-02-30 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for February non leap year", + statement: "TIMESTAMP '2021-02-29 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for March", + statement: "TIMESTAMP '2021-03-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for April", + statement: "TIMESTAMP '2021-04-31 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for May", + statement: "TIMESTAMP '2021-05-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for June", + statement: "TIMESTAMP '2021-06-31 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for July", + statement: "TIMESTAMP '2021-07-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for August", + statement: "TIMESTAMP '2021-08-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for September", + statement: "TIMESTAMP '2021-09-31 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for October", + statement: "TIMESTAMP '2021-10-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for November", + statement: "TIMESTAMP '2021-11-31 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for December", + statement: "TIMESTAMP '2021-12-32 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - day of zero", + statement: "TIMESTAMP '2021-01-00 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range", + statement: "TIMESTAMP '2021-03-12345 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid Day field - minus before day", + statement: "TIMESTAMP '2021-03--10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid Day field - plus before day", + statement: "TIMESTAMP '2021-03-+10 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid literal Format - random string", + statement: "TIMESTAMP 'timestamp'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - above upper bound", + statement: "TIMESTAMP '2021-03-01 24:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - Negative value", + statement: "TIMESTAMP '2021-03-01 -01:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - plus sign", + statement: "TIMESTAMP '2021-03-01 +01:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - plus sign", + statement: "TIMESTAMP '2021-03-01 +01:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MINUTE field - above upper bound", + statement: "TIMESTAMP '2021-03-01 00:60:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MINUTE field - negative value", + statement: "TIMESTAMP '2021-03-01 00:-01:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MINUTE field - plus sign", + statement: "TIMESTAMP '2021-03-01 00:+01:00'", + assert: { + result: StaticAnalysisFail + }, +} + +// Setting to 62 to take account of leap second, if any implement does care. +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid SECOND field - above upper bound", + statement: "TIMESTAMP '2021-03-01 00:00:62'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid SECOND field - negative value", + statement: "TIMESTAMP '2021-03-01 00:00:-01'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid SECOND field - plus sign", + statement: "TIMESTAMP '2021-03-01 00:00:+01'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid Precision - negative value", + statement: "TIMESTAMP(-1) '2021-03-01 00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +// TIMESTAMP WITHOUT TIME ZONE - RFC 3339 FORMAT +// The same test case as the above, but using T as opposite to space to seperate Date and Time Part. +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid YEAR field - beyond 9999", + statement: "TIMESTAMP '12345-03-10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid YEAR field - minus before year", + statement: "TIMESTAMP '-9999-03-10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid YEAR field - plus before year", + statement: "TIMESTAMP '+9999-03-10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - above upper bound", + statement: "TIMESTAMP '2021-13-01T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - month of zero", + statement: "TIMESTAMP '2021-00-01T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - minus before month", + statement: "TIMESTAMP '2021--03-10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - plus before month", + statement: "TIMESTAMP '2021-+03-10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for January", + statement: "TIMESTAMP '2021-01-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for February leap year", + statement: "TIMESTAMP '2012-02-30T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for February non leap year", + statement: "TIMESTAMP '2021-02-29T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for March", + statement: "TIMESTAMP '2021-03-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for April", + statement: "TIMESTAMP '2021-04-31T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for May", + statement: "TIMESTAMP '2021-05-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for June", + statement: "TIMESTAMP '2021-06-31T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for July", + statement: "TIMESTAMP '2021-07-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for August", + statement: "TIMESTAMP '2021-08-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for September", + statement: "TIMESTAMP '2021-09-31T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for October", + statement: "TIMESTAMP '2021-10-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for November", + statement: "TIMESTAMP '2021-11-31T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for December", + statement: "TIMESTAMP '2021-12-32T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - day of zero", + statement: "TIMESTAMP '2021-01-00T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range", + statement: "TIMESTAMP '2021-03-12345T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid Day field - minus before day", + statement: "TIMESTAMP '2021-03--10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid Day field - plus before day", + statement: "TIMESTAMP '2021-03-+10T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid literal Format - random string", + statement: "TIMESTAMP 'timestamp'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - above upper bound", + statement: "TIMESTAMP '2021-03-01T24:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - Negative value", + statement: "TIMESTAMP '2021-03-01T-01:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - plus sign", + statement: "TIMESTAMP '2021-03-01T+01:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - plus sign", + statement: "TIMESTAMP '2021-03-01T+01:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MINUTE field - above upper bound", + statement: "TIMESTAMP '2021-03-01T00:60:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MINUTE field - negative value", + statement: "TIMESTAMP '2021-03-01T00:-01:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MINUTE field - plus sign", + statement: "TIMESTAMP '2021-03-01T00:+01:00'", + assert: { + result: StaticAnalysisFail + }, +} + +// Setting to 62 to take account of leap second, if any implement does care. +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid SECOND field - above upper bound", + statement: "TIMESTAMP '2021-03-01T00:00:62'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid SECOND field - negative value", + statement: "TIMESTAMP '2021-03-01T00:00:-01'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid SECOND field - plus sign", + statement: "TIMESTAMP '2021-03-01T00:00:+01'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid Precision - negative value", + statement: "TIMESTAMP(-1) '2021-03-01T00:00:00'", + assert: { + result: StaticAnalysisFail + }, +} + +// TIMESTAMP - WITH TIME ZONE - SQL FORMAT +{ + name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_hour field - above upper bound", + statement: "TIMESTAMP '2021-03-01 00:00:00+24:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_hour field - below lower bound", + statement: "TIMESTAMP '2021-03-01 00:00:00-24:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_minute field - above upper bound", + statement: "TIMESTAMP '2021-03-01 00:00:00+00:60'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_hour field - below lower bound", + statement: "TIMESTAMP '2021-03-01 00:00:00-00:60'", + assert: { + result: StaticAnalysisFail + }, +} + +// TIMESTAMP WITH TIME ZONE - RFC 3339 Format +{ + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour field - above upper bound", + statement: "TIMESTAMP '2021-03-01T00:00:00+24:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour field - below lower bound", + statement: "TIMESTAMP '2021-03-01T00:00:00-24:00'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_minute field - above upper bound", + statement: "TIMESTAMP '2021-03-01T00:00:00+00:60'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour field - below lower bound", + statement: "TIMESTAMP '2021-03-01T00:00:00-00:60'", + assert: { + result: StaticAnalysisFail + }, +} + +{ + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour symbol", + statement: "TIMESTAMP '2021-03-01T00:00:00s'", + assert: { + result: StaticAnalysisFail + }, +} \ No newline at end of file diff --git a/partiql-tests-data/fail/syntax/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/syntax/primitives/timestamp-constructor.ion new file mode 100644 index 0000000..ec7fb50 --- /dev/null +++ b/partiql-tests-data/fail/syntax/primitives/timestamp-constructor.ion @@ -0,0 +1,47 @@ +{ + name: "missing TIMESTAMP string", + statement: "TIMESTAMP", + assert: { + result: SyntaxFail + }, +} + +{ + name: "invalid type INT for TIMESTAMP string", + statement: "TIMESTAMP 2012", + assert: { + result: SyntaxFail + }, +} + +{ + name: "invalid TIMESTAMP string without single quotes", + statement: "TIMESTAMP 2012-08-28 00:00:00", + assert: { + result: SyntaxFail + }, +} + +{ + name: "invalid TIMESTAMP string using Ion literal", + statement: "TIMESTAMP `2012-08-28T00:00:00Z`", + assert: { + result: SyntaxFail + }, +} + +{ + name: "invalid TIMESTAMP string no starting single quotation", + statement: "TIMESTAMP 2012-08-28 00:00:00'", + assert: { + result: SyntaxFail + }, +} + +{ + name: "invalid TIMESTAMP string no ending single quotation", + statement: "TIMESTAMP '2012-08-28 00:00:00", + assert: { + result: SyntaxFail + }, +} \ No newline at end of file diff --git a/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion b/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion new file mode 100644 index 0000000..18f79f5 --- /dev/null +++ b/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion @@ -0,0 +1,402 @@ +// SQL style +{ + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - No Second Precision ", + statement: "TIMESTAMP '2023-06-01 00:00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Arbitrary Second Precision", + statement: "TIMESTAMP '2023-06-01 00:00:00.00000000000", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision = Digit in Second Fraction", + statement: "TIMESTAMP(0) '2023-06-01 00:00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision < Digit in Second Fraction", + statement: "TIMESTAMP(0) '2023-06-01 00:00:00.0000", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision > Digit in Second Fraction", + statement: "TIMESTAMP(10) '2023-06-01 00:00:00.0000", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - SQL Style - No Second Precision ", + statement: "TIMESTAMP '2023-06-01 00:00:00+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Arbitrary Second Precision", + statement: "TIMESTAMP '2023-06-01 00:00:00.00000000000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision = Digit in Second Fraction", + statement: "TIMESTAMP(0) '2023-06-01 00:00:00+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision < Digit in Second Fraction", + statement: "TIMESTAMP(0) '2023-06-01 00:00:00.0000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision > Digit in Second Fraction", + statement: "TIMESTAMP(10) '2023-06-01 00:00:00.0000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +// RFC 3339 Style +// Note RFC 3339 requires a "full time" which include timestamp +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - No Second Precision - Time ZONE INTERVAL - Captialized T", + statement: "TIMESTAMP '2023-06-01T00:00:00+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Arbitrary Second Precision - Time ZONE INTERVAL - Captialized T", + statement: "TIMESTAMP '2023-06-01T00:00:00.00000000000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Time ZONE INTERVAL - Captialized T", + statement: "TIMESTAMP(0) '2023-06-01T00:00:00+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Time ZONE INTERVAL - Captialized T", + statement: "TIMESTAMP(0) '2023-06-01T00:00:00.0000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Time ZONE INTERVAL - Captialized T", + statement: "TIMESTAMP(10) '2023-06-01T00:00:00.0000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - No Second Precision - Time ZONE INTERVAL - Lowercase t", + statement: "TIMESTAMP '2023-06-01t00:00:00+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Arbitrary Second Precision - Time ZONE INTERVAL - Lowercase t", + statement: "TIMESTAMP '2023-06-01t00:00:00.00000000000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Time ZONE INTERVAL - Lowercase t", + statement: "TIMESTAMP(0) '2023-06-01t00:00:00+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Time ZONE INTERVAL - Lowercase t", + statement: "TIMESTAMP(0) '2023-06-01t00:00:00.0000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Time ZONE INTERVAL - Lowercase t", + statement: "TIMESTAMP(10) '2023-06-01t00:00:00.0000+00:00", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - No Second Precision - Captial Z for UTC - Captialized T", + statement: "TIMESTAMP '2023-06-01T00:00:00Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Arbitrary Second Precision - Captial Z for UTC - Captialized T", + statement: "TIMESTAMP '2023-06-01T00:00:00.00000000000Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Captial Z for UTC - Captialized T", + statement: "TIMESTAMP(0) '2023-06-01T00:00:00Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Captial Z for UTC - Captialized T", + statement: "TIMESTAMP(0) '2023-06-01T00:00:00.0000Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Captial Z for UTC - Captialized T", + statement: "TIMESTAMP(10) '2023-06-01T00:00:00.0000Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - No Second Precision - Captial Z for UTC - Lowercase t", + statement: "TIMESTAMP '2023-06-01t00:00:00Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Arbitrary Second Precision - Captial Z for UTC - Lowercase t", + statement: "TIMESTAMP '2023-06-01t00:00:00.00000000000Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Captial Z for UTC - Lowercase t", + statement: "TIMESTAMP(0) '2023-06-01t00:00:00Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Captial Z for UTC - Lowercase t", + statement: "TIMESTAMP(0) '2023-06-01t00:00:00.0000Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Captial Z for UTC - Lowercase t", + statement: "TIMESTAMP(10) '2023-06-01t00:00:00.0000Z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - No Second Precision - Lowercase Z for UTC - Captialized T", + statement: "TIMESTAMP '2023-06-01T00:00:00z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Arbitrary Second Precision - Lowercase Z for UTC - Captialized T", + statement: "TIMESTAMP '2023-06-01T00:00:00.00000000000z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Lowercase Z for UTC - Captialized T", + statement: "TIMESTAMP(0) '2023-06-01T00:00:00z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Lowercase Z for UTC - Captialized T", + statement: "TIMESTAMP(0) '2023-06-01T00:00:00.0000z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Lowercase Z for UTC - Captialized T", + statement: "TIMESTAMP(10) '2023-06-01T00:00:00.0000z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - No Second Precision - Lowercase Z for UTC - Lowercase t", + statement: "TIMESTAMP '2023-06-01t00:00:00z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Arbitrary Second Precision - Lowercase Z for UTC - Lowercase t", + statement: "TIMESTAMP '2023-06-01t00:00:00.00000000000z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Lowercase Z for UTC - Lowercase t", + statement: "TIMESTAMP(0) '2023-06-01t00:00:00z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Lowercase Z for UTC - Lowercase t", + statement: "TIMESTAMP(0) '2023-06-01t00:00:00.0000z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} + +{ + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Lowercase Z for UTC - Lowercase t", + statement: "TIMESTAMP(10) '2023-06-01t00:00:00.0000z", + assert: [ + { + result: SyntaxSuccess + }, + ] +} \ No newline at end of file From 140815be8d348b7b9d0364e9907de49b815ae660 Mon Sep 17 00:00:00 2001 From: yliuuuu <107505258+yliuuuu@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:12:25 -0700 Subject: [PATCH 2/7] Update timestamp-constructor.ion Change Typo --- .../primitives/timestamp-constructor.ion | 164 +++++++++--------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion index 92a4f0e..8d23483 100644 --- a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion +++ b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion @@ -1,7 +1,7 @@ // Timestamp WITH OUT TIME ZONE // SQL Format { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid YEAR field - beyond 9999", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid YEAR field - beyond 9999", statement: "TIMESTAMP '12345-03-10 00:00:00'", assert: { result: StaticAnalysisFail @@ -9,7 +9,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid YEAR field - minus before year", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid YEAR field - minus before year", statement: "TIMESTAMP '-9999-03-10 00:00:00'", assert: { result: StaticAnalysisFail @@ -17,7 +17,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid YEAR field - plus before year", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid YEAR field - plus before year", statement: "TIMESTAMP '+9999-03-10 00:00:00'", assert: { result: StaticAnalysisFail @@ -25,7 +25,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MONTH field - above upper bound", statement: "TIMESTAMP '2021-13-01 00:00:00'", assert: { result: StaticAnalysisFail @@ -33,7 +33,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - month of zero", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MONTH field - month of zero", statement: "TIMESTAMP '2021-00-01 00:00:00'", assert: { result: StaticAnalysisFail @@ -41,7 +41,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - minus before month", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MONTH field - minus before month", statement: "TIMESTAMP '2021--03-10 00:00:00'", assert: { result: StaticAnalysisFail @@ -49,7 +49,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MONTH field - plus before month", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MONTH field - plus before month", statement: "TIMESTAMP '2021-+03-10 00:00:00'", assert: { result: StaticAnalysisFail @@ -57,7 +57,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for January", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for January", statement: "TIMESTAMP '2021-01-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -65,7 +65,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for February leap year", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for February leap year", statement: "TIMESTAMP '2012-02-30 00:00:00'", assert: { result: StaticAnalysisFail @@ -73,7 +73,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for February non leap year", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for February non leap year", statement: "TIMESTAMP '2021-02-29 00:00:00'", assert: { result: StaticAnalysisFail @@ -81,7 +81,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for March", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for March", statement: "TIMESTAMP '2021-03-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -89,7 +89,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for April", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for April", statement: "TIMESTAMP '2021-04-31 00:00:00'", assert: { result: StaticAnalysisFail @@ -97,7 +97,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for May", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for May", statement: "TIMESTAMP '2021-05-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -105,7 +105,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for June", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for June", statement: "TIMESTAMP '2021-06-31 00:00:00'", assert: { result: StaticAnalysisFail @@ -113,7 +113,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for July", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for July", statement: "TIMESTAMP '2021-07-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -121,7 +121,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for August", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for August", statement: "TIMESTAMP '2021-08-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -129,7 +129,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for September", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for September", statement: "TIMESTAMP '2021-09-31 00:00:00'", assert: { result: StaticAnalysisFail @@ -137,7 +137,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for October", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for October", statement: "TIMESTAMP '2021-10-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -145,7 +145,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for November", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for November", statement: "TIMESTAMP '2021-11-31 00:00:00'", assert: { result: StaticAnalysisFail @@ -153,7 +153,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range for December", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range for December", statement: "TIMESTAMP '2021-12-32 00:00:00'", assert: { result: StaticAnalysisFail @@ -161,7 +161,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - day of zero", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - day of zero", statement: "TIMESTAMP '2021-01-00 00:00:00'", assert: { result: StaticAnalysisFail @@ -169,7 +169,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid DAY field - out of range", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - out of range", statement: "TIMESTAMP '2021-03-12345 00:00:00'", assert: { result: StaticAnalysisFail @@ -177,7 +177,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid Day field - minus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid Day field - minus before day", statement: "TIMESTAMP '2021-03--10 00:00:00'", assert: { result: StaticAnalysisFail @@ -185,7 +185,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid Day field - plus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid Day field - plus before day", statement: "TIMESTAMP '2021-03-+10 00:00:00'", assert: { result: StaticAnalysisFail @@ -193,7 +193,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid literal Format - random string", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid literal Format - random string", statement: "TIMESTAMP 'timestamp'", assert: { result: StaticAnalysisFail @@ -201,7 +201,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid HOUR field - above upper bound", statement: "TIMESTAMP '2021-03-01 24:00:00'", assert: { result: StaticAnalysisFail @@ -209,7 +209,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - Negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid HOUR field - Negative value", statement: "TIMESTAMP '2021-03-01 -01:00:00'", assert: { result: StaticAnalysisFail @@ -217,7 +217,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid HOUR field - plus sign", statement: "TIMESTAMP '2021-03-01 +01:00:00'", assert: { result: StaticAnalysisFail @@ -225,7 +225,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid HOUR field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid HOUR field - plus sign", statement: "TIMESTAMP '2021-03-01 +01:00:00'", assert: { result: StaticAnalysisFail @@ -233,7 +233,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MINUTE field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MINUTE field - above upper bound", statement: "TIMESTAMP '2021-03-01 00:60:00'", assert: { result: StaticAnalysisFail @@ -241,7 +241,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MINUTE field - negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MINUTE field - negative value", statement: "TIMESTAMP '2021-03-01 00:-01:00'", assert: { result: StaticAnalysisFail @@ -249,7 +249,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid MINUTE field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid MINUTE field - plus sign", statement: "TIMESTAMP '2021-03-01 00:+01:00'", assert: { result: StaticAnalysisFail @@ -258,7 +258,7 @@ // Setting to 62 to take account of leap second, if any implement does care. { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid SECOND field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid SECOND field - above upper bound", statement: "TIMESTAMP '2021-03-01 00:00:62'", assert: { result: StaticAnalysisFail @@ -266,7 +266,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid SECOND field - negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid SECOND field - negative value", statement: "TIMESTAMP '2021-03-01 00:00:-01'", assert: { result: StaticAnalysisFail @@ -274,7 +274,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid SECOND field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid SECOND field - plus sign", statement: "TIMESTAMP '2021-03-01 00:00:+01'", assert: { result: StaticAnalysisFail @@ -282,7 +282,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Fomat - invalid Precision - negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid Precision - negative value", statement: "TIMESTAMP(-1) '2021-03-01 00:00:00'", assert: { result: StaticAnalysisFail @@ -292,7 +292,7 @@ // TIMESTAMP WITHOUT TIME ZONE - RFC 3339 FORMAT // The same test case as the above, but using T as opposite to space to seperate Date and Time Part. { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid YEAR field - beyond 9999", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid YEAR field - beyond 9999", statement: "TIMESTAMP '12345-03-10T00:00:00'", assert: { result: StaticAnalysisFail @@ -300,7 +300,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid YEAR field - minus before year", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid YEAR field - minus before year", statement: "TIMESTAMP '-9999-03-10T00:00:00'", assert: { result: StaticAnalysisFail @@ -308,7 +308,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid YEAR field - plus before year", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid YEAR field - plus before year", statement: "TIMESTAMP '+9999-03-10T00:00:00'", assert: { result: StaticAnalysisFail @@ -316,7 +316,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MONTH field - above upper bound", statement: "TIMESTAMP '2021-13-01T00:00:00'", assert: { result: StaticAnalysisFail @@ -324,7 +324,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - month of zero", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MONTH field - month of zero", statement: "TIMESTAMP '2021-00-01T00:00:00'", assert: { result: StaticAnalysisFail @@ -332,7 +332,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - minus before month", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MONTH field - minus before month", statement: "TIMESTAMP '2021--03-10T00:00:00'", assert: { result: StaticAnalysisFail @@ -340,7 +340,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MONTH field - plus before month", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MONTH field - plus before month", statement: "TIMESTAMP '2021-+03-10T00:00:00'", assert: { result: StaticAnalysisFail @@ -348,7 +348,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for January", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for January", statement: "TIMESTAMP '2021-01-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -356,7 +356,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for February leap year", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for February leap year", statement: "TIMESTAMP '2012-02-30T00:00:00'", assert: { result: StaticAnalysisFail @@ -364,7 +364,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for February non leap year", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for February non leap year", statement: "TIMESTAMP '2021-02-29T00:00:00'", assert: { result: StaticAnalysisFail @@ -372,7 +372,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for March", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for March", statement: "TIMESTAMP '2021-03-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -380,7 +380,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for April", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for April", statement: "TIMESTAMP '2021-04-31T00:00:00'", assert: { result: StaticAnalysisFail @@ -388,7 +388,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for May", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for May", statement: "TIMESTAMP '2021-05-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -396,7 +396,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for June", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for June", statement: "TIMESTAMP '2021-06-31T00:00:00'", assert: { result: StaticAnalysisFail @@ -404,7 +404,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for July", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for July", statement: "TIMESTAMP '2021-07-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -412,7 +412,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for August", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for August", statement: "TIMESTAMP '2021-08-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -420,7 +420,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for September", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for September", statement: "TIMESTAMP '2021-09-31T00:00:00'", assert: { result: StaticAnalysisFail @@ -428,7 +428,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for October", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for October", statement: "TIMESTAMP '2021-10-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -436,7 +436,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for November", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for November", statement: "TIMESTAMP '2021-11-31T00:00:00'", assert: { result: StaticAnalysisFail @@ -444,7 +444,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range for December", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range for December", statement: "TIMESTAMP '2021-12-32T00:00:00'", assert: { result: StaticAnalysisFail @@ -452,7 +452,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - day of zero", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - day of zero", statement: "TIMESTAMP '2021-01-00T00:00:00'", assert: { result: StaticAnalysisFail @@ -460,7 +460,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid DAY field - out of range", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - out of range", statement: "TIMESTAMP '2021-03-12345T00:00:00'", assert: { result: StaticAnalysisFail @@ -468,7 +468,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid Day field - minus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid Day field - minus before day", statement: "TIMESTAMP '2021-03--10T00:00:00'", assert: { result: StaticAnalysisFail @@ -476,7 +476,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid Day field - plus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid Day field - plus before day", statement: "TIMESTAMP '2021-03-+10T00:00:00'", assert: { result: StaticAnalysisFail @@ -484,7 +484,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid literal Format - random string", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid literal Format - random string", statement: "TIMESTAMP 'timestamp'", assert: { result: StaticAnalysisFail @@ -492,7 +492,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid HOUR field - above upper bound", statement: "TIMESTAMP '2021-03-01T24:00:00'", assert: { result: StaticAnalysisFail @@ -500,7 +500,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - Negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid HOUR field - Negative value", statement: "TIMESTAMP '2021-03-01T-01:00:00'", assert: { result: StaticAnalysisFail @@ -508,7 +508,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid HOUR field - plus sign", statement: "TIMESTAMP '2021-03-01T+01:00:00'", assert: { result: StaticAnalysisFail @@ -516,7 +516,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid HOUR field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid HOUR field - plus sign", statement: "TIMESTAMP '2021-03-01T+01:00:00'", assert: { result: StaticAnalysisFail @@ -524,7 +524,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MINUTE field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MINUTE field - above upper bound", statement: "TIMESTAMP '2021-03-01T00:60:00'", assert: { result: StaticAnalysisFail @@ -532,7 +532,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MINUTE field - negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MINUTE field - negative value", statement: "TIMESTAMP '2021-03-01T00:-01:00'", assert: { result: StaticAnalysisFail @@ -540,7 +540,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid MINUTE field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid MINUTE field - plus sign", statement: "TIMESTAMP '2021-03-01T00:+01:00'", assert: { result: StaticAnalysisFail @@ -549,7 +549,7 @@ // Setting to 62 to take account of leap second, if any implement does care. { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid SECOND field - above upper bound", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid SECOND field - above upper bound", statement: "TIMESTAMP '2021-03-01T00:00:62'", assert: { result: StaticAnalysisFail @@ -557,7 +557,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid SECOND field - negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid SECOND field - negative value", statement: "TIMESTAMP '2021-03-01T00:00:-01'", assert: { result: StaticAnalysisFail @@ -565,7 +565,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid SECOND field - plus sign", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid SECOND field - plus sign", statement: "TIMESTAMP '2021-03-01T00:00:+01'", assert: { result: StaticAnalysisFail @@ -573,7 +573,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Fomat - invalid Precision - negative value", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid Precision - negative value", statement: "TIMESTAMP(-1) '2021-03-01T00:00:00'", assert: { result: StaticAnalysisFail @@ -582,7 +582,7 @@ // TIMESTAMP - WITH TIME ZONE - SQL FORMAT { - name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_hour field - above upper bound", + name: "TIMESTAMP - WITH TIMEZONE - SQL Format - invalid timezone_hour field - above upper bound", statement: "TIMESTAMP '2021-03-01 00:00:00+24:00'", assert: { result: StaticAnalysisFail @@ -590,7 +590,7 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_hour field - below lower bound", + name: "TIMESTAMP - WITH TIMEZONE - SQL Format - invalid timezone_hour field - below lower bound", statement: "TIMESTAMP '2021-03-01 00:00:00-24:00'", assert: { result: StaticAnalysisFail @@ -598,7 +598,7 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_minute field - above upper bound", + name: "TIMESTAMP - WITH TIMEZONE - SQL Format - invalid timezone_minute field - above upper bound", statement: "TIMESTAMP '2021-03-01 00:00:00+00:60'", assert: { result: StaticAnalysisFail @@ -606,7 +606,7 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - SQL Fomat - invalid timezone_hour field - below lower bound", + name: "TIMESTAMP - WITH TIMEZONE - SQL Format - invalid timezone_hour field - below lower bound", statement: "TIMESTAMP '2021-03-01 00:00:00-00:60'", assert: { result: StaticAnalysisFail @@ -615,7 +615,7 @@ // TIMESTAMP WITH TIME ZONE - RFC 3339 Format { - name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour field - above upper bound", + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Format - invalid timezone_hour field - above upper bound", statement: "TIMESTAMP '2021-03-01T00:00:00+24:00'", assert: { result: StaticAnalysisFail @@ -623,7 +623,7 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour field - below lower bound", + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Format - invalid timezone_hour field - below lower bound", statement: "TIMESTAMP '2021-03-01T00:00:00-24:00'", assert: { result: StaticAnalysisFail @@ -631,7 +631,7 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_minute field - above upper bound", + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Format - invalid timezone_minute field - above upper bound", statement: "TIMESTAMP '2021-03-01T00:00:00+00:60'", assert: { result: StaticAnalysisFail @@ -639,7 +639,7 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour field - below lower bound", + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Format - invalid timezone_hour field - below lower bound", statement: "TIMESTAMP '2021-03-01T00:00:00-00:60'", assert: { result: StaticAnalysisFail @@ -647,9 +647,9 @@ } { - name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Fomat - invalid timezone_hour symbol", + name: "TIMESTAMP - WITH TIMEZONE - RFC 3339 Format - invalid timezone_hour symbol", statement: "TIMESTAMP '2021-03-01T00:00:00s'", assert: { result: StaticAnalysisFail }, -} \ No newline at end of file +} From c35e99c2b4a9220e852644116f621a2e2bccb103 Mon Sep 17 00:00:00 2001 From: yliuuuu <107505258+yliuuuu@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:13:50 -0700 Subject: [PATCH 3/7] Apply suggestions from code review Co-authored-by: Alan Cai --- .../fail/static-analysis/primitives/timestamp-constructor.ion | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion index 8d23483..1769c05 100644 --- a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion +++ b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion @@ -290,7 +290,7 @@ } // TIMESTAMP WITHOUT TIME ZONE - RFC 3339 FORMAT -// The same test case as the above, but using T as opposite to space to seperate Date and Time Part. +// The same test cases as above, but using T rather than space to separate Date and Time Part. { name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid YEAR field - beyond 9999", statement: "TIMESTAMP '12345-03-10T00:00:00'", @@ -547,7 +547,7 @@ }, } -// Setting to 62 to take account of leap second, if any implement does care. +// Setting to 62 to take account of leap second, if any implementation cares. { name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid SECOND field - above upper bound", statement: "TIMESTAMP '2021-03-01T00:00:62'", From 7452a011c0a2f8ed959b8a1ec19b3709bafd541f Mon Sep 17 00:00:00 2001 From: yliuuuu <107505258+yliuuuu@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:16:12 -0700 Subject: [PATCH 4/7] Update timestamp-constructor.ion To upper case field. --- .../static-analysis/primitives/timestamp-constructor.ion | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion index 1769c05..a57f7ae 100644 --- a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion +++ b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion @@ -177,7 +177,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid Day field - minus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - minus before day", statement: "TIMESTAMP '2021-03--10 00:00:00'", assert: { result: StaticAnalysisFail @@ -185,7 +185,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid Day field - plus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid DAY field - plus before day", statement: "TIMESTAMP '2021-03-+10 00:00:00'", assert: { result: StaticAnalysisFail @@ -468,7 +468,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid Day field - minus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - minus before day", statement: "TIMESTAMP '2021-03--10T00:00:00'", assert: { result: StaticAnalysisFail @@ -476,7 +476,7 @@ } { - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid Day field - plus before day", + name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid DAY field - plus before day", statement: "TIMESTAMP '2021-03-+10T00:00:00'", assert: { result: StaticAnalysisFail From c83d816de25eb0659b6f46b5bbbbc09f3f6b37c0 Mon Sep 17 00:00:00 2001 From: yliuuuu <107505258+yliuuuu@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:22:47 -0700 Subject: [PATCH 5/7] Update timestamp-constructor.ion Special Character >, <, = --- .../primitives/timestamp-constructor.ion | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion b/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion index 18f79f5..3e329a6 100644 --- a/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion +++ b/partiql-tests-data/success/syntax/primitives/timestamp-constructor.ion @@ -20,7 +20,7 @@ } { - name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision = Digit in Second Fraction", + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision Equals To Digit In Second Fraction", statement: "TIMESTAMP(0) '2023-06-01 00:00:00", assert: [ { @@ -30,7 +30,7 @@ } { - name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision < Digit in Second Fraction", + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision Less Than Digit In Second Fraction", statement: "TIMESTAMP(0) '2023-06-01 00:00:00.0000", assert: [ { @@ -40,7 +40,7 @@ } { - name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision > Digit in Second Fraction", + name: "TIMESTAMP WITHOUT TIME ZONE - SQL Style - Precision Bigger than Digit In Second Fraction", statement: "TIMESTAMP(10) '2023-06-01 00:00:00.0000", assert: [ { @@ -70,7 +70,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision = Digit in Second Fraction", + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision Equals To Digit In Second Fraction", statement: "TIMESTAMP(0) '2023-06-01 00:00:00+00:00", assert: [ { @@ -80,7 +80,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision < Digit in Second Fraction", + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision Less Than Digit In Second Fraction", statement: "TIMESTAMP(0) '2023-06-01 00:00:00.0000+00:00", assert: [ { @@ -90,7 +90,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision > Digit in Second Fraction", + name: "TIMESTAMP WITH TIME ZONE - SQL Style - Precision Bigger Than Digit In Second Fraction", statement: "TIMESTAMP(10) '2023-06-01 00:00:00.0000+00:00", assert: [ { @@ -122,7 +122,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Time ZONE INTERVAL - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Equals To Digit In Second Fraction - Time ZONE INTERVAL - Captialized T", statement: "TIMESTAMP(0) '2023-06-01T00:00:00+00:00", assert: [ { @@ -132,7 +132,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Time ZONE INTERVAL - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Less Than Digit In Second Fraction - Time ZONE INTERVAL - Captialized T", statement: "TIMESTAMP(0) '2023-06-01T00:00:00.0000+00:00", assert: [ { @@ -142,7 +142,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Time ZONE INTERVAL - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Bigger Than Digit In Second Fraction - Time ZONE INTERVAL - Captialized T", statement: "TIMESTAMP(10) '2023-06-01T00:00:00.0000+00:00", assert: [ { @@ -172,7 +172,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Time ZONE INTERVAL - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Equals To Digit In Second Fraction - Time ZONE INTERVAL - Lowercase t", statement: "TIMESTAMP(0) '2023-06-01t00:00:00+00:00", assert: [ { @@ -182,7 +182,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Time ZONE INTERVAL - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Less Than Digit In Second Fraction - Time ZONE INTERVAL - Lowercase t", statement: "TIMESTAMP(0) '2023-06-01t00:00:00.0000+00:00", assert: [ { @@ -192,7 +192,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Time ZONE INTERVAL - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Bigger Than Digit In Second Fraction - Time ZONE INTERVAL - Lowercase t", statement: "TIMESTAMP(10) '2023-06-01t00:00:00.0000+00:00", assert: [ { @@ -222,7 +222,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Captial Z for UTC - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Equals To Digit in Second Fraction - Captial Z for UTC - Captialized T", statement: "TIMESTAMP(0) '2023-06-01T00:00:00Z", assert: [ { @@ -232,7 +232,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Captial Z for UTC - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Less Than Digit In Second Fraction - Captial Z for UTC - Captialized T", statement: "TIMESTAMP(0) '2023-06-01T00:00:00.0000Z", assert: [ { @@ -242,7 +242,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Captial Z for UTC - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Bigger Than Digit In Second Fraction - Captial Z for UTC - Captialized T", statement: "TIMESTAMP(10) '2023-06-01T00:00:00.0000Z", assert: [ { @@ -272,7 +272,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Captial Z for UTC - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Equals To Digit In Second Fraction - Captial Z for UTC - Lowercase t", statement: "TIMESTAMP(0) '2023-06-01t00:00:00Z", assert: [ { @@ -282,7 +282,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Captial Z for UTC - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Less Than Digit In Second Fraction - Captial Z for UTC - Lowercase t", statement: "TIMESTAMP(0) '2023-06-01t00:00:00.0000Z", assert: [ { @@ -292,7 +292,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Captial Z for UTC - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Bigger Than Digit In Second Fraction - Captial Z for UTC - Lowercase t", statement: "TIMESTAMP(10) '2023-06-01t00:00:00.0000Z", assert: [ { @@ -322,7 +322,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Lowercase Z for UTC - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Equals To Digit In Second Fraction - Lowercase Z for UTC - Captialized T", statement: "TIMESTAMP(0) '2023-06-01T00:00:00z", assert: [ { @@ -332,7 +332,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Lowercase Z for UTC - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Less Than Digit In Second Fraction - Lowercase Z for UTC - Captialized T", statement: "TIMESTAMP(0) '2023-06-01T00:00:00.0000z", assert: [ { @@ -342,7 +342,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Lowercase Z for UTC - Captialized T", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Bigger Than Digit In Second Fraction - Lowercase Z for UTC - Captialized T", statement: "TIMESTAMP(10) '2023-06-01T00:00:00.0000z", assert: [ { @@ -372,7 +372,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision = Digit in Second Fraction - Lowercase Z for UTC - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Equals To Digit In Second Fraction - Lowercase Z for UTC - Lowercase t", statement: "TIMESTAMP(0) '2023-06-01t00:00:00z", assert: [ { @@ -382,7 +382,7 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision < Digit in Second Fraction - Lowercase Z for UTC - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Less Than Digit In Second Fraction - Lowercase Z for UTC - Lowercase t", statement: "TIMESTAMP(0) '2023-06-01t00:00:00.0000z", assert: [ { @@ -392,11 +392,11 @@ } { - name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision > Digit in Second Fraction - Lowercase Z for UTC - Lowercase t", + name: "TIMESTAMP WITH TIME ZONE - RFC 3339 - Precision Bigger Than Digit In Second Fraction - Lowercase Z for UTC - Lowercase t", statement: "TIMESTAMP(10) '2023-06-01t00:00:00.0000z", assert: [ { result: SyntaxSuccess }, ] -} \ No newline at end of file +} From 9d364bca833c73f04d88d8ba315c85750792efcb Mon Sep 17 00:00:00 2001 From: yliuuuu <107505258+yliuuuu@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:23:29 -0700 Subject: [PATCH 6/7] Apply suggestions from code review Co-authored-by: Alan Cai --- .../fail/static-analysis/primitives/timestamp-constructor.ion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion index a57f7ae..ce8101d 100644 --- a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion +++ b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion @@ -256,7 +256,7 @@ }, } -// Setting to 62 to take account of leap second, if any implement does care. +// Setting to 62 to take account of leap second, if any implementation cares. { name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid SECOND field - above upper bound", statement: "TIMESTAMP '2021-03-01 00:00:62'", From 282c34740941272b0061ed332619d1d6f2a5a1d8 Mon Sep 17 00:00:00 2001 From: yliuuuu <107505258+yliuuuu@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:41:46 -0700 Subject: [PATCH 7/7] Update timestamp-constructor.ion --- .../primitives/timestamp-constructor.ion | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion index ce8101d..9a1d0c1 100644 --- a/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion +++ b/partiql-tests-data/fail/static-analysis/primitives/timestamp-constructor.ion @@ -1,4 +1,13 @@ // Timestamp WITH OUT TIME ZONE +// Format Independent. +{ + name: "TIMESTAMP - WITH OUT TIMEZONE - invalid literal Format - random string", + statement: "TIMESTAMP 'timestamp'", + assert: { + result: StaticAnalysisFail + }, +} + // SQL Format { name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid YEAR field - beyond 9999", @@ -192,14 +201,6 @@ }, } -{ - name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid literal Format - random string", - statement: "TIMESTAMP 'timestamp'", - assert: { - result: StaticAnalysisFail - }, -} - { name: "TIMESTAMP - WITH OUT TIMEZONE - SQL Format - invalid HOUR field - above upper bound", statement: "TIMESTAMP '2021-03-01 24:00:00'", @@ -483,14 +484,6 @@ }, } -{ - name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid literal Format - random string", - statement: "TIMESTAMP 'timestamp'", - assert: { - result: StaticAnalysisFail - }, -} - { name: "TIMESTAMP - WITH OUT TIMEZONE - RFC 3339 Format - invalid HOUR field - above upper bound", statement: "TIMESTAMP '2021-03-01T24:00:00'",