Skip to content

Commit ab48940

Browse files
authored
Merge 8159984 into 2e3d80e
2 parents 2e3d80e + 8159984 commit ab48940

20 files changed

+773
-60
lines changed

ydb/library/yql/core/sql_types/simple_types.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ std::optional<std::string_view> LookupSimpleTypeBySqlAlias(const std::string_vie
6060
{"tztimestamp", "TzTimestamp"},
6161

6262
{"date32", "Date32"},
63+
{"datetime64", "Datetime64"},
64+
{"timestamp64", "Timestamp64"},
65+
{"interval64", "Interval64"},
6366
};
6467

6568
// new types (or aliases) should be added here

ydb/library/yql/core/yql_expr_type_annotation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5119,6 +5119,7 @@ TMaybe<ui32> GetDataFixedSize(const TTypeAnnotationNode* typeAnnotation) {
51195119
}
51205120

51215121
if (EDataSlot::Timestamp == dataSlot || EDataSlot::Uint64 == dataSlot || EDataSlot::Int64 == dataSlot
5122+
|| EDataSlot::Datetime64 == dataSlot || EDataSlot::Timestamp64 == dataSlot || EDataSlot::Interval64 == dataSlot
51225123
|| EDataSlot::Double == dataSlot || EDataSlot::Interval == dataSlot) {
51235124
return 8;
51245125
}

ydb/library/yql/core/yql_opt_utils.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,6 +1578,9 @@ ui64 GetTypeWeight(const TTypeAnnotationNode& type) {
15781578
case NUdf::EDataSlot::Int64:
15791579
case NUdf::EDataSlot::Uint64:
15801580
case NUdf::EDataSlot::Double:
1581+
case NUdf::EDataSlot::Datetime64:
1582+
case NUdf::EDataSlot::Timestamp64:
1583+
case NUdf::EDataSlot::Interval64:
15811584
case NUdf::EDataSlot::Timestamp:
15821585
case NUdf::EDataSlot::Interval: return 8;
15831586

ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,15 @@ void RegisterWideToBigDateCasts(IBuiltinFunctionRegistry& registry) {
882882
RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TDate32>, NUdf::MAX_DATE32, NUdf::MIN_DATE32>(registry);
883883
RegisterWideToDateCastsImpl<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TDate32>, NUdf::MAX_DATE32>(registry);
884884
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TDate32>, NUdf::MAX_DATE32>(registry);
885+
886+
RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TDatetime64>, NUdf::MAX_DATETIME64, NUdf::MIN_DATETIME64>(registry);
887+
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TDatetime64>, NUdf::MAX_DATETIME64>(registry);
888+
889+
RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TTimestamp64>, NUdf::MAX_TIMESTAMP64, NUdf::MIN_TIMESTAMP64>(registry);
890+
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TTimestamp64>, NUdf::MAX_TIMESTAMP64>(registry);
891+
892+
RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TInterval64>, NUdf::MAX_INTERVAL64, -NUdf::MAX_INTERVAL64>(registry);
893+
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TInterval64>, NUdf::MAX_INTERVAL64>(registry);
885894
}
886895

887896
void RegisterWideToTimestampCasts(IBuiltinFunctionRegistry& registry) {
@@ -937,11 +946,6 @@ void RegisterWideToShortIntegralCasts(IBuiltinFunctionRegistry& registry) {
937946
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate>, NUdf::TDataType<ui8>>(registry);
938947
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate>, NUdf::TDataType<i16>>(registry);
939948

940-
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i8>>(registry);
941-
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<ui8>>(registry);
942-
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i16>>(registry);
943-
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<ui16>>(registry);
944-
945949
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTzDate>, NUdf::TDataType<i8>>(registry);
946950
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTzDate>, NUdf::TDataType<ui8>>(registry);
947951
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTzDate>, NUdf::TDataType<i16>>(registry);
@@ -977,6 +981,29 @@ void RegisterWideToShortIntegralCasts(IBuiltinFunctionRegistry& registry) {
977981
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval>, NUdf::TDataType<i32>>(registry);
978982
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TInterval>>(registry);
979983

984+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i8>>(registry);
985+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i16>>(registry);
986+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i32>>(registry);
987+
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TDate32>>(registry);
988+
989+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i8>>(registry);
990+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i16>>(registry);
991+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i32>>(registry);
992+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i64>>(registry);
993+
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TDatetime64>>(registry);
994+
995+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i8>>(registry);
996+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i16>>(registry);
997+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i32>>(registry);
998+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i64>>(registry);
999+
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1000+
1001+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i8>>(registry);
1002+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i16>>(registry);
1003+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i32>>(registry);
1004+
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i64>>(registry);
1005+
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TInterval64>>(registry);
1006+
9801007
RegisterWideToDateCasts(registry);
9811008
RegisterWideToBigDateCasts(registry);
9821009
RegisterWideToDatetimeCasts(registry);
@@ -1034,6 +1061,27 @@ void RegisterToBigDateConvert(IBuiltinFunctionRegistry& registry) {
10341061
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TDate32>>(registry);
10351062
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TDate32>>(registry);
10361063
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TDate32>>(registry);
1064+
1065+
RegisterConvert<NUdf::TDataType<i8>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
1066+
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
1067+
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
1068+
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
1069+
RegisterConvert<NUdf::TDataType<i32>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
1070+
RegisterConvert<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
1071+
1072+
RegisterConvert<NUdf::TDataType<i8>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1073+
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1074+
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1075+
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1076+
RegisterConvert<NUdf::TDataType<i32>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1077+
RegisterConvert<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1078+
1079+
RegisterConvert<NUdf::TDataType<i8>, NUdf::TDataType<NUdf::TInterval64>>(registry);
1080+
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TInterval64>>(registry);
1081+
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TInterval64>>(registry);
1082+
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TInterval64>>(registry);
1083+
RegisterConvert<NUdf::TDataType<i32>, NUdf::TDataType<NUdf::TInterval64>>(registry);
1084+
RegisterConvert<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TInterval64>>(registry);
10371085
}
10381086

10391087
template <typename TInput, typename TOutput, bool Tz = false>
@@ -1143,14 +1191,18 @@ void RegisterConvert(IBuiltinFunctionRegistry& registry) {
11431191
RegisterStringConvert<NUdf::TDataType<NUdf::TJson>, NUdf::TDataType<NUdf::TUtf8>>(registry);
11441192

11451193
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDate>>(registry);
1146-
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDate32>>(registry);
11471194
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDatetime>>(registry);
11481195
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTimestamp>>(registry);
11491196
RegisterFromDateConvert<NUdf::TDataType<NUdf::TInterval>>(registry);
11501197
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTzDate>>(registry);
11511198
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTzDatetime>>(registry);
11521199
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTzTimestamp>>(registry);
11531200

1201+
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDate32>>(registry);
1202+
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDatetime64>>(registry);
1203+
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTimestamp64>>(registry);
1204+
RegisterFromDateConvert<NUdf::TDataType<NUdf::TInterval64>>(registry);
1205+
11541206
RegisterTzDateimeConvert(registry);
11551207
RegisterDatetimeRescale(registry);
11561208
RegisterToDateConvert(registry);

0 commit comments

Comments
 (0)