aboutsummaryrefslogtreecommitdiffstats
path: root/yt
diff options
context:
space:
mode:
authorudovichenko-r <udovichenko-r@yandex-team.com>2025-02-11 21:02:56 +0300
committerudovichenko-r <udovichenko-r@yandex-team.com>2025-02-11 21:28:35 +0300
commitcfdb74513d44f14e37c64b3202896a5768175900 (patch)
treeba5e5238f923ce0f3afde786e203899475050099 /yt
parent68f130528d23665ea395f02063b572479fec7765 (diff)
downloadydb-cfdb74513d44f14e37c64b3202896a5768175900.tar.gz
Remove column_group settings after graph rewrites
commit_hash:c7d005211f2f70b8e4bac2135ab5118312ec8b27
Diffstat (limited to 'yt')
-rw-r--r--yt/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp32
-rw-r--r--yt/yql/tests/sql/suites/column_group/input2.txt4
-rw-r--r--yt/yql/tests/sql/suites/column_group/respull.cfg2
-rw-r--r--yt/yql/tests/sql/suites/column_group/respull.sql14
4 files changed, 40 insertions, 12 deletions
diff --git a/yt/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp b/yt/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp
index 9f3fc40d6a..ac7a3cb79b 100644
--- a/yt/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp
+++ b/yt/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp
@@ -2721,14 +2721,24 @@ private:
auto newOutput = origOutput;
for (const auto& item: groupSpecs) {
const auto table = op.Output().Item(item.first);
- auto currentGroup = GetSetting(table.Settings().Ref(), EYtSettingType::ColumnGroups);
- if (!currentGroup || currentGroup->Tail().Content() != item.second) {
- auto newSettings = AddOrUpdateSettingValue(table.Settings().Ref(),
- EYtSettingType::ColumnGroups,
- ctx.NewAtom(table.Settings().Pos(), item.second, TNodeFlags::MultilineContent),
- ctx);
- auto newTable = ctx.ChangeChild(table.Ref(), TYtOutTable::idx_Settings, std::move(newSettings));
- newOutput = ctx.ChangeChild(*newOutput, item.first, std::move(newTable));
+ if (item.second.empty()) {
+ if (NYql::HasSetting(table.Settings().Ref(), EYtSettingType::ColumnGroups)) {
+ newOutput = ctx.ChangeChild(*newOutput, item.first,
+ ctx.ChangeChild(table.Ref(), TYtOutTable::idx_Settings,
+ NYql::RemoveSetting(table.Settings().Ref(), EYtSettingType::ColumnGroups, ctx)
+ )
+ );
+ }
+ } else {
+ auto currentGroup = NYql::GetSetting(table.Settings().Ref(), EYtSettingType::ColumnGroups);
+ if (!currentGroup || currentGroup->Tail().Content() != item.second) {
+ auto newSettings = NYql::AddOrUpdateSettingValue(table.Settings().Ref(),
+ EYtSettingType::ColumnGroups,
+ ctx.NewAtom(table.Settings().Pos(), item.second, TNodeFlags::MultilineContent),
+ ctx);
+ auto newTable = ctx.ChangeChild(table.Ref(), TYtOutTable::idx_Settings, std::move(newSettings));
+ newOutput = ctx.ChangeChild(*newOutput, item.first, std::move(newTable));
+ }
}
}
if (newOutput != origOutput) {
@@ -2925,14 +2935,12 @@ private:
auto writer = x.first;
TColumnUsage& usage = x.second;
if (usage.GenerateGroups) {
-
std::map<size_t, TString> groupSpecs;
for (size_t i = 0; i < usage.OutTypes.size(); ++i) {
+ groupSpecs[i] = TString{};
if (!usage.PublishUsage[i].empty()) {
if (usage.PublishUsage[i].size() == 1) {
- if (auto spec = *usage.PublishUsage[i].cbegin(); !spec.empty()) {
- groupSpecs[i] = spec;
- }
+ groupSpecs[i] = *usage.PublishUsage[i].cbegin();
}
continue;
}
diff --git a/yt/yql/tests/sql/suites/column_group/input2.txt b/yt/yql/tests/sql/suites/column_group/input2.txt
new file mode 100644
index 0000000000..65949ea745
--- /dev/null
+++ b/yt/yql/tests/sql/suites/column_group/input2.txt
@@ -0,0 +1,4 @@
+{"key"="075";"subkey"="1";"value"="abc"};
+{"key"="800";"subkey"="2";"value"="ddd"};
+{"key"="020";"subkey"="3";"value"="q"};
+{"key"="150";"subkey"="4";"value"="qzz"};
diff --git a/yt/yql/tests/sql/suites/column_group/respull.cfg b/yt/yql/tests/sql/suites/column_group/respull.cfg
new file mode 100644
index 0000000000..c3fd8a0bcd
--- /dev/null
+++ b/yt/yql/tests/sql/suites/column_group/respull.cfg
@@ -0,0 +1,2 @@
+in Input input2.txt
+providers yt
diff --git a/yt/yql/tests/sql/suites/column_group/respull.sql b/yt/yql/tests/sql/suites/column_group/respull.sql
new file mode 100644
index 0000000000..7d3eef6808
--- /dev/null
+++ b/yt/yql/tests/sql/suites/column_group/respull.sql
@@ -0,0 +1,14 @@
+-- YQL-19570
+-- Expected no column_group in YtMap outputs
+USE plato;
+
+pragma yt.ColumnGroupMode="perusage";
+pragma yt.OptimizeFor="lookup";
+
+SELECT
+ key as key,
+ "" as subkey,
+ "value:" || value as value
+FROM Input
+WHERE key < "050"
+LIMIT 1;