Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions ydb/library/yql/providers/yt/provider/yql_yt_datasink.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,15 @@ class TYtDataSink : public TDataProviderBase {
ctx.NewAtom(res->Child(TYtWriteTable::idx_Settings)->Pos(), normalized, TNodeFlags::MultilineContent),
ctx)
);
} else if (NYql::HasSetting(*res->Child(TYtWriteTable::idx_Table)->Child(TYtTable::idx_Settings), EYtSettingType::Anonymous)) {
if (const auto mode = State_->Configuration->ColumnGroupMode.Get().GetOrElse(EColumnGroupMode::Disable); mode != EColumnGroupMode::Disable) {
res = ctx.ChangeChild(*res, TYtWriteTable::idx_Settings,
NYql::AddSetting(*res->Child(TYtWriteTable::idx_Settings),
EYtSettingType::ColumnGroups,
ctx.NewAtom(res->Child(TYtWriteTable::idx_Settings)->Pos(), NYql::GetSingleColumnGroupSpec(), TNodeFlags::MultilineContent),
ctx)
);
}
}
auto mutationId = ++NextMutationId_;
res = ctx.ChangeChild(*res, TYtWriteTable::idx_Settings,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -955,6 +955,11 @@ TString NormalizeColumnGroupSpec(const TStringBuf spec) {
}
}

const TString& GetSingleColumnGroupSpec() {
static TString GROUP = NYT::NodeToCanonicalYsonString(NYT::TNode::CreateMap()("default", NYT::TNode::CreateEntity()), NYson::EYsonFormat::Text);
return GROUP;
}

