aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <udovichenko-r@yandex-team.com>2025-02-27 20:24:49 +0300
committerudovichenko-r <udovichenko-r@yandex-team.com>2025-02-27 20:57:03 +0300
commitf41dd08e6f8e563d79293e77e5efc9724bff0dcd (patch)
tree7e95b7a3c54182bee8f3728d333a566c4890acf0
parent75d63f434cc0f0361068d1b880ec9a8d0e251317 (diff)
downloadydb-f41dd08e6f8e563d79293e77e5efc9724bff0dcd.tar.gz
Don't run MergeToCopy on merge with different column groups
commit_hash:52b08ac6595e1805418d372c147b2bdeb60042fe
-rw-r--r--yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_merge.cpp20
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp2
2 files changed, 20 insertions, 2 deletions
diff --git a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_merge.cpp b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_merge.cpp
index 1caead064f..3ca868b3a1 100644
--- a/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_merge.cpp
+++ b/yt/yql/providers/yt/provider/phy_opt/yql_yt_phy_opt_merge.cpp
@@ -446,11 +446,29 @@ TMaybeNode<TExprBase> TYtPhysicalOptProposalTransformer::MergeToCopy(TExprBase n
return node;
}
}
- TYtOutTableInfo outTableInfo(merge.Output().Item(0));
+
+ const auto outTable = merge.Output().Item(0);
+ TYtOutTableInfo outTableInfo(outTable);
if (!tableInfo->RowSpec->CompareSortness(*outTableInfo.RowSpec)) {
return node;
}
+ TStringBuf outColGroup;
+ if (auto setting = NYql::GetSetting(outTable.Settings().Ref(), EYtSettingType::ColumnGroups)) {
+ outColGroup = setting->Tail().Content();
+ }
+
+ YQL_ENSURE(path.Table().Maybe<TYtOutput>());
+ TStringBuf inputColGroup;
+ const auto out = path.Table().Cast<TYtOutput>();
+ if (auto setting = NYql::GetSetting(GetOutputOp(out).Output().Item(FromString<ui32>(out.OutIndex().Value())).Settings().Ref(), EYtSettingType::ColumnGroups)) {
+ inputColGroup = setting->Tail().Content();
+ }
+
+ if (outColGroup != inputColGroup) {
+ return node;
+ }
+
return Build<TYtCopy>(ctx, node.Pos())
.World(merge.World())
.DataSink(merge.DataSink())
diff --git a/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp b/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp
index 92265f2843..7acfeedcae 100644
--- a/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_datasink_type_ann.cpp
@@ -994,7 +994,7 @@ private:
if (outGroup != inputColGroupSpec) {
ctx.AddError(TIssue(ctx.GetPosition(copy.Output().Item(0).Settings().Pos()), TStringBuilder() << TYtCopy::CallableName()
- << "has input/output tables with different " << EYtSettingType::ColumnGroups << " values"));
+ << " has input/output tables with different " << EYtSettingType::ColumnGroups << " values"));
return TStatus::Error;
}