diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp index 42df38f9ed65..63e09d4a397a 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp @@ -161,8 +161,6 @@ TColumnDataPackInfo GetPackInfo(TType* type) { res.Bytes = sizeof(ui64); break; case NUdf::EDataSlot::Interval: res.Bytes = sizeof(i64); break; - case NUdf::EDataSlot::Uuid: - res.IsString = true; break; case NUdf::EDataSlot::TzDate: res.Bytes = 4; break; case NUdf::EDataSlot::TzDatetime: @@ -171,12 +169,20 @@ TColumnDataPackInfo GetPackInfo(TType* type) { res.Bytes = 10; break; case NUdf::EDataSlot::Decimal: res.Bytes = 16; break; + case NUdf::EDataSlot::Date32: + res.Bytes = 4; break; + case NUdf::EDataSlot::Datetime64: + res.Bytes = 8; break; + case NUdf::EDataSlot::Timestamp64: + res.Bytes = 8; break; + case NUdf::EDataSlot::Interval64: + res.Bytes = 8; break; + case NUdf::EDataSlot::Uuid: + case NUdf::EDataSlot::DyNumber: + case NUdf::EDataSlot::JsonDocument: case NUdf::EDataSlot::String: - res.IsString = true; break; case NUdf::EDataSlot::Utf8: - res.IsString = true; break; case NUdf::EDataSlot::Yson: - res.IsString = true; break; case NUdf::EDataSlot::Json: res.IsString = true; break; default: @@ -265,6 +271,15 @@ void TGraceJoinPacker::Pack() { WriteUnaligned(buffPtr, value.Get()); break; case NUdf::EDataSlot::Interval: WriteUnaligned(buffPtr, value.Get()); break; + case NUdf::EDataSlot::Date32: + WriteUnaligned(buffPtr, value.Get()); break; + case NUdf::EDataSlot::Datetime64: + WriteUnaligned(buffPtr, value.Get()); break; + case NUdf::EDataSlot::Timestamp64: + WriteUnaligned(buffPtr, value.Get()); break; + case NUdf::EDataSlot::Interval64: + WriteUnaligned(buffPtr, value.Get()); break; + case NUdf::EDataSlot::Uuid: { auto str = TuplePtrs[i]->AsStringRef(); @@ -377,6 +392,14 @@ void TGraceJoinPacker::UnPack() { value = NUdf::TUnboxedValuePod(ReadUnaligned(buffPtr)); break; case NUdf::EDataSlot::Interval: value = NUdf::TUnboxedValuePod(ReadUnaligned(buffPtr)); break; + case NUdf::EDataSlot::Date32: + value = NUdf::TUnboxedValuePod(ReadUnaligned(buffPtr)); break; + case NUdf::EDataSlot::Datetime64: + value = NUdf::TUnboxedValuePod(ReadUnaligned(buffPtr)); break; + case NUdf::EDataSlot::Timestamp64: + value = NUdf::TUnboxedValuePod(ReadUnaligned(buffPtr)); break; + case NUdf::EDataSlot::Interval64: + value = NUdf::TUnboxedValuePod(ReadUnaligned(buffPtr)); break; case NUdf::EDataSlot::Uuid: { value = MakeString(NUdf::TStringRef(TupleStrings[offset], TupleStrSizes[offset]));