diff options
author | vvvv <vvvv@yandex-team.com> | 2025-02-04 14:40:30 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2025-02-04 19:07:31 +0300 |
commit | 27119ca594f81c61abc7bebf3436af79bd66a6b0 (patch) | |
tree | e73fb035b8943d29474a382c020dcb55a222db2c | |
parent | 1fea87d26209ba20af974401e3bd373ad20387e3 (diff) | |
download | ydb-27119ca594f81c61abc7bebf3436af79bd66a6b0.tar.gz |
support of wide dates in type string
init
Address PR issues.
Fix dt64* params parsing. (KIKIMR-22462)
commit_hash:1d934a87487cd8ee55600135b11c2c4870e3d763
-rw-r--r-- | yql/essentials/ast/yql_type_string.cpp | 21 | ||||
-rw-r--r-- | yql/essentials/ast/yql_type_string_ut.cpp | 7 |
2 files changed, 28 insertions, 0 deletions
diff --git a/yql/essentials/ast/yql_type_string.cpp b/yql/essentials/ast/yql_type_string.cpp index 8d38a751c8..fc360d2f90 100644 --- a/yql/essentials/ast/yql_type_string.cpp +++ b/yql/essentials/ast/yql_type_string.cpp @@ -84,6 +84,13 @@ enum EToken TOKEN_DYNUMBER = -49, TOKEN_SCALAR = -50, TOKEN_BLOCK = -51, + TOKEN_DATE32 = -52, + TOKEN_DATETIME64 = -53, + TOKEN_TIMESTAMP64 = -54, + TOKEN_INTERVAL64 = -55, + TOKEN_TZDATE32 = -56, + TOKEN_TZDATETIME64 = -57, + TOKEN_TZTIMESTAMP64 = -58, // identifiers TOKEN_IDENTIFIER = -100, @@ -148,6 +155,13 @@ EToken TokenTypeFromStr(TStringBuf str) { TStringBuf("DyNumber"), TOKEN_DYNUMBER }, { TStringBuf("Block"), TOKEN_BLOCK}, { TStringBuf("Scalar"), TOKEN_SCALAR}, + { TStringBuf("Date32"), TOKEN_DATE32 }, + { TStringBuf("Datetime64"), TOKEN_DATETIME64}, + { TStringBuf("Timestamp64"), TOKEN_TIMESTAMP64 }, + { TStringBuf("Interval64"), TOKEN_INTERVAL64 }, + { TStringBuf("TzDate32"), TOKEN_TZDATE32 }, + { TStringBuf("TzDatetime64"), TOKEN_TZDATETIME64}, + { TStringBuf("TzTimestamp64"), TOKEN_TZTIMESTAMP64 }, }; auto it = map.find(str); @@ -218,6 +232,13 @@ private: case TOKEN_UUID: case TOKEN_JSON_DOCUMENT: case TOKEN_DYNUMBER: + case TOKEN_DATE32: + case TOKEN_DATETIME64: + case TOKEN_TIMESTAMP64: + case TOKEN_INTERVAL64: + case TOKEN_TZDATE32: + case TOKEN_TZDATETIME64: + case TOKEN_TZTIMESTAMP64: type = MakeDataType(Identifier); GetNextToken(); break; diff --git a/yql/essentials/ast/yql_type_string_ut.cpp b/yql/essentials/ast/yql_type_string_ut.cpp index 676f6c2397..2d20e05fc7 100644 --- a/yql/essentials/ast/yql_type_string_ut.cpp +++ b/yql/essentials/ast/yql_type_string_ut.cpp @@ -54,9 +54,16 @@ Y_UNIT_TEST_SUITE(TTypeString) TestOk("Datetime", "(DataType 'Datetime)"); TestOk("Timestamp", "(DataType 'Timestamp)"); TestOk("Interval", "(DataType 'Interval)"); + TestOk("Date32", "(DataType 'Date32)"); + TestOk("Datetime64", "(DataType 'Datetime64)"); + TestOk("Timestamp64", "(DataType 'Timestamp64)"); + TestOk("Interval64", "(DataType 'Interval64)"); TestOk("TzDate", "(DataType 'TzDate)"); TestOk("TzDatetime", "(DataType 'TzDatetime)"); TestOk("TzTimestamp", "(DataType 'TzTimestamp)"); + TestOk("TzDate32", "(DataType 'TzDate32)"); + TestOk("TzDatetime64", "(DataType 'TzDatetime64)"); + TestOk("TzTimestamp64", "(DataType 'TzTimestamp64)"); TestOk("Uuid", "(DataType 'Uuid)"); TestOk("Decimal(10,2)", "(DataType 'Decimal '10 '2)"); } |