aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.com>2025-02-04 14:40:30 +0300
committervvvv <vvvv@yandex-team.com>2025-02-04 19:07:31 +0300
commit27119ca594f81c61abc7bebf3436af79bd66a6b0 (patch)
treee73fb035b8943d29474a382c020dcb55a222db2c
parent1fea87d26209ba20af974401e3bd373ad20387e3 (diff)
downloadydb-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.cpp21
-rw-r--r--yql/essentials/ast/yql_type_string_ut.cpp7
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)");
}