Skip to content

Commit 8cc0e51

Browse files
authored
[yt provider] Anonymous tables use single group by default (#5849)
1 parent d8d22ec commit 8cc0e51

File tree

18 files changed

+212
-1
lines changed

18 files changed

+212
-1
lines changed

ydb/library/yql/providers/yt/provider/yql_yt_datasink.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,15 @@ class TYtDataSink : public TDataProviderBase {
271271
ctx.NewAtom(res->Child(TYtWriteTable::idx_Settings)->Pos(), normalized, TNodeFlags::MultilineContent),
272272
ctx)
273273
);
274+
} else if (NYql::HasSetting(*res->Child(TYtWriteTable::idx_Table)->Child(TYtTable::idx_Settings), EYtSettingType::Anonymous)) {
275+
if (const auto mode = State_->Configuration->ColumnGroupMode.Get().GetOrElse(EColumnGroupMode::Disable); mode != EColumnGroupMode::Disable) {
276+
res = ctx.ChangeChild(*res, TYtWriteTable::idx_Settings,
277+
NYql::AddSetting(*res->Child(TYtWriteTable::idx_Settings),
278+
EYtSettingType::ColumnGroups,
279+
ctx.NewAtom(res->Child(TYtWriteTable::idx_Settings)->Pos(), NYql::GetSingleColumnGroupSpec(), TNodeFlags::MultilineContent),
280+
ctx)
281+
);
282+
}
274283
}
275284
auto mutationId = ++NextMutationId_;
276285
res = ctx.ChangeChild(*res, TYtWriteTable::idx_Settings,

ydb/library/yql/providers/yt/provider/yql_yt_op_settings.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,11 @@ TString NormalizeColumnGroupSpec(const TStringBuf spec) {
955955
}
956956
}
957957

