From 64d130d1514e8c12e827c5b2ed726dc88ac90ca8 Mon Sep 17 00:00:00 2001 From: s-berdnikov Date: Wed, 18 Feb 2026 18:39:56 +0300 Subject: YT-21148 Serialize deleted columns according to new design * Changelog entry Type: fix Component: master Deleted columns are now stored in table schema attributes instead of being represented as regular columns with `deleted` field. commit_hash:bbcf72019585ce99df10ce93efe3995111f50f58 --- yt/cpp/mapreduce/interface/serialize.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'yt/cpp/mapreduce/interface/serialize.cpp') diff --git a/yt/cpp/mapreduce/interface/serialize.cpp b/yt/cpp/mapreduce/interface/serialize.cpp index 44e168704d7..955ea116b53 100644 --- a/yt/cpp/mapreduce/interface/serialize.cpp +++ b/yt/cpp/mapreduce/interface/serialize.cpp @@ -270,9 +270,6 @@ void Serialize(const TColumnSchema& columnSchema, NYson::IYsonConsumer* consumer .DoIf(columnSchema.StableName().Defined(), [&] (TFluentMap fluent) { fluent.Item("stable_name").Value(*columnSchema.StableName()); }) - .DoIf(columnSchema.Deleted().Defined(), [&] (TFluentMap fluent) { - fluent.Item("deleted").Value(*columnSchema.Deleted()); - }) .EndMap(); } @@ -287,7 +284,6 @@ void Deserialize(TColumnSchema& columnSchema, const TNode& node) DESERIALIZE_ITEM("aggregate", columnSchema.Aggregate_); DESERIALIZE_ITEM("group", columnSchema.Group_); DESERIALIZE_ITEM("stable_name", columnSchema.StableName_); - DESERIALIZE_ITEM("deleted", columnSchema.Deleted_); if (nodeMap.contains("type_v3")) { NTi::TTypePtr type; @@ -302,11 +298,29 @@ void Deserialize(TColumnSchema& columnSchema, const TNode& node) } } +void Serialize(const TDeletedColumnSchema& columnSchema, NYson::IYsonConsumer* consumer) +{ + BuildYsonFluently(consumer).BeginMap() + .Item("stable_name").Value(*columnSchema.StableName()) + .EndMap(); +} + +void Deserialize(TDeletedColumnSchema& columnSchema, const TNode& node) +{ + const auto& nodeMap = node.AsMap(); + DESERIALIZE_ITEM("stable_name", columnSchema.StableName_); +} + void Serialize(const TTableSchema& tableSchema, NYson::IYsonConsumer* consumer) { + const auto& deletedColumns = tableSchema.DeletedColumns(); + BuildYsonFluently(consumer).BeginAttributes() .Item("strict").Value(tableSchema.Strict()) .Item("unique_keys").Value(tableSchema.UniqueKeys()) + .DoIf(!deletedColumns.empty(), [&] (auto fluent) { + fluent.Item("deleted_columns").List(deletedColumns); + }) .EndAttributes() .List(tableSchema.Columns()); } @@ -316,6 +330,7 @@ void Deserialize(TTableSchema& tableSchema, const TNode& node) const auto& attributesMap = node.GetAttributes().AsMap(); DESERIALIZE_ATTR("strict", tableSchema.Strict_); DESERIALIZE_ATTR("unique_keys", tableSchema.UniqueKeys_); + DESERIALIZE_ATTR("deleted_columns", tableSchema.DeletedColumns_); Deserialize(tableSchema.Columns_, node); } -- cgit v1.3