aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora-romanov <Anton.Romanov@ydb.tech>2023-03-09 12:17:28 +0300
committera-romanov <Anton.Romanov@ydb.tech>2023-03-09 12:17:28 +0300
commitb576e5c308523206d523003d4429ce9832b6d9bf (patch)
tree1328080209f643fefbd29571b900850d2f5bbc94
parentad607bb887619f321dec03b02df8220e01b7f5aa (diff)
downloadydb-b576e5c308523206d523003d4429ce9832b6d9bf.tar.gz
YQL-15703 Get rid of keep_sys EquiJoin flag.
-rw-r--r--ydb/library/yql/core/common_opt/yql_co_flow2.cpp17
-rw-r--r--ydb/library/yql/core/common_opt/yql_co_simple1.cpp23
-rw-r--r--ydb/library/yql/core/yql_join.cpp2
-rw-r--r--ydb/library/yql/core/yql_join.h1
-rw-r--r--ydb/library/yql/core/yql_opt_window.cpp36
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();
}