958+
const TString& GetSingleColumnGroupSpec() {
959+
static TString GROUP = NYT::NodeToCanonicalYsonString(NYT::TNode::CreateMap()("default", NYT::TNode::CreateEntity()), NYson::EYsonFormat::Text);
960+
return GROUP;
961+
}
962+
958963
TExprNode::TPtr GetSetting(const TExprNode& settings, EYtSettingType type) {
959964
for (auto& setting : settings.Children()) {
960965
if (setting->ChildrenSize() != 0 && FromString<EYtSettingType>(setting->Child(0)->Content()) == type) {

ydb/library/yql/providers/yt/provider/yql_yt_op_settings.h

+1
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ TExprNode::TPtr ToAtomList(const TContainer& columns, TPositionHandle pos, TExpr
142142

143143
bool ValidateColumnGroups(const TExprNode& setting, const TStructExprType& rowType, TExprContext& ctx);
144144
TString NormalizeColumnGroupSpec(const TStringBuf spec);
145+
const TString& GetSingleColumnGroupSpec();
145146

146147
TExprNode::TPtr ToColumnPairList(const TVector<std::pair<TString, bool>>& columns, TPositionHandle pos, TExprContext& ctx);
147148

ydb/library/yql/providers/yt/provider/yql_yt_physical_finalizing.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2681,7 +2681,7 @@ class TYtPhysicalFinalizingTransformer : public TSyncTransformerBase {
26812681
}
26822682
if (EColumnGroupMode::Single == mode) {
26832683
if (fullUsage[i]) {
2684-
groupSpecs[i] = NYT::NodeToCanonicalYsonString(NYT::TNode::CreateMap()("default", NYT::TNode::CreateEntity()), NYson::EYsonFormat::Text);
2684+
groupSpecs[i] = NYql::GetSingleColumnGroupSpec();
26852685
}
26862686
} else {
26872687
if (fullUsage[i]) {

ydb/library/yql/tests/sql/sql2yql/canondata/result.json

+28
Original file line numberDiff line numberDiff line change
@@ -4325,6 +4325,20 @@
43254325
"uri": "https://{canondata_backend}/1937027/bbc35c51807ca32a384973d8a730422ad871c54c/resource.tar.gz#test_sql2yql.test_column_group-hint_/sql.yql"
43264326
}
43274327
],
4328+
"test_sql2yql.test[column_group-hint_anon]": [
4329+
{
4330+
"checksum": "dbb0cca1127bb0c111eaf0a628b2b9a1",
4331+
"size": 4108,
4332+
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql2yql.test_column_group-hint_anon_/sql.yql"
4333+
}
4334+
],
4335+
"test_sql2yql.test[column_group-hint_anon_groups]": [
4336+
{
4337+
"checksum": "1f44e91a47e42b8d5876da52098a98ce",
4338+
"size": 4144,
4339+
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql2yql.test_column_group-hint_anon_groups_/sql.yql"
4340+
}
4341+
],
43284342
"test_sql2yql.test[column_group-hint_append_fail]": [
43294343
{
43304344
"checksum": "18aacc13c7921e65e61411ea0a31136e",
@@ -23519,6 +23533,20 @@
2351923533
"uri": "https://{canondata_backend}/1937027/bbc35c51807ca32a384973d8a730422ad871c54c/resource.tar.gz#test_sql_format.test_column_group-hint_/formatted.sql"
2352023534
}
2352123535
],
23536+
"test_sql_format.test[column_group-hint_anon]": [
23537+
{
23538+
"checksum": "0a7f14733fa0206794e5c41780561323",
23539+
"size": 230,
23540+
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql_format.test_column_group-hint_anon_/formatted.sql"
23541+
}
23542+
],
23543+
"test_sql_format.test[column_group-hint_anon_groups]": [
23544+
{
23545+
"checksum": "554c312c9220887717b03eb9a4392cb3",
23546+
"size": 273,
23547+
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql_format.test_column_group-hint_anon_groups_/formatted.sql"
23548+
}
23549+
],
2352223550
"test_sql_format.test[column_group-hint_append_fail]": [
2352323551
{
2352423552
"checksum": "d8756aff7c76d47d50affb769ec2cd4c",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
in Input input.txt
2+
providers yt
3+
pragma yt.ColumnGroupMode="disable"
4+
pragma yt.OptimizeFor="scan"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
in Input input.txt
2+
providers yt
3+
pragma yt.ColumnGroupMode="perusage"
4+
pragma yt.OptimizeFor="scan"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
in Input input.txt
2+
providers yt
3+
pragma yt.ColumnGroupMode="single"
4+
pragma yt.OptimizeFor="scan"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
USE plato;
2+
3+
$i = select * from Input where a > "a";
4+
5+
select a,b,c,d from $i;
6+
select c,d,e,f from $i;
7+
8+
-- Forces single group for $i
9+
insert into @tmp select * from $i;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
in Input input.txt
2+
providers yt
3+
pragma yt.ColumnGroupMode="disable"
4+
pragma yt.OptimizeFor="scan"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
in Input input.txt
2+
providers yt
3+
pragma yt.ColumnGroupMode="perusage"
4+
pragma yt.OptimizeFor="scan"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
in Input input.txt
2+
providers yt
3+
pragma yt.ColumnGroupMode="single"
4+
pragma yt.OptimizeFor="scan"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
USE plato;
2+
3+
$i = select * from Input where a > "a";
4+
5+
select a,b,c,d from $i;
6+
select c,d,e,f from $i;
7+
8+
-- Forces specific group for $i
9+
insert into @tmp with column_groups="{grp=[b;c;d]}" select * from $i;

ydb/library/yql/tests/sql/yt_native_file/part0/canondata/result.json

+21
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,27 @@
694694
"uri": "https://{canondata_backend}/1775059/ac786a412ea7eeb03c2f46ced1b142e23374a289/resource.tar.gz#test.test_case-case_many_val--Results_/results.txt"
695695
}
696696
],
697+
"test.test[column_group-hint_anon_groups-single-Debug]": [
698+
{
699+
"checksum": "5bf348df7ae8b5d8d99880c86ad09f56",
700+
"size": 3097,
701+
"uri": "https://{canondata_backend}/1936997/1750231bef89e714f3a763cde6bbd783904ec892/resource.tar.gz#test.test_column_group-hint_anon_groups-single-Debug_/opt.yql"
702+
}
703+
],
704+
"test.test[column_group-hint_anon_groups-single-Plan]": [
705+
{
706+
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
707+
"size": 10676,
708+
"uri": "https://{canondata_backend}/1936997/1750231bef89e714f3a763cde6bbd783904ec892/resource.tar.gz#test.test_column_group-hint_anon_groups-single-Plan_/plan.txt"
709+
}
710+
],
711+
"test.test[column_group-hint_anon_groups-single-Results]": [
712+
{
713+
"checksum": "d45a995ed068b19c1a38df12d1c68865",
714+
"size": 3442,
715+
"uri": "https://{canondata_backend}/1936997/1750231bef89e714f3a763cde6bbd783904ec892/resource.tar.gz#test.test_column_group-hint_anon_groups-single-Results_/results.txt"
716+
}
717+
],
697718
"test.test[column_order-select_where-default.txt-Debug]": [
698719
{
699720
"checksum": "33550dd19e7f7f3984faa0659e9b0db9",

ydb/library/yql/tests/sql/yt_native_file/part10/canondata/result.json

+42
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,48 @@
563563
"uri": "https://{canondata_backend}/1809005/81aef895e3303f900cc0cb6245596fe9a0da6573/resource.tar.gz#test.test_coalesce-coalesce_sugar-default.txt-Results_/results.txt"
564564
}
565565
],
566+
"test.test[column_group-hint_anon-perusage-Debug]": [
567+
{
568+
"checksum": "5f5e08c3a416f96ca6bcc239dc03e269",
569+
"size": 3034,
570+
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-perusage-Debug_/opt.yql"
571+
}
572+
],
573+
"test.test[column_group-hint_anon-perusage-Plan]": [
574+
{
575+
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
576+
"size": 10676,
577+
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-perusage-Plan_/plan.txt"
578+
}
579+
],
580+
"test.test[column_group-hint_anon-perusage-Results]": [
581+
{
582+
"checksum": "d45a995ed068b19c1a38df12d1c68865",
583+
"size": 3442,
584+
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-perusage-Results_/results.txt"
585+
}
586+
],
587+
"test.test[column_group-hint_anon-single-Debug]": [
588+
{
589+
"checksum": "25861ef6a274b795deea5b87d107a3b1",
590+
"size": 3032,
591+
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-single-Debug_/opt.yql"
592+
}
593+
],
594+
"test.test[column_group-hint_anon-single-Plan]": [
595+
{
596+
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
597+
"size": 10676,
598+
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-single-Plan_/plan.txt"
599+
}
600+
],
601+
"test.test[column_group-hint_anon-single-Results]": [
602+
{
603+
"checksum": "d45a995ed068b19c1a38df12d1c68865",
604+
"size": 3442,
605+
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-single-Results_/results.txt"
606+
}
607+
],
566608
"test.test[column_order-select_plain_nosimple-default.txt-Debug]": [
567609
{
568610
"checksum": "90dcb5133679abb1cdc16acdcbb8754f",

ydb/library/yql/tests/sql/yt_native_file/part17/canondata/result.json

+21
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,27 @@
604604
"uri": "https://{canondata_backend}/1942415/9dc26178536314feaac77333a6a0e27c8703d1e2/resource.tar.gz#test.test_coalesce-coalesce--Results_/results.txt"
605605
}
606606
],
607+
"test.test[column_group-hint_anon-disable-Debug]": [
608+
{
609+
"checksum": "9efc738eb05c150e97333a3999005fba",
610+
"size": 2935,
611+
"uri": "https://{canondata_backend}/1900335/7109f64012e245471fe7a235204134ac3e7a756c/resource.tar.gz#test.test_column_group-hint_anon-disable-Debug_/opt.yql"
612+
}
613+
],
614+
"test.test[column_group-hint_anon-disable-Plan]": [
615+
{
616+
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
617+
"size": 10676,
618+
"uri": "https://{canondata_backend}/1900335/7109f64012e245471fe7a235204134ac3e7a756c/resource.tar.gz#test.test_column_group-hint_anon-disable-Plan_/plan.txt"
619+
}
620+
],
621+
"test.test[column_group-hint_anon-disable-Results]": [
622+
{
623+
"checksum": "d45a995ed068b19c1a38df12d1c68865",
624+
"size": 3442,
625+
"uri": "https://{canondata_backend}/1900335/7109f64012e245471fe7a235204134ac3e7a756c/resource.tar.gz#test.test_column_group-hint_anon-disable-Results_/results.txt"
626+
}
627+
],
607628
"test.test[column_group-publish-perusage-Debug]": [
608629
{
609630
"checksum": "b78a3fa386c93c906943521c253050bf",

ydb/library/yql/tests/sql/yt_native_file/part19/canondata/result.json

+21
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,27 @@
743743
"uri": "https://{canondata_backend}/1899731/35236262db500d349ca85236f500b0173ae98a5d/resource.tar.gz#test.test_blocks-tuple_nth--Results_/results.txt"
744744
}
745745
],
746+
"test.test[column_group-hint_anon_groups-disable-Debug]": [
747+
{
748+
"checksum": "f8157255f0e6d64642bb6b729d19b34f",
749+
"size": 3009,
750+
"uri": "https://{canondata_backend}/1942525/bfcff962d189d4fcea4377061e05f080d425d77a/resource.tar.gz#test.test_column_group-hint_anon_groups-disable-Debug_/opt.yql"
751+
}
752+
],
753+
"test.test[column_group-hint_anon_groups-disable-Plan]": [
754+
{
755+
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
756+
"size": 10676,
757+
"uri": "https://{canondata_backend}/1942525/bfcff962d189d4fcea4377061e05f080d425d77a/resource.tar.gz#test.test_column_group-hint_anon_groups-disable-Plan_/plan.txt"
758+
}
759+
],
760+
"test.test[column_group-hint_anon_groups-disable-Results]": [
761+
{
762+
"checksum": "d45a995ed068b19c1a38df12d1c68865",
763+
"size": 3442,
764+
"uri": "https://{canondata_backend}/1942525/bfcff962d189d4fcea4377061e05f080d425d77a/resource.tar.gz#test.test_column_group-hint_anon_groups-disable-Results_/results.txt"
765+
}
766+
],
746767
"test.test[column_order-union_all_positional_unordered_fail--Debug]": [],
747768
"test.test[column_order-union_all_positional_unordered_fail--Plan]": [],
748769
"test.test[column_order-union_all_positional_unordered_fail--Results]": [

ydb/library/yql/tests/sql/yt_native_file/part8/canondata/result.json

+21
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,27 @@
966966
"uri": "https://{canondata_backend}/1809005/968c44f48b1a83965c869c6c3218e862c519db88/resource.tar.gz#test.test_column_group-hint-single-Results_/Output3.yqlrun.txt.attr"
967967
}
968968
],
969+
"test.test[column_group-hint_anon_groups-perusage-Debug]": [
970+
{
971+
"checksum": "067590e2391e0f451c071056a74b0ceb",
972+
"size": 3099,
973+
"uri": "https://{canondata_backend}/1925842/34f87e31ea17797037a02652cf384114b03d7912/resource.tar.gz#test.test_column_group-hint_anon_groups-perusage-Debug_/opt.yql"
974+
}
975+
],
976+
"test.test[column_group-hint_anon_groups-perusage-Plan]": [
977+
{
978+
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
979+
"size": 10676,
980+
"uri": "https://{canondata_backend}/1925842/34f87e31ea17797037a02652cf384114b03d7912/resource.tar.gz#test.test_column_group-hint_anon_groups-perusage-Plan_/plan.txt"
981+
}
982+
],
983+
"test.test[column_group-hint_anon_groups-perusage-Results]": [
984+
{
985+
"checksum": "d45a995ed068b19c1a38df12d1c68865",
986+
"size": 3442,
987+
"uri": "https://{canondata_backend}/1925842/34f87e31ea17797037a02652cf384114b03d7912/resource.tar.gz#test.test_column_group-hint_anon_groups-perusage-Results_/results.txt"
988+
}
989+
],
969990
"test.test[column_group-hint_append_fail--Debug]": [],
970991
"test.test[column_group-hint_append_fail--Plan]": [],
971992
"test.test[column_group-hint_append_fail--Results]": [

0 commit comments

Comments
 (0)