TExprNode::TPtr GetSetting(const TExprNode& settings, EYtSettingType type) {
for (auto& setting : settings.Children()) {
if (setting->ChildrenSize() != 0 && FromString<EYtSettingType>(setting->Child(0)->Content()) == type) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ TExprNode::TPtr ToAtomList(const TContainer& columns, TPositionHandle pos, TExpr

bool ValidateColumnGroups(const TExprNode& setting, const TStructExprType& rowType, TExprContext& ctx);
TString NormalizeColumnGroupSpec(const TStringBuf spec);
const TString& GetSingleColumnGroupSpec();

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2681,7 +2681,7 @@ class TYtPhysicalFinalizingTransformer : public TSyncTransformerBase {
}
if (EColumnGroupMode::Single == mode) {
if (fullUsage[i]) {
groupSpecs[i] = NYT::NodeToCanonicalYsonString(NYT::TNode::CreateMap()("default", NYT::TNode::CreateEntity()), NYson::EYsonFormat::Text);
groupSpecs[i] = NYql::GetSingleColumnGroupSpec();
}
} else {
if (fullUsage[i]) {
Expand Down
28 changes: 28 additions & 0 deletions ydb/library/yql/tests/sql/sql2yql/canondata/result.json
Original file line number Diff line number Diff line change
Expand Up @@ -4304,6 +4304,20 @@
"uri": "https://{canondata_backend}/1937027/bbc35c51807ca32a384973d8a730422ad871c54c/resource.tar.gz#test_sql2yql.test_column_group-hint_/sql.yql"
}
],
"test_sql2yql.test[column_group-hint_anon]": [
{
"checksum": "dbb0cca1127bb0c111eaf0a628b2b9a1",
"size": 4108,
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql2yql.test_column_group-hint_anon_/sql.yql"
}
],
"test_sql2yql.test[column_group-hint_anon_groups]": [
{
"checksum": "1f44e91a47e42b8d5876da52098a98ce",
"size": 4144,
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql2yql.test_column_group-hint_anon_groups_/sql.yql"
}
],
"test_sql2yql.test[column_group-hint_append_fail]": [
{
"checksum": "18aacc13c7921e65e61411ea0a31136e",
Expand Down Expand Up @@ -23477,6 +23491,20 @@
"uri": "https://{canondata_backend}/1937027/bbc35c51807ca32a384973d8a730422ad871c54c/resource.tar.gz#test_sql_format.test_column_group-hint_/formatted.sql"
}
],
"test_sql_format.test[column_group-hint_anon]": [
{
"checksum": "0a7f14733fa0206794e5c41780561323",
"size": 230,
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql_format.test_column_group-hint_anon_/formatted.sql"
}
],
"test_sql_format.test[column_group-hint_anon_groups]": [
{
"checksum": "554c312c9220887717b03eb9a4392cb3",
"size": 273,
"uri": "https://{canondata_backend}/1942525/2065de9dd4b18a7276f6c5d85e09a5754c9a2fd8/resource.tar.gz#test_sql_format.test_column_group-hint_anon_groups_/formatted.sql"
}
],
"test_sql_format.test[column_group-hint_append_fail]": [
{
"checksum": "d8756aff7c76d47d50affb769ec2cd4c",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
in Input input.txt
providers yt
pragma yt.ColumnGroupMode="disable"
pragma yt.OptimizeFor="scan"
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
in Input input.txt
providers yt
pragma yt.ColumnGroupMode="perusage"
pragma yt.OptimizeFor="scan"
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
in Input input.txt
providers yt
pragma yt.ColumnGroupMode="single"
pragma yt.OptimizeFor="scan"
9 changes: 9 additions & 0 deletions ydb/library/yql/tests/sql/suites/column_group/hint_anon.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
USE plato;

$i = select * from Input where a > "a";

select a,b,c,d from $i;
select c,d,e,f from $i;

-- Forces single group for $i
insert into @tmp select * from $i;
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
in Input input.txt
providers yt
pragma yt.ColumnGroupMode="disable"
pragma yt.OptimizeFor="scan"
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
in Input input.txt
providers yt
pragma yt.ColumnGroupMode="perusage"
pragma yt.OptimizeFor="scan"
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
in Input input.txt
providers yt
pragma yt.ColumnGroupMode="single"
pragma yt.OptimizeFor="scan"
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
USE plato;

$i = select * from Input where a > "a";

select a,b,c,d from $i;
select c,d,e,f from $i;

-- Forces specific group for $i
insert into @tmp with column_groups="{grp=[b;c;d]}" select * from $i;
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,27 @@
"uri": "https://{canondata_backend}/1775059/ac786a412ea7eeb03c2f46ced1b142e23374a289/resource.tar.gz#test.test_case-case_many_val--Results_/results.txt"
}
],
"test.test[column_group-hint_anon_groups-single-Debug]": [
{
"checksum": "5bf348df7ae8b5d8d99880c86ad09f56",
"size": 3097,
"uri": "https://{canondata_backend}/1936997/1750231bef89e714f3a763cde6bbd783904ec892/resource.tar.gz#test.test_column_group-hint_anon_groups-single-Debug_/opt.yql"
}
],
"test.test[column_group-hint_anon_groups-single-Plan]": [
{
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
"size": 10676,
"uri": "https://{canondata_backend}/1936997/1750231bef89e714f3a763cde6bbd783904ec892/resource.tar.gz#test.test_column_group-hint_anon_groups-single-Plan_/plan.txt"
}
],
"test.test[column_group-hint_anon_groups-single-Results]": [
{
"checksum": "d45a995ed068b19c1a38df12d1c68865",
"size": 3442,
"uri": "https://{canondata_backend}/1936997/1750231bef89e714f3a763cde6bbd783904ec892/resource.tar.gz#test.test_column_group-hint_anon_groups-single-Results_/results.txt"
}
],
"test.test[column_order-select_where-default.txt-Debug]": [
{
"checksum": "33550dd19e7f7f3984faa0659e9b0db9",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,48 @@
"uri": "https://{canondata_backend}/1809005/81aef895e3303f900cc0cb6245596fe9a0da6573/resource.tar.gz#test.test_coalesce-coalesce_sugar-default.txt-Results_/results.txt"
}
],
"test.test[column_group-hint_anon-perusage-Debug]": [
{
"checksum": "5f5e08c3a416f96ca6bcc239dc03e269",
"size": 3034,
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-perusage-Debug_/opt.yql"
}
],
"test.test[column_group-hint_anon-perusage-Plan]": [
{
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
"size": 10676,
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-perusage-Plan_/plan.txt"
}
],
"test.test[column_group-hint_anon-perusage-Results]": [
{
"checksum": "d45a995ed068b19c1a38df12d1c68865",
"size": 3442,
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-perusage-Results_/results.txt"
}
],
"test.test[column_group-hint_anon-single-Debug]": [
{
"checksum": "25861ef6a274b795deea5b87d107a3b1",
"size": 3032,
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-single-Debug_/opt.yql"
}
],
"test.test[column_group-hint_anon-single-Plan]": [
{
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
"size": 10676,
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-single-Plan_/plan.txt"
}
],
"test.test[column_group-hint_anon-single-Results]": [
{
"checksum": "d45a995ed068b19c1a38df12d1c68865",
"size": 3442,
"uri": "https://{canondata_backend}/1942525/38bbc64977eadbcbd7d9c11e7e100eb2855ed8a2/resource.tar.gz#test.test_column_group-hint_anon-single-Results_/results.txt"
}
],
"test.test[column_order-select_plain_nosimple-default.txt-Debug]": [
{
"checksum": "90dcb5133679abb1cdc16acdcbb8754f",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,27 @@
"uri": "https://{canondata_backend}/1942415/9dc26178536314feaac77333a6a0e27c8703d1e2/resource.tar.gz#test.test_coalesce-coalesce--Results_/results.txt"
}
],
"test.test[column_group-hint_anon-disable-Debug]": [
{
"checksum": "9efc738eb05c150e97333a3999005fba",
"size": 2935,
"uri": "https://{canondata_backend}/1900335/7109f64012e245471fe7a235204134ac3e7a756c/resource.tar.gz#test.test_column_group-hint_anon-disable-Debug_/opt.yql"
}
],
"test.test[column_group-hint_anon-disable-Plan]": [
{
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
"size": 10676,
"uri": "https://{canondata_backend}/1900335/7109f64012e245471fe7a235204134ac3e7a756c/resource.tar.gz#test.test_column_group-hint_anon-disable-Plan_/plan.txt"
}
],
"test.test[column_group-hint_anon-disable-Results]": [
{
"checksum": "d45a995ed068b19c1a38df12d1c68865",
"size": 3442,
"uri": "https://{canondata_backend}/1900335/7109f64012e245471fe7a235204134ac3e7a756c/resource.tar.gz#test.test_column_group-hint_anon-disable-Results_/results.txt"
}
],
"test.test[column_group-publish-perusage-Debug]": [
{
"checksum": "b78a3fa386c93c906943521c253050bf",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,27 @@
"uri": "https://{canondata_backend}/1899731/35236262db500d349ca85236f500b0173ae98a5d/resource.tar.gz#test.test_blocks-tuple_nth--Results_/results.txt"
}
],
"test.test[column_group-hint_anon_groups-disable-Debug]": [
{
"checksum": "f8157255f0e6d64642bb6b729d19b34f",
"size": 3009,
"uri": "https://{canondata_backend}/1942525/bfcff962d189d4fcea4377061e05f080d425d77a/resource.tar.gz#test.test_column_group-hint_anon_groups-disable-Debug_/opt.yql"
}
],
"test.test[column_group-hint_anon_groups-disable-Plan]": [
{
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
"size": 10676,
"uri": "https://{canondata_backend}/1942525/bfcff962d189d4fcea4377061e05f080d425d77a/resource.tar.gz#test.test_column_group-hint_anon_groups-disable-Plan_/plan.txt"
}
],
"test.test[column_group-hint_anon_groups-disable-Results]": [
{
"checksum": "d45a995ed068b19c1a38df12d1c68865",
"size": 3442,
"uri": "https://{canondata_backend}/1942525/bfcff962d189d4fcea4377061e05f080d425d77a/resource.tar.gz#test.test_column_group-hint_anon_groups-disable-Results_/results.txt"
}
],
"test.test[column_order-union_all_positional_unordered_fail--Debug]": [],
"test.test[column_order-union_all_positional_unordered_fail--Plan]": [],
"test.test[column_order-union_all_positional_unordered_fail--Results]": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,27 @@
"uri": "https://{canondata_backend}/1809005/968c44f48b1a83965c869c6c3218e862c519db88/resource.tar.gz#test.test_column_group-hint-single-Results_/Output3.yqlrun.txt.attr"
}
],
"test.test[column_group-hint_anon_groups-perusage-Debug]": [
{
"checksum": "067590e2391e0f451c071056a74b0ceb",
"size": 3099,
"uri": "https://{canondata_backend}/1925842/34f87e31ea17797037a02652cf384114b03d7912/resource.tar.gz#test.test_column_group-hint_anon_groups-perusage-Debug_/opt.yql"
}
],
"test.test[column_group-hint_anon_groups-perusage-Plan]": [
{
"checksum": "73f0d1587e451cd10761f80c0a1d3588",
"size": 10676,
"uri": "https://{canondata_backend}/1925842/34f87e31ea17797037a02652cf384114b03d7912/resource.tar.gz#test.test_column_group-hint_anon_groups-perusage-Plan_/plan.txt"
}
],
"test.test[column_group-hint_anon_groups-perusage-Results]": [
{
"checksum": "d45a995ed068b19c1a38df12d1c68865",
"size": 3442,
"uri": "https://{canondata_backend}/1925842/34f87e31ea17797037a02652cf384114b03d7912/resource.tar.gz#test.test_column_group-hint_anon_groups-perusage-Results_/results.txt"
}
],
"test.test[column_group-hint_append_fail--Debug]": [],
"test.test[column_group-hint_append_fail--Plan]": [],
"test.test[column_group-hint_append_fail--Results]": [
Expand Down