diff options
author | a-romanov <Anton.Romanov@ydb.tech> | 2023-03-09 12:17:28 +0300 |
---|---|---|
committer | a-romanov <Anton.Romanov@ydb.tech> | 2023-03-09 12:17:28 +0300 |
commit | b576e5c308523206d523003d4429ce9832b6d9bf (patch) | |
tree | 1328080209f643fefbd29571b900850d2f5bbc94 | |
parent | ad607bb887619f321dec03b02df8220e01b7f5aa (diff) | |
download | ydb-b576e5c308523206d523003d4429ce9832b6d9bf.tar.gz |
YQL-15703 Get rid of keep_sys EquiJoin flag.
-rw-r--r-- | ydb/library/yql/core/common_opt/yql_co_flow2.cpp | 17 | ||||
-rw-r--r-- | ydb/library/yql/core/common_opt/yql_co_simple1.cpp | 23 | ||||
-rw-r--r-- | ydb/library/yql/core/yql_join.cpp | 2 | ||||
-rw-r--r-- | ydb/library/yql/core/yql_join.h | 1 | ||||
-rw-r--r-- | ydb/library/yql/core/yql_opt_window.cpp | 36 |
5 files changed, 27 insertions, 52 deletions
diff --git a/ydb/library/yql/core/common_opt/yql_co_flow2.cpp b/ydb/library/yql/core/common_opt/yql_co_flow2.cpp index 1dd82fc012f..b35c49bcdfb 100644 --- a/ydb/library/yql/core/common_opt/yql_co_flow2.cpp +++ b/ydb/library/yql/core/common_opt/yql_co_flow2.cpp @@ -729,7 +729,7 @@ const TTypeAnnotationNode* GetCanaryOutputType(const TStructExprType& outputType } TExprNode::TPtr BuildOutputFlattenMembersArg(const TCoEquiJoinInput& input, const TExprNode::TPtr& inputArg, - const TString& canaryName, const TStructExprType& canaryResultTypeWithoutRenames, bool keepSys, TExprContext& ctx) + const TString& canaryName, const TStructExprType& canaryResultTypeWithoutRenames, TExprContext& ctx) { YQL_ENSURE(input.Scope().Ref().IsAtom()); TStringBuf label = input.Scope().Ref().Content(); @@ -777,9 +777,7 @@ TExprNode::TPtr BuildOutputFlattenMembersArg(const TCoEquiJoinInput& input, cons TExprNode::TListType membersForCheck; auto flatMapInputItems = flatMapInputItem->Cast<TStructExprType>()->GetItems(); - if (!keepSys) { - EraseIf(flatMapInputItems, [](const TItemExprType* item) { return item->GetName().StartsWith("_yql_sys_"); }); - } + flatMapInputItems.push_back(ctx.MakeType<TItemExprType>(canaryName, ctx.MakeType<TDataExprType>(EDataSlot::Bool))); for (auto& item : flatMapInputItems) { if (item->GetItemType()->GetKind() != ETypeAnnotationKind::Optional) { @@ -845,15 +843,11 @@ TExprNode::TPtr PullUpFlatMapOverEquiJoin(const TExprNode::TPtr& node, TExprCont return node; } - bool keepSys = false; auto settings = node->ChildPtr(inputsCount + 1); for (auto& child : settings->Children()) { - if (child->Child(0)->Content() == "flatten") { + if (child->Head().IsAtom("flatten")) { return node; } - if (child->Child(0)->Content() == "keep_sys") { - keepSys = true; - } } static const TStringBuf canaryBaseName = "_yql_canary_"; @@ -892,9 +886,6 @@ TExprNode::TPtr PullUpFlatMapOverEquiJoin(const TExprNode::TPtr& node, TExprCont auto flatMapInputItem = GetSequenceItemType(flatMap.Input(), false); auto structItems = flatMapInputItem->Cast<TStructExprType>()->GetItems(); - if (!keepSys) { - EraseIf(structItems, [](const TItemExprType* item) { return item->GetName().StartsWith("_yql_sys_"); }); - } TString canaryName = TStringBuilder() << canaryBaseName << i; structItems.push_back(ctx.MakeType<TItemExprType>(canaryName, ctx.MakeType<TDataExprType>(EDataSlot::Bool))); @@ -993,7 +984,7 @@ TExprNode::TPtr PullUpFlatMapOverEquiJoin(const TExprNode::TPtr& node, TExprCont ); } - auto flattenMembersArg = BuildOutputFlattenMembersArg(input, afterJoinArg, canaryName, *canaryResultType, keepSys, ctx); + auto flattenMembersArg = BuildOutputFlattenMembersArg(input, afterJoinArg, canaryName, *canaryResultType, ctx); if (flattenMembersArg) { flattenMembersArgs.push_back(flattenMembersArg); } diff --git a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp index 9ac5dcd6752..ec5c057e52e 100644 --- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp +++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp @@ -1973,7 +1973,7 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c YQL_ENSURE(inputRowType->GetKind() == ETypeAnnotationKind::Struct); static const TStringBuf inputTable = "_yql_injoin_input"; - auto inputTableAtom = ctx.NewAtom(input->Pos(), inputTable); + auto inputTableAtom = ctx.NewAtom(input->Pos(), inputTable, TNodeFlags::Default); size_t startColumnIndex = 0; for (;;) { @@ -1993,7 +1993,7 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c auto equiJoinArg = ctx.Builder(pos) .List() .Add(0, chain[i].Right) - .Atom(1, tableName) + .Atom(1, tableName, TNodeFlags::Default) .Seal() .Build(); @@ -2002,7 +2002,7 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c TExprNodeList leftKeys; if (chain[i].LeftArgColumns.empty()) { leftKeys.push_back(inputTableAtom); - leftKeys.push_back(ctx.NewAtom(pos, columnName)); + leftKeys.push_back(ctx.NewAtom(pos, columnName, TNodeFlags::Default)); } else { for (TStringBuf leftKey : chain[i].LeftArgColumns) { leftKeys.push_back(inputTableAtom); @@ -2012,15 +2012,15 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c TExprNodeList rightKeys; for (const TString& rightKey : chain[i].RightArgColumns) { - rightKeys.push_back(ctx.NewAtom(pos, tableName)); + rightKeys.push_back(ctx.NewAtom(pos, tableName, TNodeFlags::Default)); rightKeys.push_back(ctx.NewAtom(pos, rightKey)); } joinChain = ctx.Builder(pos) .List() - .Atom(0, chain[i].Negated ? "LeftOnly" : "LeftSemi") + .Atom(0, chain[i].Negated ? "LeftOnly" : "LeftSemi", TNodeFlags::Default) .Add(1, joinChain ? joinChain : inputTableAtom) - .Atom(2, tableName) + .Atom(2, tableName, TNodeFlags::Default) .List(3) .Add(std::move(leftKeys)) .Seal() @@ -2035,7 +2035,7 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c if (chain[i].LeftArgColumns.empty()) { auto rename = ctx.Builder(pos) .List() - .Atom(0, "rename") + .Atom(0, "rename", TNodeFlags::Default) .Atom(1, FullColumnName(inputTable, columnName)) .Atom(2, "") .Seal() @@ -2045,7 +2045,7 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c addMemberChain = ctx.Builder(chain[i].SqlInPos) .Callable("AddMember") .Add(0, addMemberChain ? addMemberChain : origLambdaArgs->HeadPtr()) - .Atom(1, columnName) + .Atom(1, columnName, TNodeFlags::Default) .Add(2, chain[i].Left) .Seal() .Build(); @@ -2055,18 +2055,13 @@ TExprNode::TPtr BuildEquiJoinForSqlInChain(const TExprNode::TPtr& flatMapNode, c for (const auto& i : inputRowType->Cast<TStructExprType>()->GetItems()) { auto rename = ctx.Builder(input->Pos()) .List() - .Atom(0, "rename") + .Atom(0, "rename", TNodeFlags::Default) .Atom(1, FullColumnName(inputTable, i->GetName())) .Atom(2, i->GetName()) .Seal() .Build(); renames.push_back(rename); } - renames.push_back(ctx.Builder(input->Pos()) - .List() - .Atom(0, "keep_sys") - .Seal() - .Build()); equiJoinArgs.push_back(joinChain); equiJoinArgs.push_back(ctx.NewList(input->Pos(), std::move(renames))); diff --git a/ydb/library/yql/core/yql_join.cpp b/ydb/library/yql/core/yql_join.cpp index 384d797a20a..7005082c2e4 100644 --- a/ydb/library/yql/core/yql_join.cpp +++ b/ydb/library/yql/core/yql_join.cpp @@ -727,8 +727,6 @@ IGraphTransformer::TStatus ValidateEquiJoinOptions(TPositionHandle positionHandl } } else if (optionName == "flatten") { options.Flatten = true; - } else if (optionName == "keep_sys") { - options.KeepSysColumns = true; } else if (optionName == "strict_keys") { options.StrictKeys = true; } else if (optionName == "preferred_sort") { diff --git a/ydb/library/yql/core/yql_join.h b/ydb/library/yql/core/yql_join.h index f2638f49cf8..d3be053f5d3 100644 --- a/ydb/library/yql/core/yql_join.h +++ b/ydb/library/yql/core/yql_join.h @@ -57,7 +57,6 @@ struct TJoinOptions { TSet<TVector<TStringBuf>> PreferredSortSets; bool Flatten = false; - bool KeepSysColumns = false; bool StrictKeys = false; }; diff --git a/ydb/library/yql/core/yql_opt_window.cpp b/ydb/library/yql/core/yql_opt_window.cpp index 6f0d88e3bba..2a9838a5219 100644 --- a/ydb/library/yql/core/yql_opt_window.cpp +++ b/ydb/library/yql/core/yql_opt_window.cpp @@ -2112,30 +2112,26 @@ TExprNode::TPtr ExpandNonCompactFullFrames(TPositionHandle pos, const TExprNode: .Callable("EquiJoin") .List(0) .Add(0, input) - .Atom(1, "a") + .Atom(1, "a", TNodeFlags::Default) .Seal() .List(1) .Add(0, aggregated) - .Atom(1, "b") + .Atom(1, "b", TNodeFlags::Default) .Seal() .List(2) - .Atom(0, "Inner") - .Atom(1, "a") - .Atom(2, "b") + .Atom(0, "Inner", TNodeFlags::Default) + .Atom(1, "a", TNodeFlags::Default) + .Atom(2, "b", TNodeFlags::Default) .Add(3, buildJoinKeysTuple("a")) .Add(4, buildJoinKeysTuple("b")) .List(5) .List(0) - .Atom(0, "right") - .Atom(1, "any") + .Atom(0, "right", TNodeFlags::Default) + .Atom(1, "any", TNodeFlags::Default) .Seal() .Seal() .Seal() - .List(3) - .List(0) - .Atom(0, "keep_sys", TNodeFlags::Default) - .Seal() - .Seal() + .List(3).Seal() .Seal() .Build(); @@ -2187,25 +2183,21 @@ TExprNode::TPtr ExpandNonCompactFullFrames(TPositionHandle pos, const TExprNode: .Callable("EquiJoin") .List(0) .Add(0, input) - .Atom(1, "a") + .Atom(1, "a", TNodeFlags::Default) .Seal() .List(1) .Add(0, aggregated) - .Atom(1, "b") + .Atom(1, "b", TNodeFlags::Default) .Seal() .List(2) - .Atom(0, "Cross") - .Atom(1, "a") - .Atom(2, "b") + .Atom(0, "Cross", TNodeFlags::Default) + .Atom(1, "a", TNodeFlags::Default) + .Atom(2, "b", TNodeFlags::Default) .List(3).Seal() .List(4).Seal() .List(5).Seal() .Seal() - .List(3) - .List(0) - .Atom(0, "keep_sys", TNodeFlags::Default) - .Seal() - .Seal() + .List(3).Seal() .Seal() .Build(); } |