Skip to content

Commit

Permalink
Merge 8159984 into 2e3d80e
Browse files Browse the repository at this point in the history
  • Loading branch information
amikish authored Jan 31, 2024
2 parents 2e3d80e + 8159984 commit ab48940
Show file tree
Hide file tree
Showing 20 changed files with 773 additions and 60 deletions.
3 changes: 3 additions & 0 deletions ydb/library/yql/core/sql_types/simple_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ std::optional<std::string_view> LookupSimpleTypeBySqlAlias(const std::string_vie
{"tztimestamp", "TzTimestamp"},

{"date32", "Date32"},
{"datetime64", "Datetime64"},
{"timestamp64", "Timestamp64"},
{"interval64", "Interval64"},
};

// new types (or aliases) should be added here
Expand Down
1 change: 1 addition & 0 deletions ydb/library/yql/core/yql_expr_type_annotation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5119,6 +5119,7 @@ TMaybe<ui32> GetDataFixedSize(const TTypeAnnotationNode* typeAnnotation) {
}

if (EDataSlot::Timestamp == dataSlot || EDataSlot::Uint64 == dataSlot || EDataSlot::Int64 == dataSlot
|| EDataSlot::Datetime64 == dataSlot || EDataSlot::Timestamp64 == dataSlot || EDataSlot::Interval64 == dataSlot
|| EDataSlot::Double == dataSlot || EDataSlot::Interval == dataSlot) {
return 8;
}
Expand Down
3 changes: 3 additions & 0 deletions ydb/library/yql/core/yql_opt_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1578,6 +1578,9 @@ ui64 GetTypeWeight(const TTypeAnnotationNode& type) {
case NUdf::EDataSlot::Int64:
case NUdf::EDataSlot::Uint64:
case NUdf::EDataSlot::Double:
case NUdf::EDataSlot::Datetime64:
case NUdf::EDataSlot::Timestamp64:
case NUdf::EDataSlot::Interval64:
case NUdf::EDataSlot::Timestamp:
case NUdf::EDataSlot::Interval: return 8;

Expand Down
64 changes: 58 additions & 6 deletions ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -882,6 +882,15 @@ void RegisterWideToBigDateCasts(IBuiltinFunctionRegistry& registry) {
RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TDate32>, NUdf::MAX_DATE32, NUdf::MIN_DATE32>(registry);
RegisterWideToDateCastsImpl<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TDate32>, NUdf::MAX_DATE32>(registry);
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TDate32>, NUdf::MAX_DATE32>(registry);

RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TDatetime64>, NUdf::MAX_DATETIME64, NUdf::MIN_DATETIME64>(registry);
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TDatetime64>, NUdf::MAX_DATETIME64>(registry);

RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TTimestamp64>, NUdf::MAX_TIMESTAMP64, NUdf::MIN_TIMESTAMP64>(registry);
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TTimestamp64>, NUdf::MAX_TIMESTAMP64>(registry);

RegisterWideToBigDateCastsImpl<NUdf::TDataType<i64>, NUdf::TDataType<NUdf::TInterval64>, NUdf::MAX_INTERVAL64, -NUdf::MAX_INTERVAL64>(registry);
RegisterWideToDateCastsImpl<NUdf::TDataType<ui64>, NUdf::TDataType<NUdf::TInterval64>, NUdf::MAX_INTERVAL64>(registry);
}

void RegisterWideToTimestampCasts(IBuiltinFunctionRegistry& registry) {
Expand Down Expand Up @@ -937,11 +946,6 @@ void RegisterWideToShortIntegralCasts(IBuiltinFunctionRegistry& registry) {
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate>, NUdf::TDataType<ui8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate>, NUdf::TDataType<i16>>(registry);

RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<ui8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i16>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<ui16>>(registry);

RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTzDate>, NUdf::TDataType<i8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTzDate>, NUdf::TDataType<ui8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTzDate>, NUdf::TDataType<i16>>(registry);
Expand Down Expand Up @@ -977,6 +981,29 @@ void RegisterWideToShortIntegralCasts(IBuiltinFunctionRegistry& registry) {
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval>, NUdf::TDataType<i32>>(registry);
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TInterval>>(registry);

RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i16>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDate32>, NUdf::TDataType<i32>>(registry);
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TDate32>>(registry);

RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i16>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i32>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TDatetime64>, NUdf::TDataType<i64>>(registry);
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TDatetime64>>(registry);

RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i16>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i32>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TTimestamp64>, NUdf::TDataType<i64>>(registry);
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TTimestamp64>>(registry);

RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i8>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i16>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i32>>(registry);
RegisterWideToShortCastsImpl<NUdf::TDataType<NUdf::TInterval64>, NUdf::TDataType<i64>>(registry);
RegisterWideToUnsignedCasts<NUdf::TDataType<NUdf::TInterval64>>(registry);

RegisterWideToDateCasts(registry);
RegisterWideToBigDateCasts(registry);
RegisterWideToDatetimeCasts(registry);
Expand Down Expand Up @@ -1034,6 +1061,27 @@ void RegisterToBigDateConvert(IBuiltinFunctionRegistry& registry) {
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TDate32>>(registry);
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TDate32>>(registry);
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TDate32>>(registry);

RegisterConvert<NUdf::TDataType<i8>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
RegisterConvert<NUdf::TDataType<i32>, NUdf::TDataType<NUdf::TDatetime64>>(registry);
RegisterConvert<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TDatetime64>>(registry);

RegisterConvert<NUdf::TDataType<i8>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
RegisterConvert<NUdf::TDataType<i32>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);
RegisterConvert<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TTimestamp64>>(registry);

RegisterConvert<NUdf::TDataType<i8>, NUdf::TDataType<NUdf::TInterval64>>(registry);
RegisterConvert<NUdf::TDataType<ui8>, NUdf::TDataType<NUdf::TInterval64>>(registry);
RegisterConvert<NUdf::TDataType<i16>, NUdf::TDataType<NUdf::TInterval64>>(registry);
RegisterConvert<NUdf::TDataType<ui16>, NUdf::TDataType<NUdf::TInterval64>>(registry);
RegisterConvert<NUdf::TDataType<i32>, NUdf::TDataType<NUdf::TInterval64>>(registry);
RegisterConvert<NUdf::TDataType<ui32>, NUdf::TDataType<NUdf::TInterval64>>(registry);
}

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

RegisterFromDateConvert<NUdf::TDataType<NUdf::TDate>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDate32>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDatetime>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTimestamp>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TInterval>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTzDate>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTzDatetime>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTzTimestamp>>(registry);

RegisterFromDateConvert<NUdf::TDataType<NUdf::TDate32>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TDatetime64>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TTimestamp64>>(registry);
RegisterFromDateConvert<NUdf::TDataType<NUdf::TInterval64>>(registry);

RegisterTzDateimeConvert(registry);
RegisterDatetimeRescale(registry);
RegisterToDateConvert(registry);
Expand Down
Loading

0 comments on commit ab48940

Please sign in to comment.