@@ -117,28 +117,51 @@ namespace NTypeAnnImpl {
117
117
bool isValid;
118
118
if (atomNode.Flags() & TNodeFlags::BinaryContent) {
119
119
// just deserialize
120
- switch (sizeof(T) ) {
121
- case sizeof(ui16) : {
120
+ switch (slot ) {
121
+ case NKikimr::NUdf::EDataSlot::Date : {
122
122
ui16 value;
123
123
ui16 tzId;
124
124
isValid = NKikimr::NMiniKQL::DeserializeTzDate(atomNode.Content(), value, tzId);
125
125
plainValue = SerializeTzComponents(isValid, value, tzId);
126
126
break;
127
127
}
128
- case sizeof(ui32) : {
128
+ case NKikimr::NUdf::EDataSlot::Datetime : {
129
129
ui32 value;
130
130
ui16 tzId;
131
131
isValid = NKikimr::NMiniKQL::DeserializeTzDatetime(atomNode.Content(), value, tzId);
132
132
plainValue = SerializeTzComponents(isValid, value, tzId);
133
133
break;
134
134
}
135
- case sizeof(ui64) : {
135
+ case NKikimr::NUdf::EDataSlot::Timestamp : {
136
136
ui64 value;
137
137
ui16 tzId;
138
138
isValid = NKikimr::NMiniKQL::DeserializeTzTimestamp(atomNode.Content(), value, tzId);
139
139
plainValue = SerializeTzComponents(isValid, value, tzId);
140
140
break;
141
141
}
142
+ case NKikimr::NUdf::EDataSlot::Date32: {
143
+ i32 value;
144
+ ui16 tzId;
145
+ isValid = NKikimr::NMiniKQL::DeserializeTzDate32(atomNode.Content(), value, tzId);
146
+ plainValue = SerializeTzComponents(isValid, value, tzId);
147
+ break;
148
+ }
149
+ case NKikimr::NUdf::EDataSlot::Datetime64: {
150
+ i64 value;
151
+ ui16 tzId;
152
+ isValid = NKikimr::NMiniKQL::DeserializeTzDatetime64(atomNode.Content(), value, tzId);
153
+ plainValue = SerializeTzComponents(isValid, value, tzId);
154
+ break;
155
+ }
156
+ case NKikimr::NUdf::EDataSlot::Timestamp64: {
157
+ i64 value;
158
+ ui16 tzId;
159
+ isValid = NKikimr::NMiniKQL::DeserializeTzTimestamp64(atomNode.Content(), value, tzId);
160
+ plainValue = SerializeTzComponents(isValid, value, tzId);
161
+ break;
162
+ }
163
+ default:
164
+ Y_ENSURE(false, "Unknown data slot:" << slot);
142
165
}
143
166
} else {
144
167
TStringBuf atom = atomNode.Content();
@@ -742,6 +765,18 @@ namespace NTypeAnnImpl {
742
765
if (!IsValidSmallData<i64>(input->Head(), input->Content(), ctx.Expr, NKikimr::NUdf::EDataSlot::Interval64, textValue)) {
743
766
return IGraphTransformer::TStatus::Error;
744
767
}
768
+ } else if (input->Content() == "TzDate32") {
769
+ if (!IsValidTzData<i32>(input->Head(), input->Content(), ctx.Expr, NKikimr::NUdf::EDataSlot::Date32, textValue)) {
770
+ return IGraphTransformer::TStatus::Error;
771
+ }
772
+ } else if (input->Content() == "TzDatetime64") {
773
+ if (!IsValidTzData<i64>(input->Head(), input->Content(), ctx.Expr, NKikimr::NUdf::EDataSlot::Datetime64, textValue)) {
774
+ return IGraphTransformer::TStatus::Error;
775
+ }
776
+ } else if (input->Content() == "TzTimestamp64") {
777
+ if (!IsValidTzData<i64>(input->Head(), input->Content(), ctx.Expr, NKikimr::NUdf::EDataSlot::Timestamp64, textValue)) {
778
+ return IGraphTransformer::TStatus::Error;
779
+ }
745
780
} else if (input->Content() == "Uuid") {
746
781
if (input->Head().Content().size() != 16) {
747
782
ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(input->Pos()), TStringBuilder() << "Bad atom format for type: "
0 commit comments