diff options
author | amikish <111790456+amikish@users.noreply.github.com> | 2024-02-12 13:58:59 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-12 13:58:59 +0300 |
commit | d4d07df13a73e1131d48063f58ac4c134dc7b5a2 (patch) | |
tree | b8a9070c633c274a53a55600b9dabfc0d3ab4ec7 | |
parent | a089cfdbba7c21f3660db3eb3a6b92532ddbe2d6 (diff) | |
download | ydb-d4d07df13a73e1131d48063f58ac4c134dc7b5a2.tar.gz |
YQL-17502 Bigdate from/to string conversions (#1447)
26 files changed, 709 insertions, 357 deletions
diff --git a/ydb/library/yql/core/sql_types/simple_types.cpp b/ydb/library/yql/core/sql_types/simple_types.cpp index 3901bf937d5..1e4612afd93 100644 --- a/ydb/library/yql/core/sql_types/simple_types.cpp +++ b/ydb/library/yql/core/sql_types/simple_types.cpp @@ -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 diff --git a/ydb/library/yql/core/yql_expr_type_annotation.cpp b/ydb/library/yql/core/yql_expr_type_annotation.cpp index 4c642b009f8..c18059f8ec0 100644 --- a/ydb/library/yql/core/yql_expr_type_annotation.cpp +++ b/ydb/library/yql/core/yql_expr_type_annotation.cpp @@ -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; } diff --git a/ydb/library/yql/core/yql_opt_utils.cpp b/ydb/library/yql/core/yql_opt_utils.cpp index a1599989dee..90cd077c913 100644 --- a/ydb/library/yql/core/yql_opt_utils.cpp +++ b/ydb/library/yql/core/yql_opt_utils.cpp @@ -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; diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_pack.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_pack.cpp index 94392036461..12bf9e3c80d 100644 --- a/ydb/library/yql/minikql/computation/mkql_computation_node_pack.cpp +++ b/ydb/library/yql/minikql/computation/mkql_computation_node_pack.cpp @@ -319,6 +319,9 @@ NUdf::TUnboxedValue UnpackFromChunkedBuffer(const TType* type, TChunkedInputBuff case NUdf::EDataSlot::Timestamp: return NUdf::TUnboxedValuePod(UnpackData<Fast, ui64>(buf)); case NUdf::EDataSlot::Interval: + case NUdf::EDataSlot::Datetime64: + case NUdf::EDataSlot::Timestamp64: + case NUdf::EDataSlot::Interval64: return NUdf::TUnboxedValuePod(UnpackData<Fast, i64>(buf)); case NUdf::EDataSlot::TzDate: { auto ret = NUdf::TUnboxedValuePod(UnpackData<Fast, ui16>(buf)); @@ -640,6 +643,9 @@ void PackImpl(const TType* type, TBuf& buffer, const NUdf::TUnboxedValuePod& val PackData<Fast>(value.Get<ui64>(), buffer); break; case NUdf::EDataSlot::Interval: + case NUdf::EDataSlot::Datetime64: + case NUdf::EDataSlot::Timestamp64: + case NUdf::EDataSlot::Interval64: PackData<Fast>(value.Get<i64>(), buffer); break; case NUdf::EDataSlot::Uuid: { diff --git a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp index 0eca50589c4..c793f996136 100644 --- a/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp +++ b/ydb/library/yql/minikql/invoke_builtins/mkql_builtins_convert.cpp @@ -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) { @@ -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); @@ -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); @@ -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> @@ -1143,7 +1191,6 @@ 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); @@ -1151,6 +1198,11 @@ void RegisterConvert(IBuiltinFunctionRegistry& 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); diff --git a/ydb/library/yql/minikql/mkql_type_ops.cpp b/ydb/library/yql/minikql/mkql_type_ops.cpp index 6c2bc224803..801a9ff97cb 100644 --- a/ydb/library/yql/minikql/mkql_type_ops.cpp +++ b/ydb/library/yql/minikql/mkql_type_ops.cpp @@ -161,6 +161,7 @@ bool IsValidValue(NUdf::EDataSlot type, const NUdf::TUnboxedValuePod& value) { } bool IsLeapYear(i32 year) { + Y_ASSERT(year != 0); if (Y_UNLIKELY(year < 0)) { ++year; } @@ -229,6 +230,7 @@ bool WriteDate32(IOutputStream& out, i32 value) { } void SplitTime(ui32 value, ui32& hour, ui32& min, ui32& sec) { + Y_ASSERT(value < 86400); hour = value / 3600; value -= hour * 3600; min = value / 60; @@ -260,6 +262,26 @@ bool WriteDatetime(IOutputStream& out, ui32 value) { return true; } +bool WriteDatetime64(IOutputStream& out, i64 value) { + if (Y_UNLIKELY(NUdf::MIN_DATETIME64 > value || value > NUdf::MAX_DATETIME64)) { + return false; + } + + auto date = value / 86400; + value -= date * 86400; + if (value < 0) { + date -= 1; + value += 86400; + } + if (!WriteDate32(out, date)) { + return false; + } + + out << 'T'; + WriteTime(out, value); + return true; +} + void WriteUs(IOutputStream& out, ui32 value) { if (value) { out << '.'; @@ -285,10 +307,34 @@ bool WriteTimestamp(IOutputStream& out, ui64 value) { return true; } +bool WriteTimestamp64(IOutputStream& out, i64 value) { + if (Y_UNLIKELY(NUdf::MIN_TIMESTAMP64 > value || value > NUdf::MAX_TIMESTAMP64)) { + return false; + } + + auto date = value / 86400000000ll; + value -= date * 86400000000ll; + if (value < 0) { + date -= 1; + value += 86400000000ll; + } + if (!WriteDate32(out, date)) { + return false; + } + + out << 'T'; + const auto time = value / 1000000ull; + value -= time * 1000000ull; + WriteTime(out, time); + WriteUs(out, value); + return true; +} + +template <i64 UpperBound> bool WriteInterval(IOutputStream& out, i64 signedValue) { ui64 value = signedValue < 0 ? -signedValue : signedValue; - if (value >= NUdf::MAX_TIMESTAMP) { + if (value > UpperBound) { return false; } @@ -405,12 +451,6 @@ NUdf::TUnboxedValuePod ValueToString(NUdf::EDataSlot type, NUdf::TUnboxedValuePo } break; - case NUdf::EDataSlot::Date32: - if (!WriteDate32(out, value.Get<i32>())) { - return NUdf::TUnboxedValuePod(); - } - break; - case NUdf::EDataSlot::Datetime: if (!WriteDatetime(out, value.Get<ui32>())) { return NUdf::TUnboxedValuePod(); @@ -426,7 +466,7 @@ NUdf::TUnboxedValuePod ValueToString(NUdf::EDataSlot type, NUdf::TUnboxedValuePo break; case NUdf::EDataSlot::Interval: - if (!WriteInterval(out, value.Get<i64>())) { + if (!WriteInterval<NUdf::MAX_TIMESTAMP - 1>(out, value.Get<i64>())) { return NUdf::TUnboxedValuePod(); } break; @@ -464,6 +504,32 @@ NUdf::TUnboxedValuePod ValueToString(NUdf::EDataSlot type, NUdf::TUnboxedValuePo break; } + case NUdf::EDataSlot::Date32: + if (!WriteDate32(out, value.Get<i32>())) { + return NUdf::TUnboxedValuePod(); + } + break; + + case NUdf::EDataSlot::Datetime64: + if (!WriteDatetime64(out, value.Get<i64>())) { + return NUdf::TUnboxedValuePod(); + } + out << 'Z'; + break; + + case NUdf::EDataSlot::Timestamp64: + if (!WriteTimestamp64(out, value.Get<i64>())) { + return NUdf::TUnboxedValuePod(); + } + out << 'Z'; + break; + + case NUdf::EDataSlot::Interval64: + if (!WriteInterval<NUdf::MAX_INTERVAL64>(out, value.Get<i64>())) { + return NUdf::TUnboxedValuePod(); + } + break; + case NUdf::EDataSlot::DyNumber: { out << NDyNumber::DyNumberToString(value.AsStringRef()); break; @@ -769,13 +835,15 @@ public: year += 1; } year -= NUdf::MIN_YEAR; + i32 val; if (Y_LIKELY(year%SOLAR_CYCLE_YEARS >= 0)) { - value = (year / SOLAR_CYCLE_YEARS) * SOLAR_CYCLE_DAYS + Years_[year % SOLAR_CYCLE_YEARS]; + val = (year / SOLAR_CYCLE_YEARS) * SOLAR_CYCLE_DAYS + Years_[year % SOLAR_CYCLE_YEARS]; } else { - value = (year / SOLAR_CYCLE_YEARS - 1) * SOLAR_CYCLE_DAYS + Years_[SOLAR_CYCLE_YEARS + year % SOLAR_CYCLE_YEARS]; + val = (year / SOLAR_CYCLE_YEARS - 1) * SOLAR_CYCLE_DAYS + Years_[SOLAR_CYCLE_YEARS + year % SOLAR_CYCLE_YEARS]; } - value += isLeap ? LeapMonths_[month] : Months_[month]; - value += day - 1; + val += isLeap ? LeapMonths_[month] : Months_[month]; + val += day - 1; + value = val; return true; } @@ -1086,9 +1154,8 @@ NUdf::TUnboxedValuePod ParseDate(NUdf::TStringRef buf) { return NUdf::TUnboxedValuePod(value); } -NUdf::TUnboxedValuePod ParseDate32(NUdf::TStringRef buf) { +bool ParseDate32(ui32& pos, NUdf::TStringRef buf, i32& value) { ui32 year, month, day; - ui32 pos = 0; bool beforeChrist = false; if (pos < buf.Size()) { char c = buf.Data()[pos]; @@ -1101,27 +1168,35 @@ NUdf::TUnboxedValuePod ParseDate32(NUdf::TStringRef buf) { } if (!ParseNumber(pos, buf, year, 6) || pos == buf.Size() || buf.Data()[pos] != '-') { - return NUdf::TUnboxedValuePod(); + return false; } i32 iyear = beforeChrist ? -year : year; // skip '-' ++pos; if (!ParseNumber(pos, buf, month, 2) || pos == buf.Size() || buf.Data()[pos] != '-') { - return NUdf::TUnboxedValuePod(); + return false; } // skip '-' ++pos; - if (!ParseNumber(pos, buf, day, 2) || pos != buf.Size()) { - return NUdf::TUnboxedValuePod(); + if (!ParseNumber(pos, buf, day, 2)) { + return false; } - i32 value; if (Y_LIKELY(MakeDate32(iyear, month, day, value))) { - return NUdf::TUnboxedValuePod(value); + return true; } + return false; +} + +NUdf::TUnboxedValuePod ParseDate32(NUdf::TStringRef buf) { + i32 value; + ui32 pos = 0; + if (Y_LIKELY(ParseDate32(pos, buf, value) && pos == buf.Size())) { + return NUdf::TUnboxedValuePod(value); + } return NUdf::TUnboxedValuePod(); } @@ -1163,6 +1238,106 @@ NUdf::TUnboxedValuePod ParseTzDate(NUdf::TStringRef str) { return out; } +bool ParseTime(ui32& pos, NUdf::TStringRef buf, ui32& timeValue) { + if (pos == buf.Size() || buf.Data()[pos] != 'T') { + return false; + } + ui32 hour, minute, second; + // skip 'T' + ++pos; + if (!ParseNumber(pos, buf, hour, 2) || pos == buf.Size() || buf.Data()[pos] != ':') { + return false; + } + + // skip ':' + ++pos; + if (!ParseNumber(pos, buf, minute, 2) || pos == buf.Size() || buf.Data()[pos] != ':') { + return false; + } + + // skip ':' + ++pos; + if (!ParseNumber(pos, buf, second, 2) || pos == buf.Size()) { + return false; + } + + if (!MakeTime(hour, minute, second, timeValue)) { + return false; + } + return true; +} + +bool ParseTimezoneOffset(ui32& pos, NUdf::TStringRef buf, i32& offset) { + bool waiting_for_z = true; + ui32 offset_hours = 0; + ui32 offset_minutes = 0; + bool is_offset_negative = false; + + if (buf.Data()[pos] == '+' || buf.Data()[pos] == '-') { + is_offset_negative = buf.Data()[pos] == '-'; + + // Skip sign + ++pos; + + if (!ParseNumber(pos, buf, offset_hours, 2) || + pos == buf.Size() || buf.Data()[pos] != ':') + { + return false; + } + + // Skip ':' + ++pos; + + if (!ParseNumber(pos, buf, offset_minutes, 2) || pos != buf.Size()) { + return false; + } + + waiting_for_z = false; + } + + if (waiting_for_z) { + if (pos == buf.Size() || buf.Data()[pos] != 'Z') { + return false; + } + + // skip 'Z' + ++pos; + } + + ui32 offset_value = ((offset_hours) * 60 + offset_minutes) * 60; + offset = is_offset_negative ? offset_value : -offset_value; + return true; +} + +NUdf::TUnboxedValuePod ParseDatetime64(NUdf::TStringRef buf) { + i32 date; + ui32 pos = 0; + if (Y_UNLIKELY(!ParseDate32(pos, buf, date))) { + return NUdf::TUnboxedValuePod(); + } + + ui32 time; + if (Y_UNLIKELY(!ParseTime(pos, buf, time))) { + return NUdf::TUnboxedValuePod(); + } + + i32 zoneOffset = 0; + if (Y_UNLIKELY(!ParseTimezoneOffset(pos, buf, zoneOffset))) { + return NUdf::TUnboxedValuePod(); + } + if (Y_UNLIKELY(pos != buf.Size())) { + return NUdf::TUnboxedValuePod(); + } + i64 value = 86400; + value *= date; + value += time; + value += zoneOffset; + if (Y_UNLIKELY(NUdf::MIN_DATETIME64 > value || value > NUdf::MAX_DATETIME64)) { + return NUdf::TUnboxedValuePod(); + } + return NUdf::TUnboxedValuePod(value); +} + NUdf::TUnboxedValuePod ParseDatetime(NUdf::TStringRef buf) { ui32 year, month, day; ui32 pos = 0; @@ -1330,6 +1505,66 @@ NUdf::TUnboxedValuePod ParseTzDatetime(NUdf::TStringRef str) { return out; } +bool ParseMicroseconds(ui32& pos, NUdf::TStringRef buf, ui32& microseconds) { + if (buf.Data()[pos] == '.') { + ui32 ms = 0; + // Skip dot + ++pos; + ui32 prevPos = pos; + if (!ParseNumber(pos, buf, ms, 6)) { + return false; + } + + prevPos = pos - prevPos; + + while (prevPos < 6) { + ms *= 10; + ++prevPos; + } + microseconds = ms; + + // Skip unused digits + while (pos < buf.Size() && '0' <= buf.Data()[pos] && buf.Data()[pos] <= '9') { + ++pos; + } + } + return true; +} + +NUdf::TUnboxedValuePod ParseTimestamp64(NUdf::TStringRef buf) { + i32 date; + ui32 pos = 0; + if (Y_UNLIKELY(!ParseDate32(pos, buf, date))) { + return NUdf::TUnboxedValuePod(); + } + + ui32 time; + if (Y_UNLIKELY(!ParseTime(pos, buf, time))) { + return NUdf::TUnboxedValuePod(); + } + + ui32 microseconds = 0; + if (Y_UNLIKELY(!ParseMicroseconds(pos, buf, microseconds))) { + return NUdf::TUnboxedValuePod(); + } + + i32 zoneOffset = 0; + if (Y_UNLIKELY(!ParseTimezoneOffset(pos, buf, zoneOffset))) { + return NUdf::TUnboxedValuePod(); + } + if (Y_UNLIKELY(pos != buf.Size())) { + return NUdf::TUnboxedValuePod(); + } + i64 value = 86400000000ull; + value *= date; + value += (i32(time) + zoneOffset)*1000000ull; + value += microseconds; + if (Y_UNLIKELY(NUdf::MIN_TIMESTAMP64 > value || value > NUdf::MAX_TIMESTAMP64)) { + return NUdf::TUnboxedValuePod(); + } + return NUdf::TUnboxedValuePod(value); +} + NUdf::TUnboxedValuePod ParseTimestamp(NUdf::TStringRef buf) { ui32 year, month, day; ui32 pos = 0; @@ -1553,7 +1788,7 @@ NUdf::TUnboxedValuePod ParseTzTimestamp(NUdf::TStringRef str) { return out; } -template <bool DecimalPart = false> +template <bool DecimalPart = false, i8 MaxDigits = 6> bool ParseNumber(std::string_view::const_iterator& pos, const std::string_view& buf, ui32& value) { value = 0U; @@ -1561,7 +1796,7 @@ bool ParseNumber(std::string_view::const_iterator& pos, const std::string_view& return false; } - auto digits = 6U; + auto digits = MaxDigits; do { value *= 10U; value += *pos - '0'; @@ -1577,6 +1812,7 @@ bool ParseNumber(std::string_view::const_iterator& pos, const std::string_view& return true; } +template <i64 UpperBound, ui32 MaxDays> NUdf::TUnboxedValuePod ParseInterval(const std::string_view& buf) { if (buf.empty()) { return NUdf::TUnboxedValuePod(); @@ -1596,7 +1832,7 @@ NUdf::TUnboxedValuePod ParseInterval(const std::string_view& buf) { ui32 num; if (*pos != 'T') { - if (!ParseNumber(pos, buf, num)) { + if (!ParseNumber<false, 9>(pos, buf, num)) { return NUdf::TUnboxedValuePod(); } @@ -1607,6 +1843,10 @@ NUdf::TUnboxedValuePod ParseInterval(const std::string_view& buf) { } } + if (days > MaxDays) { + return NUdf::TUnboxedValuePod(); + } + if (buf.cend() != pos) { if (*pos++ != 'T') { return NUdf::TUnboxedValuePod(); @@ -1659,7 +1899,7 @@ NUdf::TUnboxedValuePod ParseInterval(const std::string_view& buf) { + seconds.value_or(0U) * 1000000ull + microseconds.value_or(0U); - if (value >= NUdf::MAX_TIMESTAMP) { + if (value > UpperBound) { return NUdf::TUnboxedValuePod(); } @@ -1812,7 +2052,7 @@ NUdf::TUnboxedValuePod ValueFromString(NUdf::EDataSlot type, NUdf::TStringRef bu return ParseTimestamp(buf); case NUdf::EDataSlot::Interval: - return ParseInterval(buf); + return ParseInterval<NUdf::MAX_TIMESTAMP - 1, 2*NUdf::MAX_DATE>(buf); case NUdf::EDataSlot::TzDate: return ParseTzDate(buf); @@ -1845,16 +2085,13 @@ NUdf::TUnboxedValuePod ValueFromString(NUdf::EDataSlot type, NUdf::TStringRef bu return ParseDate32(buf); case NUdf::EDataSlot::Datetime64: - //TODO - return {}; + return ParseDatetime64(buf); case NUdf::EDataSlot::Timestamp64: - //TODO - return {}; + return ParseTimestamp64(buf); case NUdf::EDataSlot::Interval64: - //TODO - return {}; + return ParseInterval<NUdf::MAX_INTERVAL64, NUdf::MAX_DATE32 - NUdf::MIN_DATE32>(buf); case NUdf::EDataSlot::Decimal: default: diff --git a/ydb/library/yql/minikql/mkql_type_ops_ut.cpp b/ydb/library/yql/minikql/mkql_type_ops_ut.cpp index 168dd69af95..814f52ea26b 100644 --- a/ydb/library/yql/minikql/mkql_type_ops_ut.cpp +++ b/ydb/library/yql/minikql/mkql_type_ops_ut.cpp @@ -1,6 +1,7 @@ #include <ydb/library/yql/parser/pg_wrapper/pg_compat.h> #include "mkql_type_ops.h" +#include "mkql_alloc.h" #include <library/cpp/testing/unittest/registar.h> @@ -8,8 +9,8 @@ #include <util/stream/str.h> extern "C" { -#include <datatype/timestamp.h> -#include <utils/datetime.h> +#include <ydb/library/yql/parser/pg_wrapper/postgresql/src/include/datatype/timestamp.h> +#include <ydb/library/yql/parser/pg_wrapper/postgresql/src/include/utils/datetime.h> } using namespace NYql; @@ -25,7 +26,6 @@ Y_UNIT_TEST_SUITE(TMiniKQLTypeOps) { UNIT_ASSERT(IsLeapYear(-5)); UNIT_ASSERT(!IsLeapYear(-4)); UNIT_ASSERT(IsLeapYear(-1)); - UNIT_ASSERT(IsLeapYear(0)); UNIT_ASSERT(!IsLeapYear(1)); UNIT_ASSERT(IsLeapYear(4)); UNIT_ASSERT(!IsLeapYear(100)); @@ -41,13 +41,10 @@ Y_UNIT_TEST_SUITE(TMiniKQLTypeOps) { UNIT_ASSERT(strDate16.HasValue()); auto value32 = ValueFromString(NUdf::EDataSlot::Date32, strDate16.AsStringRef()); UNIT_ASSERT(value32.HasValue()); - UNIT_ASSERT_EQUAL(value16, value32.Get<i32>()); + UNIT_ASSERT_VALUES_EQUAL(value16, value32.Get<i32>()); const NUdf::TUnboxedValue& strDate32 = ValueToString(NUdf::EDataSlot::Date32, NUdf::TUnboxedValuePod(value32.Get<i32>())); UNIT_ASSERT(strDate32.HasValue()); - UNIT_ASSERT_EQUAL(strDate16.AsStringRef(), strDate32.AsStringRef()); - auto val32 = ValueFromString(NUdf::EDataSlot::Date32, strDate32.AsStringRef()); - UNIT_ASSERT(val32.HasValue()); - UNIT_ASSERT_EQUAL(value16, val32.Get<i32>()); + UNIT_ASSERT_VALUES_EQUAL(strDate16.AsStringRef(), strDate32.AsStringRef()); } } @@ -61,7 +58,7 @@ Y_UNIT_TEST_SUITE(TMiniKQLTypeOps) { if (year < 0) { year++; } - UNIT_ASSERT_EQUAL(value, date2j(year, month, day) - UNIX_EPOCH_JDATE); + UNIT_ASSERT_VALUES_EQUAL(value, date2j(year, month, day) - UNIX_EPOCH_JDATE); } } @@ -74,13 +71,58 @@ Y_UNIT_TEST_SUITE(TMiniKQLTypeOps) { year--; } UNIT_ASSERT(MakeDate32(year, static_cast<ui32>(month), static_cast<ui32>(day), date32)); - UNIT_ASSERT_EQUAL(date32, value - UNIX_EPOCH_JDATE); + UNIT_ASSERT_VALUES_EQUAL(date32, value - UNIX_EPOCH_JDATE); if (date32 == NUdf::MAX_DATE32) { break; } } } + Y_UNIT_TEST(Datetime32vs64) { + TScopedAlloc alloc(__LOCATION__); + alloc.DisableStrictAllocationCheck(); + for (ui32 v32 = 0; v32 <= 86400; ++v32) { + const auto str32 = ValueToString(NUdf::EDataSlot::Datetime, NUdf::TUnboxedValuePod(v32)); + UNIT_ASSERT(str32.HasValue()); + auto v64 = ValueFromString(NUdf::EDataSlot::Datetime64, str32.AsStringRef()); + UNIT_ASSERT(v64.HasValue()); + UNIT_ASSERT_VALUES_EQUAL(v32, v64.Get<i64>()); + const auto str64 = ValueToString(NUdf::EDataSlot::Datetime64, NUdf::TUnboxedValuePod(v64.Get<i64>())); + UNIT_ASSERT(str64.HasValue()); + UNIT_ASSERT_VALUES_EQUAL(str32.AsStringRef(), str64.AsStringRef()); + } + } + + Y_UNIT_TEST(TimestampOldVsNew) { + TScopedAlloc alloc(__LOCATION__); + alloc.DisableStrictAllocationCheck(); + for (ui64 val = 0; val <= 86400000000; val += 1000003) { + const auto str32 = ValueToString(NUdf::EDataSlot::Timestamp, NUdf::TUnboxedValuePod(val)); + UNIT_ASSERT(str32.HasValue()); + auto v64 = ValueFromString(NUdf::EDataSlot::Timestamp64, str32.AsStringRef()); + UNIT_ASSERT(v64.HasValue()); + UNIT_ASSERT_VALUES_EQUAL(val, v64.Get<i64>()); + const auto str64 = ValueToString(NUdf::EDataSlot::Timestamp64, NUdf::TUnboxedValuePod(v64.Get<i64>())); + UNIT_ASSERT(str64.HasValue()); + UNIT_ASSERT_VALUES_EQUAL(str32.AsStringRef(), str64.AsStringRef()); + } + } + + Y_UNIT_TEST(IntervalOldVsNew) { + TScopedAlloc alloc(__LOCATION__); + alloc.DisableStrictAllocationCheck(); + for (ui64 val = -86400000000; val <= 86400000000; val += 1000003) { + const auto str32 = ValueToString(NUdf::EDataSlot::Interval, NUdf::TUnboxedValuePod(val)); + UNIT_ASSERT(str32.HasValue()); + auto v64 = ValueFromString(NUdf::EDataSlot::Interval64, str32.AsStringRef()); + UNIT_ASSERT(v64.HasValue()); + UNIT_ASSERT_VALUES_EQUAL(val, v64.Get<i64>()); + const auto str64 = ValueToString(NUdf::EDataSlot::Interval64, NUdf::TUnboxedValuePod(v64.Get<i64>())); + UNIT_ASSERT(str64.HasValue()); + UNIT_ASSERT_VALUES_EQUAL(str32.AsStringRef(), str64.AsStringRef()); + } + } + Y_UNIT_TEST(DateInOut) { ui32 year = 1970; ui32 month = 1; @@ -178,7 +220,7 @@ Y_UNIT_TEST_SUITE(TMiniKQLTypeOps) { return ValueFromString(NUdf::EDataSlot::Timestamp, buf); } - Y_UNIT_TEST(TimestampSeriailization) { + Y_UNIT_TEST(TimestampSerialization) { UNIT_ASSERT(!ParseTimestamp("2020-07-28T21:46:05.55045#")); UNIT_ASSERT(!ParseTimestamp("2020-07-28T21:46:05.55045")); UNIT_ASSERT(!ParseTimestamp("2020-07-28T21:46:05.")); diff --git a/ydb/library/yql/public/udf/udf_data_type.cpp b/ydb/library/yql/public/udf/udf_data_type.cpp index 185830be869..2a85c2131ce 100644 --- a/ydb/library/yql/public/udf/udf_data_type.cpp +++ b/ydb/library/yql/public/udf/udf_data_type.cpp @@ -29,20 +29,20 @@ static const std::array<std::array<std::optional<TCastResultOptions>, DataSlotCo // Bool, Int8 ----integrals---- Uint64 Floats, Strings, YJsons, Uuid, DateTimes, Interval, TzDateTimes, Decimal, DyNumber, JsonDocument {{ OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, // Bool - {{ LD, OK, MF, OK, MF, OK, MF, OK, MF, OK, OK, OK, OK, NO, NO, NO, MF, MF, MF, OK, MF, MF, MF, UN, NO, NO, OK }}, // Int8 - {{ LD, MF, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, NO, NO, NO, OK, OK, OK, OK, OK, OK, OK, UN, NO, NO, OK }}, // Uint8 - {{ LD, MF, MF, OK, MF, OK, MF, OK, MF, OK, OK, OK, OK, NO, NO, NO, MF, MF, MF, OK, MF, MF, MF, UN, NO, NO, OK }}, // Int16 - {{ LD, MF, MF, MF, OK, OK, OK, OK, OK, OK, OK, OK, OK, NO, NO, NO, MF, OK, OK, OK, MF, OK, OK, UN, NO, NO, OK }}, // Uint16 - {{ LD, MF, MF, MF, MF, OK, MF, OK, MF, OK, LD, OK, OK, NO, NO, NO, MF, MF, MF, OK, MF, MF, MF, UN, NO, NO, MF }}, // Int32 - {{ LD, MF, MF, MF, MF, MF, OK, OK, OK, OK, LD, OK, OK, NO, NO, NO, MF, MF, OK, OK, MF, MF, OK, UN, NO, NO, MF }}, // Uint32 - {{ LD, MF, MF, MF, MF, MF, MF, OK, MF, LD, LD, OK, OK, NO, NO, NO, MF, MF, MF, MF, MF, MF, MF, UN, NO, NO, MF }}, // Int64 - {{ LD, MF, MF, MF, MF, MF, MF, MF, OK, LD, LD, OK, OK, NO, NO, NO, MF, MF, MF, MF, MF, MF, MF, UN, NO, NO, MF }}, // Uint64 + {{ LD, OK, MF, OK, MF, OK, MF, OK, MF, OK, OK, OK, OK, NO, NO, NO, MF, MF, MF, OK, MF, MF, MF, UN, NO, NO, OK, OK, OK, OK }}, // Int8 + {{ LD, MF, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, OK, NO, NO, NO, OK, OK, OK, OK, OK, OK, OK, UN, NO, NO, OK, OK, OK, OK }}, // Uint8 + {{ LD, MF, MF, OK, MF, OK, MF, OK, MF, OK, OK, OK, OK, NO, NO, NO, MF, MF, MF, OK, MF, MF, MF, UN, NO, NO, OK, OK, OK, OK }}, // Int16 + {{ LD, MF, MF, MF, OK, OK, OK, OK, OK, OK, OK, OK, OK, NO, NO, NO, MF, OK, OK, OK, MF, OK, OK, UN, NO, NO, OK, OK, OK, OK }}, // Uint16 + {{ LD, MF, MF, MF, MF, OK, MF, OK, MF, OK, LD, OK, OK, NO, NO, NO, MF, MF, MF, OK, MF, MF, MF, UN, NO, NO, MF, OK, OK, OK }}, // Int32 + {{ LD, MF, MF, MF, MF, MF, OK, OK, OK, OK, LD, OK, OK, NO, NO, NO, MF, MF, OK, OK, MF, MF, OK, UN, NO, NO, MF, OK, OK, OK }}, // Uint32 + {{ LD, MF, MF, MF, MF, MF, MF, OK, MF, LD, LD, OK, OK, NO, NO, NO, MF, MF, MF, MF, MF, MF, MF, UN, NO, NO, MF, MF, MF, MF }}, // Int64 + {{ LD, MF, MF, MF, MF, MF, MF, MF, OK, LD, LD, OK, OK, NO, NO, NO, MF, MF, MF, MF, MF, MF, MF, UN, NO, NO, MF, MF, MF, MF }}, // Uint64 {{ FL, FL, FL, FL, FL, FL, FL, FL, FL, OK, LD, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, // Double {{ FL, FL, FL, FL, FL, FL, FL, FL, FL, OK, OK, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, // Float - {{ MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, OK, MF, MF, MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, MF, MF }}, // String - {{ MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, OK, OK, MF, MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, MF, MF }}, // Utf8 + {{ MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, OK, MF, MF, MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, MF, MF, MF, MF, MF }}, // String + {{ MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, OK, OK, MF, MF, MF, MF, MF, MF, MF, MF, MF, MF, FL, FL, MF, MF, MF, MF, MF }}, // Utf8 {{ NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK, NO, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO }}, // Yson {{ NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK, OK, NO, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK }}, // Json @@ -65,7 +65,10 @@ static const std::array<std::array<std::optional<TCastResultOptions>, DataSlotCo {{ NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK, OK, NO, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK }}, // JsonDocument - {{ NO, MF, MF, MF, MF, OK, MF, OK, OK, LD, OK, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK }}, // Date32 + {{ NO, MF, MF, MF, MF, OK, MF, OK, OK, LD, OK, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK, OK, OK, NO }}, // Date32 + {{ NO, MF, MF, MF, MF, MF, MF, OK, MF, LD, LD, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, LD, OK, OK, NO }}, // Datetime64 + {{ NO, MF, MF, MF, MF, MF, MF, OK, MF, LD, LD, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, LD, LD, OK, NO }}, // Timestamp64 + {{ NO, MF, MF, MF, MF, MF, MF, OK, MF, LD, LD, OK, OK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, OK }}, // Interval64 }}; } diff --git a/ydb/library/yql/sql/v1/builtin.cpp b/ydb/library/yql/sql/v1/builtin.cpp index 4276cf8b8ed..21acf1fccdb 100644 --- a/ydb/library/yql/sql/v1/builtin.cpp +++ b/ydb/library/yql/sql/v1/builtin.cpp @@ -416,7 +416,12 @@ public: case NUdf::EDataSlot::TzTimestamp: value = ToString(out.Get<ui64>()); break; + case NUdf::EDataSlot::Datetime64: + case NUdf::EDataSlot::Timestamp64: + value = ToString(out.Get<i64>()); + break; case NUdf::EDataSlot::Interval: + case NUdf::EDataSlot::Interval64: value = ToString(out.Get<i64>()); if ('T' == atom->back()) { ctx.Error(Pos) << "Time prefix 'T' at end of interval constant. The designator 'T' shall be absent if all of the time components are absent."; @@ -1229,7 +1234,7 @@ TString NormalizeTypeString(const TString& str) { static const TSet<TString> AvailableDataTypes = {"Bool", "String", "Uint32", "Uint64", "Int32", "Int64", "Float", "Double", "Utf8", "Yson", "Json", "JsonDocument", "Date", "Datetime", "Timestamp", "Interval", "Uint8", "Int8", "Uint16", "Int16", "TzDate", "TzDatetime", "TzTimestamp", "Uuid", "Decimal", "DyNumber", - "Date32"}; + "Date32", "Datetime64", "Timestamp64", "Interval64", }; TNodePtr GetDataTypeStringNode(TContext& ctx, TCallNode& node, unsigned argNum, TString* outTypeStrPtr = nullptr) { auto errMsgFunc = [&node, argNum]() { static std::array<TString, 2> numToName = {{"first", "second"}}; diff --git a/ydb/library/yql/tests/sql/sql2yql/canondata/result.json b/ydb/library/yql/tests/sql/sql2yql/canondata/result.json index b95a431d449..a5c95f4ac3f 100644 --- a/ydb/library/yql/tests/sql/sql2yql/canondata/result.json +++ b/ydb/library/yql/tests/sql/sql2yql/canondata/result.json @@ -2654,58 +2654,58 @@ ], "test_sql2yql.test[bigdate-bitcast_date32]": [ { - "checksum": "5439ef15615eb00e8b35fa9872072246", - "size": 2382, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql2yql.test_bigdate-bitcast_date32_/sql.yql" + "checksum": "40fa86bec0225d342385bca9f1e28a26", + "size": 3468, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-bitcast_date32_/sql.yql" } ], "test_sql2yql.test[bigdate-compare_big_big]": [ { - "checksum": "cd3f40db7ee0f5ac319ae175be176836", - "size": 5304, - "uri": "https://{canondata_backend}/1936842/00a3d89e94649090e202464d6be9c603f08a8fd9/resource.tar.gz#test_sql2yql.test_bigdate-compare_big_big_/sql.yql" + "checksum": "b258e0353ca2f0644fa15f1f7862254f", + "size": 9041, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-compare_big_big_/sql.yql" } ], "test_sql2yql.test[bigdate-compare_big_small]": [ { - "checksum": "25aef244f99e4cd3724af085d209a9e0", - "size": 12264, - "uri": "https://{canondata_backend}/1936842/00a3d89e94649090e202464d6be9c603f08a8fd9/resource.tar.gz#test_sql2yql.test_bigdate-compare_big_small_/sql.yql" + "checksum": "9b29b282e4db0e5917cfde492f9d38e8", + "size": 21618, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-compare_big_small_/sql.yql" } ], "test_sql2yql.test[bigdate-compare_small_big]": [ { - "checksum": "c2370bc4fc8300e6d409df04fdbf9fa4", - "size": 12264, - "uri": "https://{canondata_backend}/1936842/00a3d89e94649090e202464d6be9c603f08a8fd9/resource.tar.gz#test_sql2yql.test_bigdate-compare_small_big_/sql.yql" + "checksum": "fb56da308f26532a5baa31e3a0b2f8b8", + "size": 21618, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-compare_small_big_/sql.yql" } ], "test_sql2yql.test[bigdate-const_date32]": [ { - "checksum": "ee057c09a2c27a96f66167599769ab25", - "size": 9642, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql2yql.test_bigdate-const_date32_/sql.yql" + "checksum": "6802ae37119fed97965c2a7f17c75f81", + "size": 11193, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-const_date32_/sql.yql" } ], "test_sql2yql.test[bigdate-input_date32]": [ { - "checksum": "ee49348e46f13e5f3a70bc4abfd53632", - "size": 15370, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql2yql.test_bigdate-input_date32_/sql.yql" + "checksum": "0b6c00f5356ec08678e058ef5c995405", + "size": 17701, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-input_date32_/sql.yql" } ], "test_sql2yql.test[bigdate-int_literals]": [ { - "checksum": "d934a39b488e1a3d24fbd410d663ccc1", - "size": 2933, - "uri": "https://{canondata_backend}/1946324/8bef2b737d91e7857292403ea9453c501cba1fec/resource.tar.gz#test_sql2yql.test_bigdate-int_literals_/sql.yql" + "checksum": "cf1a44d37f942e29705f26d871a4f57e", + "size": 4798, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-int_literals_/sql.yql" } ], "test_sql2yql.test[bigdate-output_date32]": [ { - "checksum": "d98ccd4b8b135bd4e1668daa13c73d3a", - "size": 3049, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql2yql.test_bigdate-output_date32_/sql.yql" + "checksum": "df7e72600cdb9157115eeb7f46a7694c", + "size": 4445, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql2yql.test_bigdate-output_date32_/sql.yql" } ], "test_sql2yql.test[binding-anon_table_binding]": [ @@ -20161,58 +20161,58 @@ ], "test_sql_format.test[bigdate-bitcast_date32]": [ { - "checksum": "f7c40499e0d71375bad74b7522df2171", - "size": 429, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql_format.test_bigdate-bitcast_date32_/formatted.sql" + "checksum": "c547a5b3cc24431ced0dba81baba08aa", + "size": 479, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-bitcast_date32_/formatted.sql" } ], "test_sql_format.test[bigdate-compare_big_big]": [ { - "checksum": "17c6e0635762b3a91eb9ecbe69890eb4", - "size": 1580, - "uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_bigdate-compare_big_big_/formatted.sql" + "checksum": "9e80ea7c508beef620e68325d7527844", + "size": 1765, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-compare_big_big_/formatted.sql" } ], "test_sql_format.test[bigdate-compare_big_small]": [ { - "checksum": "2303ba2d12931a0f5ab91077c934cd12", - "size": 4249, - "uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_bigdate-compare_big_small_/formatted.sql" + "checksum": "9facea94b561fbe5f2c164349173b6c4", + "size": 4723, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-compare_big_small_/formatted.sql" } ], "test_sql_format.test[bigdate-compare_small_big]": [ { - "checksum": "ab55e110218e29cf96ff144fa9ba9b35", - "size": 4249, - "uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_bigdate-compare_small_big_/formatted.sql" + "checksum": "ca4fdc457e42baa058e6e1c9d3e20525", + "size": 4723, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-compare_small_big_/formatted.sql" } ], "test_sql_format.test[bigdate-const_date32]": [ { - "checksum": "aa8a03e194f2068bbbec2f91873d8837", - "size": 751, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql_format.test_bigdate-const_date32_/formatted.sql" + "checksum": "11ec20d3f9102fee840afe764dc23ea8", + "size": 822, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-const_date32_/formatted.sql" } ], "test_sql_format.test[bigdate-input_date32]": [ { - "checksum": "87aefeeea14b89547cf33edd149876c0", - "size": 1400, - "uri": "https://{canondata_backend}/1946324/4573e00a34144acc906bfe280b319b93a4a0e6eb/resource.tar.gz#test_sql_format.test_bigdate-input_date32_/formatted.sql" + "checksum": "94eeb6ef70d2a30441c1d00a96597707", + "size": 1476, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-input_date32_/formatted.sql" } ], "test_sql_format.test[bigdate-int_literals]": [ { - "checksum": "0bfe8c368f9c4d093be89020879b9ae3", - "size": 556, - "uri": "https://{canondata_backend}/1880306/64654158d6bfb1289c66c626a8162239289559d0/resource.tar.gz#test_sql_format.test_bigdate-int_literals_/formatted.sql" + "checksum": "d628067a58fa95a38b4752a0352bea27", + "size": 645, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-int_literals_/formatted.sql" } ], "test_sql_format.test[bigdate-output_date32]": [ { - "checksum": "bc52d862664f66a4a9506ee95bb28437", - "size": 452, - "uri": "https://{canondata_backend}/1942100/8b39817b8614465bc64c3a062eb7dc55140dc163/resource.tar.gz#test_sql_format.test_bigdate-output_date32_/formatted.sql" + "checksum": "ed56d56864b71dd5b9309cb0ca8e9792", + "size": 516, + "uri": "https://{canondata_backend}/937458/c3af15142702eefc3615e5d898a940130b60e95e/resource.tar.gz#test_sql_format.test_bigdate-output_date32_/formatted.sql" } ], "test_sql_format.test[binding-anon_table_binding]": [ @@ -32782,9 +32782,9 @@ ], "test_sql_negative.test[weak_field-weak_field_list_type-default.txt]": [ { - "checksum": "af6041c3bc57bbfd3cdf7a976d723cbe", - "size": 461, - "uri": "https://{canondata_backend}/1871002/864ac674c01be9895e2e9ce7022765a6dfbeed08/resource.tar.gz#test_sql_negative.test_weak_field-weak_field_list_type-default.txt_/err_file.out" + "checksum": "6130b3da2d0753b09f44f0da00d041b5", + "size": 498, + "uri": "https://{canondata_backend}/1931696/93d9f24986a9421972c6f6815c259f08a25a26cc/resource.tar.gz#test_sql_negative.test_weak_field-weak_field_list_type-default.txt_/err_file.out" } ], "test_sql_negative.test[window-table_funcs_spec_win_func-default.txt]": [ diff --git a/ydb/library/yql/tests/sql/suites/bigdate/bitcast_date32.sql b/ydb/library/yql/tests/sql/suites/bigdate/bitcast_date32.sql index 6b2810c44ab..45870eac39f 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/bitcast_date32.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/bitcast_date32.sql @@ -1,10 +1,10 @@ pragma warning("disable","4510"); select bitcast(Yql::Date32(AsAtom("1")) as Uint8) -, bitcast(Yql::Date32(AsAtom("1")) as Int8) -, bitcast(Yql::Date32(AsAtom("1")) as Uint16) -, bitcast(Yql::Date32(AsAtom("1")) as Int16) -, bitcast(Yql::Date32(AsAtom("1")) as Uint32) -, bitcast(Yql::Date32(AsAtom("1")) as Int32) -, bitcast(Yql::Date32(AsAtom("1")) as Uint64) -, bitcast(Yql::Date32(AsAtom("1")) as Int64); +, 4, bitcast(Yql::Date32(AsAtom("1")) as Int8) +, 5, bitcast(Yql::Date32(AsAtom("1")) as Uint16) +, 6, bitcast(Yql::Date32(AsAtom("1")) as Int16) +, 7, bitcast(Yql::Date32(AsAtom("1")) as Uint32) +, 8, bitcast(Yql::Date32(AsAtom("1")) as Int32) +, 9, bitcast(Yql::Date32(AsAtom("1")) as Uint64) +, 10, bitcast(Yql::Date32(AsAtom("1")) as Int64); diff --git a/ydb/library/yql/tests/sql/suites/bigdate/compare_big_big.sql b/ydb/library/yql/tests/sql/suites/bigdate/compare_big_big.sql index 28829705750..d160bcb31a7 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/compare_big_big.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/compare_big_big.sql @@ -1,26 +1,26 @@ pragma warning("disable","4510"); select - Yql::Date32(AsAtom("0")) = Yql::Date32(AsAtom("1")), - Yql::Datetime64(AsAtom("0")) = Yql::Datetime64(AsAtom("1")), - Yql::Timestamp64(AsAtom("0")) = Yql::Timestamp64(AsAtom("1")), - Yql::Interval64(AsAtom("0")) = Yql::Interval64(AsAtom("1")), - Yql::Date32(AsAtom("0")) < Yql::Date32(AsAtom("1")), - Yql::Datetime64(AsAtom("0")) < Yql::Datetime64(AsAtom("1")), - Yql::Timestamp64(AsAtom("0")) < Yql::Timestamp64(AsAtom("1")), - Yql::Interval64(AsAtom("0")) < Yql::Interval64(AsAtom("1")), - Yql::Date32(AsAtom("0")) > Yql::Date32(AsAtom("1")), - Yql::Datetime64(AsAtom("0")) > Yql::Datetime64(AsAtom("1")), - Yql::Timestamp64(AsAtom("0")) > Yql::Timestamp64(AsAtom("1")), - Yql::Interval64(AsAtom("0")) > Yql::Interval64(AsAtom("1")), - Yql::Date32(AsAtom("0")) != Yql::Date32(AsAtom("1")), - Yql::Datetime64(AsAtom("0")) != Yql::Datetime64(AsAtom("1")), - Yql::Timestamp64(AsAtom("0")) != Yql::Timestamp64(AsAtom("1")), - Yql::Interval64(AsAtom("0")) != Yql::Interval64(AsAtom("1")), - Yql::Date32(AsAtom("0")) <= Yql::Date32(AsAtom("1")), - Yql::Datetime64(AsAtom("0")) <= Yql::Datetime64(AsAtom("1")), - Yql::Timestamp64(AsAtom("0")) <= Yql::Timestamp64(AsAtom("1")), - Yql::Interval64(AsAtom("0")) <= Yql::Interval64(AsAtom("1")), - Yql::Date32(AsAtom("0")) >= Yql::Date32(AsAtom("1")), - Yql::Datetime64(AsAtom("0")) >= Yql::Datetime64(AsAtom("1")), - Yql::Timestamp64(AsAtom("0")) >= Yql::Timestamp64(AsAtom("1")), - Yql::Interval64(AsAtom("0")) >= Yql::Interval64(AsAtom("1")),
\ No newline at end of file + 3, Yql::Date32(AsAtom("0")) = Yql::Date32(AsAtom("1")), + 4, Yql::Datetime64(AsAtom("0")) = Yql::Datetime64(AsAtom("1")), + 5, Yql::Timestamp64(AsAtom("0")) = Yql::Timestamp64(AsAtom("1")), + 6, Yql::Interval64(AsAtom("0")) = Yql::Interval64(AsAtom("1")), + 7, Yql::Date32(AsAtom("0")) < Yql::Date32(AsAtom("1")), + 8, Yql::Datetime64(AsAtom("0")) < Yql::Datetime64(AsAtom("1")), + 9, Yql::Timestamp64(AsAtom("0")) < Yql::Timestamp64(AsAtom("1")), + 10, Yql::Interval64(AsAtom("0")) < Yql::Interval64(AsAtom("1")), + 11, Yql::Date32(AsAtom("0")) > Yql::Date32(AsAtom("1")), + 12, Yql::Datetime64(AsAtom("0")) > Yql::Datetime64(AsAtom("1")), + 13, Yql::Timestamp64(AsAtom("0")) > Yql::Timestamp64(AsAtom("1")), + 14, Yql::Interval64(AsAtom("0")) > Yql::Interval64(AsAtom("1")), + 15, Yql::Date32(AsAtom("0")) != Yql::Date32(AsAtom("1")), + 16, Yql::Datetime64(AsAtom("0")) != Yql::Datetime64(AsAtom("1")), + 17, Yql::Timestamp64(AsAtom("0")) != Yql::Timestamp64(AsAtom("1")), + 18, Yql::Interval64(AsAtom("0")) != Yql::Interval64(AsAtom("1")), + 19, Yql::Date32(AsAtom("0")) <= Yql::Date32(AsAtom("1")), + 20, Yql::Datetime64(AsAtom("0")) <= Yql::Datetime64(AsAtom("1")), + 21, Yql::Timestamp64(AsAtom("0")) <= Yql::Timestamp64(AsAtom("1")), + 22, Yql::Interval64(AsAtom("0")) <= Yql::Interval64(AsAtom("1")), + 23, Yql::Date32(AsAtom("0")) >= Yql::Date32(AsAtom("1")), + 24, Yql::Datetime64(AsAtom("0")) >= Yql::Datetime64(AsAtom("1")), + 25, Yql::Timestamp64(AsAtom("0")) >= Yql::Timestamp64(AsAtom("1")), + 26, Yql::Interval64(AsAtom("0")) >= Yql::Interval64(AsAtom("1")), diff --git a/ydb/library/yql/tests/sql/suites/bigdate/compare_big_small.sql b/ydb/library/yql/tests/sql/suites/bigdate/compare_big_small.sql index c0a84101cbd..6f444bdec19 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/compare_big_small.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/compare_big_small.sql @@ -1,85 +1,85 @@ pragma warning("disable","4510"); select - Yql::Date32(AsAtom("1")) = Yql::Date(AsAtom("1")), - Yql::Datetime64(AsAtom("86400")) = Yql::Date(AsAtom("1")), - Yql::Timestamp64(AsAtom("86400000000")) = Yql::Date(AsAtom("1")), + 3, Yql::Date32(AsAtom("1")) = Yql::Date(AsAtom("1")), + 4, Yql::Datetime64(AsAtom("86400")) = Yql::Date(AsAtom("1")), + 5, Yql::Timestamp64(AsAtom("86400000000")) = Yql::Date(AsAtom("1")), - Yql::Date32(AsAtom("1")) = Yql::Datetime(AsAtom("86400")), - Yql::Datetime64(AsAtom("86400")) = Yql::Datetime(AsAtom("86400")), - Yql::Timestamp64(AsAtom("86400000000")) = Yql::Datetime(AsAtom("86400")), + 7, Yql::Date32(AsAtom("1")) = Yql::Datetime(AsAtom("86400")), + 8, Yql::Datetime64(AsAtom("86400")) = Yql::Datetime(AsAtom("86400")), + 9, Yql::Timestamp64(AsAtom("86400000000")) = Yql::Datetime(AsAtom("86400")), - Yql::Date32(AsAtom("1")) = Yql::Timestamp(AsAtom("86400000000")), - Yql::Datetime64(AsAtom("86400")) = Yql::Timestamp(AsAtom("86400000000")), - Yql::Timestamp64(AsAtom("86400000000")) = Yql::Timestamp(AsAtom("86400000000")), + 11, Yql::Date32(AsAtom("1")) = Yql::Timestamp(AsAtom("86400000000")), + 12, Yql::Datetime64(AsAtom("86400")) = Yql::Timestamp(AsAtom("86400000000")), + 13, Yql::Timestamp64(AsAtom("86400000000")) = Yql::Timestamp(AsAtom("86400000000")), - Yql::Interval64(AsAtom("1")) = Yql::Interval(AsAtom("1")), + 15, Yql::Interval64(AsAtom("1")) = Yql::Interval(AsAtom("1")), - Yql::Date32(AsAtom("1")) < Yql::Date(AsAtom("1")), - Yql::Datetime64(AsAtom("86400")) < Yql::Date(AsAtom("1")), - Yql::Timestamp64(AsAtom("86400000000")) < Yql::Date(AsAtom("1")), + 17, Yql::Date32(AsAtom("1")) < Yql::Date(AsAtom("1")), + 18, Yql::Datetime64(AsAtom("86400")) < Yql::Date(AsAtom("1")), + 19, Yql::Timestamp64(AsAtom("86400000000")) < Yql::Date(AsAtom("1")), - Yql::Date32(AsAtom("1")) < Yql::Datetime(AsAtom("86400")), - Yql::Datetime64(AsAtom("86400")) < Yql::Datetime(AsAtom("86400")), - Yql::Timestamp64(AsAtom("86400000000")) < Yql::Datetime(AsAtom("86400")), + 21, Yql::Date32(AsAtom("1")) < Yql::Datetime(AsAtom("86400")), + 22, Yql::Datetime64(AsAtom("86400")) < Yql::Datetime(AsAtom("86400")), + 23, Yql::Timestamp64(AsAtom("86400000000")) < Yql::Datetime(AsAtom("86400")), - Yql::Date32(AsAtom("1")) < Yql::Timestamp(AsAtom("86400000000")), - Yql::Datetime64(AsAtom("86400")) < Yql::Timestamp(AsAtom("86400000000")), - Yql::Timestamp64(AsAtom("86400000000")) < Yql::Timestamp(AsAtom("86400000000")), + 25, Yql::Date32(AsAtom("1")) < Yql::Timestamp(AsAtom("86400000000")), + 26, Yql::Datetime64(AsAtom("86400")) < Yql::Timestamp(AsAtom("86400000000")), + 27, Yql::Timestamp64(AsAtom("86400000000")) < Yql::Timestamp(AsAtom("86400000000")), - Yql::Interval64(AsAtom("1")) < Yql::Interval(AsAtom("1")), + 29, Yql::Interval64(AsAtom("1")) < Yql::Interval(AsAtom("1")), - Yql::Date32(AsAtom("1")) <= Yql::Date(AsAtom("1")), - Yql::Datetime64(AsAtom("86400")) <= Yql::Date(AsAtom("1")), - Yql::Timestamp64(AsAtom("86400000000")) <= Yql::Date(AsAtom("1")), + 31, Yql::Date32(AsAtom("1")) <= Yql::Date(AsAtom("1")), + 32, Yql::Datetime64(AsAtom("86400")) <= Yql::Date(AsAtom("1")), + 33, Yql::Timestamp64(AsAtom("86400000000")) <= Yql::Date(AsAtom("1")), - Yql::Date32(AsAtom("1")) <= Yql::Datetime(AsAtom("86400")), - Yql::Datetime64(AsAtom("86400")) <= Yql::Datetime(AsAtom("86400")), - Yql::Timestamp64(AsAtom("86400000000")) <= Yql::Datetime(AsAtom("86400")), + 35, Yql::Date32(AsAtom("1")) <= Yql::Datetime(AsAtom("86400")), + 36, Yql::Datetime64(AsAtom("86400")) <= Yql::Datetime(AsAtom("86400")), + 37, Yql::Timestamp64(AsAtom("86400000000")) <= Yql::Datetime(AsAtom("86400")), - Yql::Date32(AsAtom("1")) <= Yql::Timestamp(AsAtom("86400000000")), - Yql::Datetime64(AsAtom("86400")) <= Yql::Timestamp(AsAtom("86400000000")), - Yql::Timestamp64(AsAtom("86400000000")) <= Yql::Timestamp(AsAtom("86400000000")), + 39, Yql::Date32(AsAtom("1")) <= Yql::Timestamp(AsAtom("86400000000")), + 40, Yql::Datetime64(AsAtom("86400")) <= Yql::Timestamp(AsAtom("86400000000")), + 41, Yql::Timestamp64(AsAtom("86400000000")) <= Yql::Timestamp(AsAtom("86400000000")), - Yql::Interval64(AsAtom("1")) <= Yql::Interval(AsAtom("1")), + 43, Yql::Interval64(AsAtom("1")) <= Yql::Interval(AsAtom("1")), - Yql::Date32(AsAtom("1")) > Yql::Date(AsAtom("1")), - Yql::Datetime64(AsAtom("86400")) > Yql::Date(AsAtom("1")), - Yql::Timestamp64(AsAtom("86400000000")) > Yql::Date(AsAtom("1")), + 45, Yql::Date32(AsAtom("1")) > Yql::Date(AsAtom("1")), + 46, Yql::Datetime64(AsAtom("86400")) > Yql::Date(AsAtom("1")), + 47, Yql::Timestamp64(AsAtom("86400000000")) > Yql::Date(AsAtom("1")), - Yql::Date32(AsAtom("1")) > Yql::Datetime(AsAtom("86400")), - Yql::Datetime64(AsAtom("86400")) > Yql::Datetime(AsAtom("86400")), - Yql::Timestamp64(AsAtom("86400000000")) > Yql::Datetime(AsAtom("86400")), + 49, Yql::Date32(AsAtom("1")) > Yql::Datetime(AsAtom("86400")), + 50, Yql::Datetime64(AsAtom("86400")) > Yql::Datetime(AsAtom("86400")), + 51, Yql::Timestamp64(AsAtom("86400000000")) > Yql::Datetime(AsAtom("86400")), - Yql::Date32(AsAtom("1")) > Yql::Timestamp(AsAtom("86400000000")), - Yql::Datetime64(AsAtom("86400")) > Yql::Timestamp(AsAtom("86400000000")), - Yql::Timestamp64(AsAtom("86400000000")) > Yql::Timestamp(AsAtom("86400000000")), + 53, Yql::Date32(AsAtom("1")) > Yql::Timestamp(AsAtom("86400000000")), + 54, Yql::Datetime64(AsAtom("86400")) > Yql::Timestamp(AsAtom("86400000000")), + 55, Yql::Timestamp64(AsAtom("86400000000")) > Yql::Timestamp(AsAtom("86400000000")), - Yql::Interval64(AsAtom("1")) > Yql::Interval(AsAtom("1")), + 57, Yql::Interval64(AsAtom("1")) > Yql::Interval(AsAtom("1")), - Yql::Date32(AsAtom("1")) >= Yql::Date(AsAtom("1")), - Yql::Datetime64(AsAtom("86400")) >= Yql::Date(AsAtom("1")), - Yql::Timestamp64(AsAtom("86400000000")) >= Yql::Date(AsAtom("1")), + 59, Yql::Date32(AsAtom("1")) >= Yql::Date(AsAtom("1")), + 60, Yql::Datetime64(AsAtom("86400")) >= Yql::Date(AsAtom("1")), + 61, Yql::Timestamp64(AsAtom("86400000000")) >= Yql::Date(AsAtom("1")), - Yql::Date32(AsAtom("1")) >= Yql::Datetime(AsAtom("86400")), - Yql::Datetime64(AsAtom("86400")) >= Yql::Datetime(AsAtom("86400")), - Yql::Timestamp64(AsAtom("86400000000")) >= Yql::Datetime(AsAtom("86400")), + 63, Yql::Date32(AsAtom("1")) >= Yql::Datetime(AsAtom("86400")), + 64, Yql::Datetime64(AsAtom("86400")) >= Yql::Datetime(AsAtom("86400")), + 65, Yql::Timestamp64(AsAtom("86400000000")) >= Yql::Datetime(AsAtom("86400")), - Yql::Date32(AsAtom("1")) >= Yql::Timestamp(AsAtom("86400000000")), - Yql::Datetime64(AsAtom("86400")) >= Yql::Timestamp(AsAtom("86400000000")), - Yql::Timestamp64(AsAtom("86400000000")) >= Yql::Timestamp(AsAtom("86400000000")), + 67, Yql::Date32(AsAtom("1")) >= Yql::Timestamp(AsAtom("86400000000")), + 68, Yql::Datetime64(AsAtom("86400")) >= Yql::Timestamp(AsAtom("86400000000")), + 69, Yql::Timestamp64(AsAtom("86400000000")) >= Yql::Timestamp(AsAtom("86400000000")), - Yql::Interval64(AsAtom("1")) >= Yql::Interval(AsAtom("1")), + 71, Yql::Interval64(AsAtom("1")) >= Yql::Interval(AsAtom("1")), - Yql::Date32(AsAtom("1")) != Yql::Date(AsAtom("1")), - Yql::Datetime64(AsAtom("86400")) != Yql::Date(AsAtom("1")), - Yql::Timestamp64(AsAtom("86400000000")) != Yql::Date(AsAtom("1")), + 73, Yql::Date32(AsAtom("1")) != Yql::Date(AsAtom("1")), + 74, Yql::Datetime64(AsAtom("86400")) != Yql::Date(AsAtom("1")), + 75, Yql::Timestamp64(AsAtom("86400000000")) != Yql::Date(AsAtom("1")), - Yql::Date32(AsAtom("1")) != Yql::Datetime(AsAtom("86400")), - Yql::Datetime64(AsAtom("86400")) != Yql::Datetime(AsAtom("86400")), - Yql::Timestamp64(AsAtom("86400000000")) != Yql::Datetime(AsAtom("86400")), + 77, Yql::Date32(AsAtom("1")) != Yql::Datetime(AsAtom("86400")), + 78, Yql::Datetime64(AsAtom("86400")) != Yql::Datetime(AsAtom("86400")), + 79, Yql::Timestamp64(AsAtom("86400000000")) != Yql::Datetime(AsAtom("86400")), - Yql::Date32(AsAtom("1")) != Yql::Timestamp(AsAtom("86400000000")), - Yql::Datetime64(AsAtom("86400")) != Yql::Timestamp(AsAtom("86400000000")), - Yql::Timestamp64(AsAtom("86400000000")) != Yql::Timestamp(AsAtom("86400000000")), + 81, Yql::Date32(AsAtom("1")) != Yql::Timestamp(AsAtom("86400000000")), + 82, Yql::Datetime64(AsAtom("86400")) != Yql::Timestamp(AsAtom("86400000000")), + 83, Yql::Timestamp64(AsAtom("86400000000")) != Yql::Timestamp(AsAtom("86400000000")), - Yql::Interval64(AsAtom("1")) != Yql::Interval(AsAtom("1")); + 85, Yql::Interval64(AsAtom("1")) != Yql::Interval(AsAtom("1")); diff --git a/ydb/library/yql/tests/sql/suites/bigdate/compare_small_big.sql b/ydb/library/yql/tests/sql/suites/bigdate/compare_small_big.sql index f58ecb63f1f..3e4834aba2d 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/compare_small_big.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/compare_small_big.sql @@ -1,85 +1,85 @@ pragma warning("disable","4510"); select - Yql::Date(AsAtom("1")) = Yql::Date32(AsAtom("1")), - Yql::Date(AsAtom("1")) = Yql::Datetime64(AsAtom("86400")), - Yql::Date(AsAtom("1")) = Yql::Timestamp64(AsAtom("86400000000")), + 3, Yql::Date(AsAtom("1")) = Yql::Date32(AsAtom("1")), + 4, Yql::Date(AsAtom("1")) = Yql::Datetime64(AsAtom("86400")), + 5, Yql::Date(AsAtom("1")) = Yql::Timestamp64(AsAtom("86400000000")), - Yql::Datetime(AsAtom("86400")) = Yql::Date32(AsAtom("1")), - Yql::Datetime(AsAtom("86400")) = Yql::Datetime64(AsAtom("86400")), - Yql::Datetime(AsAtom("86400")) = Yql::Timestamp64(AsAtom("86400000000")), + 7, Yql::Datetime(AsAtom("86400")) = Yql::Date32(AsAtom("1")), + 8, Yql::Datetime(AsAtom("86400")) = Yql::Datetime64(AsAtom("86400")), + 9, Yql::Datetime(AsAtom("86400")) = Yql::Timestamp64(AsAtom("86400000000")), - Yql::Timestamp(AsAtom("86400000000")) = Yql::Date32(AsAtom("1")), - Yql::Timestamp(AsAtom("86400000000")) = Yql::Datetime64(AsAtom("86400")), - Yql::Timestamp(AsAtom("86400000000")) = Yql::Timestamp64(AsAtom("86400000000")), + 11, Yql::Timestamp(AsAtom("86400000000")) = Yql::Date32(AsAtom("1")), + 12, Yql::Timestamp(AsAtom("86400000000")) = Yql::Datetime64(AsAtom("86400")), + 13, Yql::Timestamp(AsAtom("86400000000")) = Yql::Timestamp64(AsAtom("86400000000")), - Yql::Interval(AsAtom("1")) = Yql::Interval64(AsAtom("1")), + 15, Yql::Interval(AsAtom("1")) = Yql::Interval64(AsAtom("1")), - Yql::Date(AsAtom("1")) < Yql::Date32(AsAtom("1")), - Yql::Date(AsAtom("1")) < Yql::Datetime64(AsAtom("86400")), - Yql::Date(AsAtom("1")) < Yql::Timestamp64(AsAtom("86400000000")), + 17, Yql::Date(AsAtom("1")) < Yql::Date32(AsAtom("1")), + 18, Yql::Date(AsAtom("1")) < Yql::Datetime64(AsAtom("86400")), + 19, Yql::Date(AsAtom("1")) < Yql::Timestamp64(AsAtom("86400000000")), - Yql::Datetime(AsAtom("86400")) < Yql::Date32(AsAtom("1")), - Yql::Datetime(AsAtom("86400")) < Yql::Datetime64(AsAtom("86400")), - Yql::Datetime(AsAtom("86400")) < Yql::Timestamp64(AsAtom("86400000000")), + 21, Yql::Datetime(AsAtom("86400")) < Yql::Date32(AsAtom("1")), + 22, Yql::Datetime(AsAtom("86400")) < Yql::Datetime64(AsAtom("86400")), + 23, Yql::Datetime(AsAtom("86400")) < Yql::Timestamp64(AsAtom("86400000000")), - Yql::Timestamp(AsAtom("86400000000")) < Yql::Date32(AsAtom("1")), - Yql::Timestamp(AsAtom("86400000000")) < Yql::Datetime64(AsAtom("86400")), - Yql::Timestamp(AsAtom("86400000000")) < Yql::Timestamp64(AsAtom("86400000000")), + 25, Yql::Timestamp(AsAtom("86400000000")) < Yql::Date32(AsAtom("1")), + 26, Yql::Timestamp(AsAtom("86400000000")) < Yql::Datetime64(AsAtom("86400")), + 27, Yql::Timestamp(AsAtom("86400000000")) < Yql::Timestamp64(AsAtom("86400000000")), - Yql::Interval(AsAtom("1")) < Yql::Interval64(AsAtom("1")), + 29, Yql::Interval(AsAtom("1")) < Yql::Interval64(AsAtom("1")), - Yql::Date(AsAtom("1")) <= Yql::Date32(AsAtom("1")), - Yql::Date(AsAtom("1")) <= Yql::Datetime64(AsAtom("86400")), - Yql::Date(AsAtom("1")) <= Yql::Timestamp64(AsAtom("86400000000")), + 31, Yql::Date(AsAtom("1")) <= Yql::Date32(AsAtom("1")), + 32, Yql::Date(AsAtom("1")) <= Yql::Datetime64(AsAtom("86400")), + 33, Yql::Date(AsAtom("1")) <= Yql::Timestamp64(AsAtom("86400000000")), - Yql::Datetime(AsAtom("86400")) <= Yql::Date32(AsAtom("1")), - Yql::Datetime(AsAtom("86400")) <= Yql::Datetime64(AsAtom("86400")), - Yql::Datetime(AsAtom("86400")) <= Yql::Timestamp64(AsAtom("86400000000")), + 35, Yql::Datetime(AsAtom("86400")) <= Yql::Date32(AsAtom("1")), + 36, Yql::Datetime(AsAtom("86400")) <= Yql::Datetime64(AsAtom("86400")), + 37, Yql::Datetime(AsAtom("86400")) <= Yql::Timestamp64(AsAtom("86400000000")), - Yql::Timestamp(AsAtom("86400000000")) <= Yql::Date32(AsAtom("1")), - Yql::Timestamp(AsAtom("86400000000")) <= Yql::Datetime64(AsAtom("86400")), - Yql::Timestamp(AsAtom("86400000000")) <= Yql::Timestamp64(AsAtom("86400000000")), + 39, Yql::Timestamp(AsAtom("86400000000")) <= Yql::Date32(AsAtom("1")), + 40, Yql::Timestamp(AsAtom("86400000000")) <= Yql::Datetime64(AsAtom("86400")), + 41, Yql::Timestamp(AsAtom("86400000000")) <= Yql::Timestamp64(AsAtom("86400000000")), - Yql::Interval(AsAtom("1")) <= Yql::Interval64(AsAtom("1")), + 43, Yql::Interval(AsAtom("1")) <= Yql::Interval64(AsAtom("1")), - Yql::Date(AsAtom("1")) > Yql::Date32(AsAtom("1")), - Yql::Date(AsAtom("1")) > Yql::Datetime64(AsAtom("86400")), - Yql::Date(AsAtom("1")) > Yql::Timestamp64(AsAtom("86400000000")), + 45, Yql::Date(AsAtom("1")) > Yql::Date32(AsAtom("1")), + 46, Yql::Date(AsAtom("1")) > Yql::Datetime64(AsAtom("86400")), + 47, Yql::Date(AsAtom("1")) > Yql::Timestamp64(AsAtom("86400000000")), - Yql::Datetime(AsAtom("86400")) > Yql::Date32(AsAtom("1")), - Yql::Datetime(AsAtom("86400")) > Yql::Datetime64(AsAtom("86400")), - Yql::Datetime(AsAtom("86400")) > Yql::Timestamp64(AsAtom("86400000000")), + 49, Yql::Datetime(AsAtom("86400")) > Yql::Date32(AsAtom("1")), + 50, Yql::Datetime(AsAtom("86400")) > Yql::Datetime64(AsAtom("86400")), + 51, Yql::Datetime(AsAtom("86400")) > Yql::Timestamp64(AsAtom("86400000000")), - Yql::Timestamp(AsAtom("86400000000")) > Yql::Date32(AsAtom("1")), - Yql::Timestamp(AsAtom("86400000000")) > Yql::Datetime64(AsAtom("86400")), - Yql::Timestamp(AsAtom("86400000000")) > Yql::Timestamp64(AsAtom("86400000000")), + 53, Yql::Timestamp(AsAtom("86400000000")) > Yql::Date32(AsAtom("1")), + 54, Yql::Timestamp(AsAtom("86400000000")) > Yql::Datetime64(AsAtom("86400")), + 55, Yql::Timestamp(AsAtom("86400000000")) > Yql::Timestamp64(AsAtom("86400000000")), - Yql::Interval(AsAtom("1")) > Yql::Interval64(AsAtom("1")), + 57, Yql::Interval(AsAtom("1")) > Yql::Interval64(AsAtom("1")), - Yql::Date(AsAtom("1")) >= Yql::Date32(AsAtom("1")), - Yql::Date(AsAtom("1")) >= Yql::Datetime64(AsAtom("86400")), - Yql::Date(AsAtom("1")) >= Yql::Timestamp64(AsAtom("86400000000")), + 59, Yql::Date(AsAtom("1")) >= Yql::Date32(AsAtom("1")), + 60, Yql::Date(AsAtom("1")) >= Yql::Datetime64(AsAtom("86400")), + 61, Yql::Date(AsAtom("1")) >= Yql::Timestamp64(AsAtom("86400000000")), - Yql::Datetime(AsAtom("86400")) >= Yql::Date32(AsAtom("1")), - Yql::Datetime(AsAtom("86400")) >= Yql::Datetime64(AsAtom("86400")), - Yql::Datetime(AsAtom("86400")) >= Yql::Timestamp64(AsAtom("86400000000")), + 63, Yql::Datetime(AsAtom("86400")) >= Yql::Date32(AsAtom("1")), + 64, Yql::Datetime(AsAtom("86400")) >= Yql::Datetime64(AsAtom("86400")), + 65, Yql::Datetime(AsAtom("86400")) >= Yql::Timestamp64(AsAtom("86400000000")), - Yql::Timestamp(AsAtom("86400000000")) >= Yql::Date32(AsAtom("1")), - Yql::Timestamp(AsAtom("86400000000")) >= Yql::Datetime64(AsAtom("86400")), - Yql::Timestamp(AsAtom("86400000000")) >= Yql::Timestamp64(AsAtom("86400000000")), + 67, Yql::Timestamp(AsAtom("86400000000")) >= Yql::Date32(AsAtom("1")), + 68, Yql::Timestamp(AsAtom("86400000000")) >= Yql::Datetime64(AsAtom("86400")), + 69, Yql::Timestamp(AsAtom("86400000000")) >= Yql::Timestamp64(AsAtom("86400000000")), - Yql::Interval(AsAtom("1")) >= Yql::Interval64(AsAtom("1")), + 71, Yql::Interval(AsAtom("1")) >= Yql::Interval64(AsAtom("1")), - Yql::Date(AsAtom("1")) != Yql::Date32(AsAtom("1")), - Yql::Date(AsAtom("1")) != Yql::Datetime64(AsAtom("86400")), - Yql::Date(AsAtom("1")) != Yql::Timestamp64(AsAtom("86400000000")), + 73, Yql::Date(AsAtom("1")) != Yql::Date32(AsAtom("1")), + 74, Yql::Date(AsAtom("1")) != Yql::Datetime64(AsAtom("86400")), + 75, Yql::Date(AsAtom("1")) != Yql::Timestamp64(AsAtom("86400000000")), - Yql::Datetime(AsAtom("86400")) != Yql::Date32(AsAtom("1")), - Yql::Datetime(AsAtom("86400")) != Yql::Datetime64(AsAtom("86400")), - Yql::Datetime(AsAtom("86400")) != Yql::Timestamp64(AsAtom("86400000000")), + 77, Yql::Datetime(AsAtom("86400")) != Yql::Date32(AsAtom("1")), + 78, Yql::Datetime(AsAtom("86400")) != Yql::Datetime64(AsAtom("86400")), + 79, Yql::Datetime(AsAtom("86400")) != Yql::Timestamp64(AsAtom("86400000000")), - Yql::Timestamp(AsAtom("86400000000")) != Yql::Date32(AsAtom("1")), - Yql::Timestamp(AsAtom("86400000000")) != Yql::Datetime64(AsAtom("86400")), - Yql::Timestamp(AsAtom("86400000000")) != Yql::Timestamp64(AsAtom("86400000000")), + 81, Yql::Timestamp(AsAtom("86400000000")) != Yql::Date32(AsAtom("1")), + 82, Yql::Timestamp(AsAtom("86400000000")) != Yql::Datetime64(AsAtom("86400")), + 83, Yql::Timestamp(AsAtom("86400000000")) != Yql::Timestamp64(AsAtom("86400000000")), - Yql::Interval(AsAtom("1")) != Yql::Interval64(AsAtom("1")); + 85, Yql::Interval(AsAtom("1")) != Yql::Interval64(AsAtom("1")); diff --git a/ydb/library/yql/tests/sql/suites/bigdate/const_date32.sql b/ydb/library/yql/tests/sql/suites/bigdate/const_date32.sql index 7f920d92d03..8e31b971811 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/const_date32.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/const_date32.sql @@ -1,10 +1,10 @@ -select date32("-144169-01-01"), cast(date32("-144169-01-01") as string); -select date32("-1-1-1"), cast(date32("-1-1-1") as string); -select date32("1-1-1"), cast(date32("1-1-1") as string); -select date32("1969-12-31"), cast(date32("1969-12-31") as string); -select date32("1970-01-01"), cast(date32("1970-01-01") as string); -select date32("2000-04-05"), cast(date32("2000-04-05") as string); -select date32("2100-03-01"), cast(date32("2100-03-01") as string); -select date32("2105-12-31"), cast(date32("2105-12-31") as string); -select date32("2106-01-01"), cast(date32("2106-01-01") as string); -select date32("148107-12-31"), cast(date32("148107-12-31") as string); +select 1, date32("-144169-01-01"), cast(date32("-144169-01-01") as string); +select 2, date32("-1-1-1"), cast(date32("-1-1-1") as string); +select 3, date32("1-1-1"), cast(date32("1-1-1") as string); +select 4, date32("1969-12-31"), cast(date32("1969-12-31") as string); +select 5, date32("1970-01-01"), cast(date32("1970-01-01") as string); +select 6, date32("2000-04-05"), cast(date32("2000-04-05") as string); +select 7, date32("2100-03-01"), cast(date32("2100-03-01") as string); +select 8, date32("2105-12-31"), cast(date32("2105-12-31") as string); +select 9, date32("2106-01-01"), cast(date32("2106-01-01") as string); +select 10, date32("148107-12-31"), cast(date32("148107-12-31") as string); diff --git a/ydb/library/yql/tests/sql/suites/bigdate/default.cfg b/ydb/library/yql/tests/sql/suites/bigdate/default.cfg index e69de29bb2d..bb349dd8abd 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/default.cfg +++ b/ydb/library/yql/tests/sql/suites/bigdate/default.cfg @@ -0,0 +1 @@ +providers yt diff --git a/ydb/library/yql/tests/sql/suites/bigdate/input_date32.sql b/ydb/library/yql/tests/sql/suites/bigdate/input_date32.sql index e18dc1bd018..44e7f22b243 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/input_date32.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/input_date32.sql @@ -1,16 +1,15 @@ -/* hybridfile can not YQL-17763 */ -select cast("-144170-12-31" as date32), cast(cast("-144170-12-31" as date32) as string); -select cast("-144169-01-01" as date32), cast(cast("-144169-01-01" as date32) as string); -select cast("-1-1-1" as date32), cast(cast("-1-1-1" as date32) as string); -select cast("0-1-1" as date32), cast(cast("0-1-1" as date32) as string); -select cast("1-1-1" as date32), cast(cast("1-1-1" as date32) as string); -select cast("1-02-29" as date32), cast(cast("1-02-29" as date32) as string); -select cast("1969-12-31" as date32), cast(cast("1969-12-31" as date32) as string); -select cast("1970-01-01" as date32), cast(cast("1970-01-01" as date32) as string); -select cast("2000-04-05" as date32), cast(cast("2000-04-05" as date32) as string); -select cast("2100-02-29" as date32), cast(cast("2100-02-29" as date32) as string); -select cast("2100-03-01" as date32), cast(cast("2100-03-01" as date32) as string); -select cast("2105-12-31" as date32), cast(cast("2105-12-31" as date32) as string); -select cast("2106-01-01" as date32), cast(cast("2106-01-01" as date32) as string); -select cast("148107-12-31" as date32), cast(cast("148107-12-31" as date32) as string); -select cast("148108-01-01" as date32), cast(cast("148108-01-01" as date32) as string); +select 1, cast("-144170-12-31" as date32), cast(cast("-144170-12-31" as date32) as string); +select 2, cast("-144169-01-01" as date32), cast(cast("-144169-01-01" as date32) as string); +select 3, cast("-1-1-1" as date32), cast(cast("-1-1-1" as date32) as string); +select 4, cast("0-1-1" as date32), cast(cast("0-1-1" as date32) as string); +select 5, cast("1-1-1" as date32), cast(cast("1-1-1" as date32) as string); +select 6, cast("1-02-29" as date32), cast(cast("1-02-29" as date32) as string); +select 7, cast("1969-12-31" as date32), cast(cast("1969-12-31" as date32) as string); +select 8, cast("1970-01-01" as date32), cast(cast("1970-01-01" as date32) as string); +select 9, cast("2000-04-05" as date32), cast(cast("2000-04-05" as date32) as string); +select 10, cast("2100-02-29" as date32), cast(cast("2100-02-29" as date32) as string); +select 11, cast("2100-03-01" as date32), cast(cast("2100-03-01" as date32) as string); +select 12, cast("2105-12-31" as date32), cast(cast("2105-12-31" as date32) as string); +select 13, cast("2106-01-01" as date32), cast(cast("2106-01-01" as date32) as string); +select 14, cast("148107-12-31" as date32), cast(cast("148107-12-31" as date32) as string); +select 15, cast("148108-01-01" as date32), cast(cast("148108-01-01" as date32) as string); diff --git a/ydb/library/yql/tests/sql/suites/bigdate/int_literals.sql b/ydb/library/yql/tests/sql/suites/bigdate/int_literals.sql index cd897479873..9b3c2edfc3c 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/int_literals.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/int_literals.sql @@ -1,14 +1,14 @@ pragma warning("disable","4510"); select - Yql::Date32(AsAtom("0")), - Yql::Datetime64(AsAtom("0")), - Yql::Timestamp64(AsAtom("0")), - Yql::Interval64(AsAtom("0")), - Yql::Date32(AsAtom("-53375809")), - Yql::Date32(AsAtom("53375807")), - Yql::Datetime64(AsAtom("-4611669897600")), - Yql::Datetime64(AsAtom("4611669811199")), - Yql::Timestamp64(AsAtom("-4611669897600000000")), - Yql::Timestamp64(AsAtom("4611669811199999999")), - Yql::Interval64(AsAtom("-9223339708799999999")), - Yql::Interval64(AsAtom("9223339708799999999")); + 3, Yql::Date32(AsAtom("0")), + 4, Yql::Datetime64(AsAtom("0")), + 5, Yql::Timestamp64(AsAtom("0")), + 6, Yql::Interval64(AsAtom("0")), + 7, Yql::Date32(AsAtom("-53375809")), + 8, Yql::Date32(AsAtom("53375807")), + 9, Yql::Datetime64(AsAtom("-4611669897600")), + 10, Yql::Datetime64(AsAtom("4611669811199")), + 11, Yql::Timestamp64(AsAtom("-4611669897600000000")), + 12, Yql::Timestamp64(AsAtom("4611669811199999999")), + 13, Yql::Interval64(AsAtom("-9223339708799999999")), + 14, Yql::Interval64(AsAtom("9223339708799999999")); diff --git a/ydb/library/yql/tests/sql/suites/bigdate/output_date32.sql b/ydb/library/yql/tests/sql/suites/bigdate/output_date32.sql index 702df14e6e7..2de16e8bb16 100644 --- a/ydb/library/yql/tests/sql/suites/bigdate/output_date32.sql +++ b/ydb/library/yql/tests/sql/suites/bigdate/output_date32.sql @@ -1,10 +1,10 @@ select cast(cast(-53375810 as date32) as string) -, cast(cast(-53375809 as date32) as string) -, cast(cast(-1 as date32) as string) -, cast(cast(0 as date32) as string) -, cast(cast(1 as date32) as string) -, cast(cast(18000u as date32) as string) -, cast(cast(49673u - 1u as date32) as string) -, cast(cast(49673u as date32) as string) -, cast(cast(53375807ul as date32) as string) -, cast(cast(53375808ul as date32) as string);
\ No newline at end of file +, 2, cast(cast(-53375809 as date32) as string) +, 3, cast(cast(-1 as date32) as string) +, 4, cast(cast(0 as date32) as string) +, 5, cast(cast(1 as date32) as string) +, 6, cast(cast(18000u as date32) as string) +, 7, cast(cast(49673u - 1u as date32) as string) +, 8, cast(cast(49673u as date32) as string) +, 9, cast(cast(53375807ul as date32) as string) +, 10, cast(cast(53375808ul as date32) as string); diff --git a/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json index 8e2215468e4..2dbff9266f1 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part1/canondata/result.json @@ -473,9 +473,9 @@ ], "test.test[bigdate-const_date32-default.txt-Debug]": [ { - "checksum": "dabd4d5e3a105f4417a3a557383a5820", - "size": 1674, - "uri": "https://{canondata_backend}/1817427/e1fdfee05105880c7ae55cc98212a4ded0458bae/resource.tar.gz#test.test_bigdate-const_date32-default.txt-Debug_/opt.yql" + "checksum": "6cfb2cbcc1a30e78061a24fcad2089e5", + "size": 1970, + "uri": "https://{canondata_backend}/937458/890192732530b07df949d3be30d1372892ccb44b/resource.tar.gz#test.test_bigdate-const_date32-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-const_date32-default.txt-Plan]": [ @@ -487,9 +487,9 @@ ], "test.test[bigdate-const_date32-default.txt-Results]": [ { - "checksum": "d1bf668ad8ae01c6b1ec52017293143e", - "size": 9716, - "uri": "https://{canondata_backend}/1817427/e1fdfee05105880c7ae55cc98212a4ded0458bae/resource.tar.gz#test.test_bigdate-const_date32-default.txt-Results_/results.txt" + "checksum": "a9a7f45c337ac4e0dd0df18509806b5a", + "size": 12647, + "uri": "https://{canondata_backend}/937458/890192732530b07df949d3be30d1372892ccb44b/resource.tar.gz#test.test_bigdate-const_date32-default.txt-Results_/results.txt" } ], "test.test[binding-bind_cast-default.txt-Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json index 42e253c0590..31de3914606 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part12/canondata/result.json @@ -284,9 +284,9 @@ ], "test.test[bigdate-bitcast_date32-default.txt-Debug]": [ { - "checksum": "3caa80bd32de5994e8881c96f493b129", - "size": 732, - "uri": "https://{canondata_backend}/1936947/69045d48565e9ccf7af4df75e0a5aa34ac5031d6/resource.tar.gz#test.test_bigdate-bitcast_date32-default.txt-Debug_/opt.yql" + "checksum": "6aed28c598993d0598116170a7d5bec5", + "size": 1009, + "uri": "https://{canondata_backend}/1937027/42b3d6dabf1d9a15bf7c94a34dc705e8f9211c96/resource.tar.gz#test.test_bigdate-bitcast_date32-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-bitcast_date32-default.txt-Plan]": [ @@ -298,9 +298,9 @@ ], "test.test[bigdate-bitcast_date32-default.txt-Results]": [ { - "checksum": "471a1b91231b29b03425beeebb0538f3", - "size": 2718, - "uri": "https://{canondata_backend}/1936947/69045d48565e9ccf7af4df75e0a5aa34ac5031d6/resource.tar.gz#test.test_bigdate-bitcast_date32-default.txt-Results_/results.txt" + "checksum": "243ef3c6fa78038f7ef6d8b33e8f22a4", + "size": 4775, + "uri": "https://{canondata_backend}/1937027/42b3d6dabf1d9a15bf7c94a34dc705e8f9211c96/resource.tar.gz#test.test_bigdate-bitcast_date32-default.txt-Results_/results.txt" } ], "test.test[blocks-add_int16--Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part13/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part13/canondata/result.json index 583bdf4e37b..6021d2b2a77 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part13/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part13/canondata/result.json @@ -334,9 +334,9 @@ ], "test.test[bigdate-compare_small_big-default.txt-Debug]": [ { - "checksum": "9027dc3ae0e3035df3d789d1067df794", - "size": 2742, - "uri": "https://{canondata_backend}/212715/e1bc1d6e31fa656365a738e65224a7c3f774bae6/resource.tar.gz#test.test_bigdate-compare_small_big-default.txt-Debug_/opt.yql" + "checksum": "ce406f51e5a6ab7e76df41ca7de3ea6a", + "size": 5236, + "uri": "https://{canondata_backend}/1784826/b64942934ae1a7d5ef0bd5c66f97a3833f524da8/resource.tar.gz#test.test_bigdate-compare_small_big-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-compare_small_big-default.txt-Plan]": [ @@ -348,9 +348,9 @@ ], "test.test[bigdate-compare_small_big-default.txt-Results]": [ { - "checksum": "3708cce27cea5d168a78404918edee0f", - "size": 18092, - "uri": "https://{canondata_backend}/212715/e1bc1d6e31fa656365a738e65224a7c3f774bae6/resource.tar.gz#test.test_bigdate-compare_small_big-default.txt-Results_/results.txt" + "checksum": "327b2920952394290249aba4ac8ffa41", + "size": 35806, + "uri": "https://{canondata_backend}/1784826/b64942934ae1a7d5ef0bd5c66f97a3833f524da8/resource.tar.gz#test.test_bigdate-compare_small_big-default.txt-Results_/results.txt" } ], "test.test[binding-table_regexp_binding--Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json index 0032dd1c263..def03760f2d 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part16/canondata/result.json @@ -351,9 +351,9 @@ ], "test.test[bigdate-compare_big_big-default.txt-Debug]": [ { - "checksum": "53e6f56ed287e40279bc4fc2226c3370", - "size": 1366, - "uri": "https://{canondata_backend}/1924537/d66bfe69aa802f6a81aadbac897621b721f31b4b/resource.tar.gz#test.test_bigdate-compare_big_big-default.txt-Debug_/opt.yql" + "checksum": "76c72a815735285cd2d3fa3229abe115", + "size": 2343, + "uri": "https://{canondata_backend}/1936842/d87303bf0d7858eeaaf35950ca75728bda3c2388/resource.tar.gz#test.test_bigdate-compare_big_big-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-compare_big_big-default.txt-Plan]": [ @@ -365,9 +365,9 @@ ], "test.test[bigdate-compare_big_big-default.txt-Results]": [ { - "checksum": "1f573e57510d52db5c1f8f7b2e106944", - "size": 7454, - "uri": "https://{canondata_backend}/1924537/d66bfe69aa802f6a81aadbac897621b721f31b4b/resource.tar.gz#test.test_bigdate-compare_big_big-default.txt-Results_/results.txt" + "checksum": "e537cc7edbb9a94c3b2a0fb13d4f2d4a", + "size": 14527, + "uri": "https://{canondata_backend}/1936842/d87303bf0d7858eeaaf35950ca75728bda3c2388/resource.tar.gz#test.test_bigdate-compare_big_big-default.txt-Results_/results.txt" } ], "test.test[blocks-combine_all_pg--Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json index 811dba6050f..43c5ea62fac 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part6/canondata/result.json @@ -340,9 +340,9 @@ ], "test.test[bigdate-input_date32-default.txt-Debug]": [ { - "checksum": "8e07467c0bdb81d7be3aad7624459808", - "size": 2778, - "uri": "https://{canondata_backend}/1775059/97f4df37c96c03d696d11405856b5a626322c84c/resource.tar.gz#test.test_bigdate-input_date32-default.txt-Debug_/opt.yql" + "checksum": "a4c35e7dd5514c254d9b6dbc16f153f7", + "size": 3215, + "uri": "https://{canondata_backend}/1937027/f0e3c90ccd553f2ac4bcaa86f06edc7fad895b99/resource.tar.gz#test.test_bigdate-input_date32-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-input_date32-default.txt-Plan]": [ @@ -354,16 +354,16 @@ ], "test.test[bigdate-input_date32-default.txt-Results]": [ { - "checksum": "d304bb86e6465aac7c9bbbd559492cdc", - "size": 19686, - "uri": "https://{canondata_backend}/1775059/97f4df37c96c03d696d11405856b5a626322c84c/resource.tar.gz#test.test_bigdate-input_date32-default.txt-Results_/results.txt" + "checksum": "12f71c23bf964c65c494fd3c07bd2447", + "size": 24087, + "uri": "https://{canondata_backend}/1937027/f0e3c90ccd553f2ac4bcaa86f06edc7fad895b99/resource.tar.gz#test.test_bigdate-input_date32-default.txt-Results_/results.txt" } ], "test.test[bigdate-output_date32-default.txt-Debug]": [ { - "checksum": "06be4d0a29468fa65dcf82024dcf4153", - "size": 990, - "uri": "https://{canondata_backend}/1775059/97f4df37c96c03d696d11405856b5a626322c84c/resource.tar.gz#test.test_bigdate-output_date32-default.txt-Debug_/opt.yql" + "checksum": "afeed4fe521307261e7cdcdedcc9090d", + "size": 1351, + "uri": "https://{canondata_backend}/1937027/f0e3c90ccd553f2ac4bcaa86f06edc7fad895b99/resource.tar.gz#test.test_bigdate-output_date32-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-output_date32-default.txt-Plan]": [ @@ -375,9 +375,9 @@ ], "test.test[bigdate-output_date32-default.txt-Results]": [ { - "checksum": "afc38b6fd6fc53390ae4fbaba4d61a66", - "size": 5193, - "uri": "https://{canondata_backend}/1775059/97f4df37c96c03d696d11405856b5a626322c84c/resource.tar.gz#test.test_bigdate-output_date32-default.txt-Results_/results.txt" + "checksum": "89ebd96d7fd6e35febe737480a896956", + "size": 7840, + "uri": "https://{canondata_backend}/1937027/f0e3c90ccd553f2ac4bcaa86f06edc7fad895b99/resource.tar.gz#test.test_bigdate-output_date32-default.txt-Results_/results.txt" } ], "test.test[binding-table_regexp_strict_binding--Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json index dd57ae3b036..4f58bad4b80 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json @@ -476,9 +476,9 @@ ], "test.test[bigdate-int_literals-default.txt-Debug]": [ { - "checksum": "36cf598536ae19369a2a2c1a86e06f94", - "size": 884, - "uri": "https://{canondata_backend}/1937429/1914925fa1d1066153ccfe3f1aa344e59bcf5ad5/resource.tar.gz#test.test_bigdate-int_literals-default.txt-Debug_/opt.yql" + "checksum": "ec63d4a11d89989598be01edcb9024f5", + "size": 1369, + "uri": "https://{canondata_backend}/1931696/563fcc5de719d96eea42745004ff2b0455138d5e/resource.tar.gz#test.test_bigdate-int_literals-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-int_literals-default.txt-Plan]": [ @@ -490,9 +490,9 @@ ], "test.test[bigdate-int_literals-default.txt-Results]": [ { - "checksum": "be4f0790238e02cd162cf0bb3b0d10be", - "size": 4055, - "uri": "https://{canondata_backend}/1937429/1914925fa1d1066153ccfe3f1aa344e59bcf5ad5/resource.tar.gz#test.test_bigdate-int_literals-default.txt-Results_/results.txt" + "checksum": "1c3b4abf9c4763447a429e79b67c20fa", + "size": 7588, + "uri": "https://{canondata_backend}/1931696/563fcc5de719d96eea42745004ff2b0455138d5e/resource.tar.gz#test.test_bigdate-int_literals-default.txt-Results_/results.txt" } ], "test.test[binding-insert_binding--Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json index 82beb721bad..175d50b6834 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part9/canondata/result.json @@ -337,9 +337,9 @@ ], "test.test[bigdate-compare_big_small-default.txt-Debug]": [ { - "checksum": "b2f9d7a9ee15249c25b2caf612a7f666", - "size": 2742, - "uri": "https://{canondata_backend}/1031349/a3d33de3e5d4ab8002d2eb0ccf81b6bb13aa6457/resource.tar.gz#test.test_bigdate-compare_big_small-default.txt-Debug_/opt.yql" + "checksum": "b38f2832b17445b92504b9b342d3011e", + "size": 5236, + "uri": "https://{canondata_backend}/1871002/01ab1553312aaa699d418cbfc0ca7f3dc6f9d523/resource.tar.gz#test.test_bigdate-compare_big_small-default.txt-Debug_/opt.yql" } ], "test.test[bigdate-compare_big_small-default.txt-Plan]": [ @@ -351,9 +351,9 @@ ], "test.test[bigdate-compare_big_small-default.txt-Results]": [ { - "checksum": "3708cce27cea5d168a78404918edee0f", - "size": 18092, - "uri": "https://{canondata_backend}/1031349/a3d33de3e5d4ab8002d2eb0ccf81b6bb13aa6457/resource.tar.gz#test.test_bigdate-compare_big_small-default.txt-Results_/results.txt" + "checksum": "327b2920952394290249aba4ac8ffa41", + "size": 35806, + "uri": "https://{canondata_backend}/1871002/01ab1553312aaa699d418cbfc0ca7f3dc6f9d523/resource.tar.gz#test.test_bigdate-compare_big_small-default.txt-Results_/results.txt" } ], "test.test[blocks-combine_all_count--Debug]": [ |