From a7178b28c416d237f6e2bdc94fa927195f46709a Mon Sep 17 00:00:00 2001 From: Roman Udovichenko Date: Sun, 10 Nov 2024 12:25:52 +0300 Subject: [PATCH] [yt provider] Fix column group calculation for YtCopy (#11435) --- .../yt/provider/yql_yt_physical_finalizing.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/ydb/library/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp b/ydb/library/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp index bea43c55c098..f875214d8f42 100644 --- a/ydb/library/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp +++ b/ydb/library/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp @@ -2882,11 +2882,18 @@ class TYtPhysicalFinalizingTransformer : public TSyncTransformerBase { for (size_t outIndex = 0; outIndex < usage.UsedByMerges.size(); ++outIndex) { for (auto merge: usage.UsedByMerges[outIndex]) { const TColumnUsage& mergeUsage = colUsages.at(merge); - usage.FullUsage[outIndex] = usage.FullUsage[outIndex] || mergeUsage.FullUsage.at(0); - usage.PublishUsage[outIndex].insert(mergeUsage.PublishUsage.at(0).cbegin(), mergeUsage.PublishUsage.at(0).cend()); - auto& cu = usage.ColumnUsage[outIndex]; - for (const auto& p: mergeUsage.ColumnUsage.at(0)) { - cu[p.first].insert(p.second.cbegin(), p.second.cend()); + if (TYtCopy::Match(merge)) { + usage.FullUsage[outIndex] = mergeUsage.FullUsage.at(0); + usage.PublishUsage[outIndex] = mergeUsage.PublishUsage.at(0); + usage.ColumnUsage[outIndex] = mergeUsage.ColumnUsage.at(0); + break; // Don't process others. YtCopy enforces exact the same column groups + } else { + usage.FullUsage[outIndex] = usage.FullUsage[outIndex] || mergeUsage.FullUsage.at(0); + usage.PublishUsage[outIndex].insert(mergeUsage.PublishUsage.at(0).cbegin(), mergeUsage.PublishUsage.at(0).cend()); + auto& cu = usage.ColumnUsage[outIndex]; + for (const auto& p: mergeUsage.ColumnUsage.at(0)) { + cu[p.first].insert(p.second.cbegin(), p.second.cend()); + } } } }