summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Velikhov <[email protected]>2024-01-10 14:25:09 +0300
committerGitHub <[email protected]>2024-01-10 14:25:09 +0300
commit319d0749b914aaf83f48e9cfb5ef70a6e53ada13 (patch)
treedf186609895bbff72005f88817e41ee501290f8d
parent192598f1bfc2c72a92fb55d5722ab56c4e69585c (diff)
Fixed minor problems with plan represtation (#889)
* Fixed minor issues with plan representations * Fixed minor bug, cannonized testsd * Added more canonized tests * Fixed minor issues reported by Yulia
-rw-r--r--ydb/core/kqp/opt/kqp_query_plan.cpp39
-rw-r--r--ydb/public/lib/ydb_cli/common/format.cpp296
-rw-r--r--ydb/public/lib/ydb_cli/common/format.h1
-rw-r--r--ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_join_group_by_lookup.script-script_/join_group_by_lookup.script.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_1.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_2.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_3.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_4.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_5.plan1
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_2.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_3.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_4.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_5.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_1.plan4
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_10.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_11.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_12.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_13.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_14.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_15.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_2.plan29
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_3.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_4.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_5.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_6.plan12
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_7.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_8.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_9.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_1.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_10.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_13.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_14.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_2.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_3.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_4.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_5.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_6.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_7.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_8.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_9.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_10.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_11.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_12.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_2.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_3.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_7.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_8.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_9.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_1.plan1
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_2.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_3.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_4.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_5.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_6.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_7.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_8.plan4
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_1.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_13.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_4.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_5.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_6.plan6
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_7.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_8.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_9.plan3
-rw-r--r--ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-select.test_/query_12.plan1
65 files changed, 324 insertions, 268 deletions
diff --git a/ydb/core/kqp/opt/kqp_query_plan.cpp b/ydb/core/kqp/opt/kqp_query_plan.cpp
index fbebd4bca6b..a456b567cfa 100644
--- a/ydb/core/kqp/opt/kqp_query_plan.cpp
+++ b/ydb/core/kqp/opt/kqp_query_plan.cpp
@@ -345,6 +345,7 @@ private:
else {
TArgContext c = std::get<TArgContext>(input);
writer.BeginObject();
+
auto input = LambdaInputs.find(c);
if (input != LambdaInputs.end()){
if (std::holds_alternative<ui32>(input->second)) {
@@ -1056,15 +1057,17 @@ private:
TVector<std::variant<ui32, TArgContext>> Visit(const TCoFlatMapBase& flatMap, TQueryPlanNode& planNode) {
auto flatMapInputs = Visit(flatMap.Input().Ptr(), planNode);
- if (flatMapInputs.size() == 1) {
+ if (flatMapInputs.size() >= 1) {
auto input = flatMapInputs[0];
auto newContext = CurrentArgContext.AddArg(flatMap.Lambda().Args().Arg(0).Ptr().Get());
if (std::holds_alternative<ui32>(input)) {
LambdaInputs[newContext] = std::get<ui32>(input);
} else {
- auto content = std::get<TArgContext>(input);
- LambdaInputs[newContext] = LambdaInputs.at(std::get<TArgContext>(input));
+ auto context = std::get<TArgContext>(input);
+ if (LambdaInputs.contains(context)){
+ LambdaInputs[newContext] = LambdaInputs.at(context);
+ }
}
}
@@ -1234,11 +1237,35 @@ private:
return AddOperator(planNode, "Delete", std::move(op));
}
+ TString MakeJoinConditionString(const TCoAtomList& leftKeys, const TCoAtomList& rightKeys) {
+ TString result = "";
+
+ for (size_t i = 0; i < leftKeys.Size(); i++) {
+ result += leftKeys.Item(i).StringValue();
+ if (i != leftKeys.Size() - 1) {
+ result += ",";
+ }
+ }
+
+ result += " = ";
+
+ for (size_t i = 0; i < rightKeys.Size(); i++) {
+ result += rightKeys.Item(i).StringValue();
+ if (i != rightKeys.Size() - 1) {
+ result += ",";
+ }
+ }
+
+ return result;
+
+ }
+
std::variant<ui32, TArgContext> Visit(const TCoFlatMapBase& flatMap, const TCoMapJoinCore& join, TQueryPlanNode& planNode) {
const auto name = TStringBuilder() << join.JoinKind().Value() << "Join (MapJoin)";
TOperator op;
op.Properties["Name"] = name;
+ op.Properties["Condition"] = MakeJoinConditionString(join.LeftKeysColumns(), join.RightKeysColumns());
AddOptimizerEstimates(op, join);
@@ -1254,6 +1281,8 @@ private:
TOperator op;
op.Properties["Name"] = name;
+ op.Properties["Condition"] = MakeJoinConditionString(join.LeftKeysColumns(), join.RightKeysColumns());
+
AddOptimizerEstimates(op, join);
@@ -1291,6 +1320,8 @@ private:
TOperator op;
op.Properties["Name"] = name;
+ op.Properties["Condition"] = MakeJoinConditionString(join.LeftKeysColumns(), join.RightKeysColumns());
+
auto operatorId = AddOperator(planNode, name, std::move(op));
AddOptimizerEstimates(op, join);
@@ -1305,6 +1336,8 @@ private:
TOperator op;
op.Properties["Name"] = name;
+ op.Properties["Condition"] = MakeJoinConditionString(join.LeftKeysColumns(), join.RightKeysColumns());
+
AddOptimizerEstimates(op, join);
diff --git a/ydb/public/lib/ydb_cli/common/format.cpp b/ydb/public/lib/ydb_cli/common/format.cpp
index 5afc65e7367..08b76da9781 100644
--- a/ydb/public/lib/ydb_cli/common/format.cpp
+++ b/ydb/public/lib/ydb_cli/common/format.cpp
@@ -383,7 +383,7 @@ void TQueryPlanPrinter::PrintSimplifyJson(const NJson::TJsonValue& plan) {
void TQueryPlanPrinter::PrintPrettyTable(const NJson::TJsonValue& plan) {
static const TVector<TString> explainColumnNames = {"Operation", "E-Cost", "E-Rows"};
- static const TVector<TString> explainAnalyzeColumnNames = {"Operation", "DurationMs", "Rows", "E-Cost", "E-Rows"};
+ static const TVector<TString> explainAnalyzeColumnNames = {"Operation", "DurationUs", "Rows", "E-Cost", "E-Rows"};
if (plan.GetMapSafe().contains("Plan")) {
auto queryPlan = plan.GetMapSafe().at("Plan");
@@ -416,12 +416,22 @@ void TQueryPlanPrinter::PrintPrettyTableImpl(const NJson::TJsonValue& plan, TStr
if (node.contains("Stats")) {
const auto& stats = node.at("Stats").GetMapSafe();
- if (stats.contains("TotalOutputRows")) {
- nRows = JsonToString(stats.at("TotalOutputRows"));
+ if (stats.contains("OutputRows")) {
+ auto outputRows = stats.at("OutputRows");
+ if (outputRows.IsMap()) {
+ nRows = JsonToString(outputRows.GetMapSafe().at("Sum"));
+ } else {
+ nRows = JsonToString(outputRows);
+ }
}
- if (stats.contains("TotalDurationMs")) {
- duration = JsonToString(stats.at("TotalDurationMs"));
+ if (stats.contains("DurationUs")) {
+ auto durationUs = stats.at("DurationUs");
+ if (durationUs.IsMap()) {
+ duration = JsonToString(durationUs.GetMapSafe().at("Sum"));
+ } else {
+ duration = JsonToString(durationUs);
+ }
}
}
@@ -501,219 +511,151 @@ TVector<NJson::TJsonValue> TQueryPlanPrinter::RemoveRedundantNodes(NJson::TJsonV
}
const auto typeName = planMap.at("Node Type").GetStringSafe();
- if (redundantNodes.contains(typeName)) {
+ if (redundantNodes.contains(typeName) || typeName.find("Precompute") != TString::npos) {
return children;
}
return {plan};
}
-THashMap<TString, NJson::TJsonValue> TQueryPlanPrinter::ExtractPrecomputes(NJson::TJsonValue& plan) {
- auto& planMap = plan.GetMapSafe();
-
- if (!planMap.contains("Plans")) {
- return {};
+void BuildPlanIndex(NJson::TJsonValue& plan, THashMap<int, NJson::TJsonValue>& planIndex, THashMap<TString, NJson::TJsonValue>& precomputes) {
+ if (plan.GetMapSafe().contains("PlanNodeId")){
+ auto id = plan.GetMapSafe().at("PlanNodeId").GetIntegerSafe();
+ planIndex[id] = plan;
}
- THashMap<TString, NJson::TJsonValue> precomputes;
- TVector<NJson::TJsonValue> results;
- for (auto& child : planMap.at("Plans").GetArraySafe()) {
- if (child.GetMapSafe().contains("Subplan Name")) {
- const auto& precomputeName = child.GetMapSafe().at("Subplan Name").GetStringSafe();
-
- auto pos = precomputeName.find("precompute");
- if (pos != TString::npos) {
- precomputes[precomputeName.substr(pos)] = std::move(child);
- }
- } else {
- results.push_back(std::move(child));
+ if (plan.GetMapSafe().contains("Subplan Name")) {
+ const auto& precomputeName = plan.GetMapSafe().at("Subplan Name").GetStringSafe();
+
+ auto pos = precomputeName.find("precompute");
+ if (pos != TString::npos) {
+ precomputes[precomputeName.substr(pos)] = plan;
}
}
- planMap.erase("Plans");
- if (!results.empty()) {
- auto& plans = planMap["Plans"];
- for (auto& result : results) {
- plans.AppendValue(std::move(result));
+ if (plan.GetMapSafe().contains("Plans")) {
+ for (auto p : plan.GetMapSafe().at("Plans").GetArraySafe()) {
+ BuildPlanIndex(p, planIndex, precomputes);
}
}
-
- return precomputes;
}
-void TQueryPlanPrinter::ResolvePrecomputeLinks(NJson::TJsonValue& plan, const THashMap<TString, NJson::TJsonValue>& precomputes) {
- auto& planMap = plan.GetMapSafe();
+void TQueryPlanPrinter::SimplifyQueryPlan(NJson::TJsonValue& plan) {
+ static const THashSet<TString> redundantNodes = {
+ "UnionAll",
+ "Broadcast",
+ "Map",
+ "HashShuffle",
+ "Merge",
+ "Collect",
+ "Stage",
+ "Iterator",
+ "PartitionByKey",
+ "ToFlow"
+ };
+
+ //auto precomputes = ExtractPrecomputes(plan);
+ //ResolvePrecomputeLinks(plan, precomputes);
+ THashMap<int, NJson::TJsonValue> planIndex;
+ THashMap<TString, NJson::TJsonValue> precomputes;
- if (planMap.contains("CTE Name")) {
- const auto& precomputeName = planMap.at("CTE Name").GetStringSafe();
- auto precomputeIt = precomputes.find(precomputeName);
- if (precomputeIt != precomputes.end()) {
- auto& precompute = precomputeIt->second;
+ BuildPlanIndex(plan, planIndex, precomputes);
- if (precompute.GetMapSafe().contains("Plans")) {
- auto& plans = planMap["Plans"];
- for (auto& child : precompute.GetMapSafe().at("Plans").GetArraySafe()) {
- plans.AppendValue(child);
- }
- }
+ int nodeCounter = 0;
+ plan = ReconstructQueryPlanRec(plan, 0, planIndex, precomputes, nodeCounter);
+ RemoveRedundantNodes(plan, redundantNodes);
- if (planMap.contains("Operators")) {
- // delete precompute link from operator block
- for (auto &op : planMap.at("Operators").GetArraySafe()) {
- if (op.GetMapSafe().contains("Iterator")) {
- op.GetMapSafe().erase("Iterator");
- } else if (op.GetMapSafe().contains("Input")) {
- op.GetMapSafe().erase("Input");
- }
- if (op.GetMapSafe().contains("ToFlow")) {
- op.GetMapSafe().erase("ToFlow");
- }
- }
- }
+}
- }
+NJson::TJsonValue TQueryPlanPrinter::ReconstructQueryPlanRec(const NJson::TJsonValue& plan,
+ int operatorIndex,
+ const THashMap<int, NJson::TJsonValue>& planIndex,
+ const THashMap<TString, NJson::TJsonValue>& precomputes,
+ int& nodeCounter) {
- // delete precompute link
- planMap.erase("CTE Name");
- }
+ int currentNodeId = nodeCounter++;
- if (planMap.contains("Plans") && planMap.at("Plans").IsArray()) {
- for (auto& child : planMap.at("Plans").GetArraySafe()) {
- ResolvePrecomputeLinks(child, precomputes);
- }
+ NJson::TJsonValue result;
+ result["PlanNodeId"] = currentNodeId;
+ if (plan.GetMapSafe().contains("PlanNodeType")) {
+ result["PlanNodeType"] = plan.GetMapSafe().at("PlanNodeType").GetStringSafe();
}
-}
-void TQueryPlanPrinter::DeleteSplitNodes(NJson::TJsonValue& plan) {
- auto& planMap = plan.GetMapSafe();
-
- if (planMap.contains("Ready")) {
- planMap.erase("Ready");
+ if (plan.GetMapSafe().contains("Stats")) {
+ result["Stats"] = plan.GetMapSafe().at("Stats");
}
- if (planMap.contains("Operators")) {
- for (auto &op : planMap.at("Operators").GetArraySafe()) {
- if (op.GetMapSafe().contains("Inputs")) {
- op.GetMapSafe().erase("Inputs");
- }
+ if (!plan.GetMapSafe().contains("Operators")) {
+ NJson::TJsonValue planInputs;
+
+ result["Node Type"] = plan.GetMapSafe().at("Node Type").GetStringSafe();
+
+ if (!plan.GetMapSafe().contains("Plans")) {
+ return result;
}
- }
- if (planMap.contains("Plans") && planMap.at("Plans").IsArray()) {
- for (auto& child : planMap.at("Plans").GetArraySafe()) {
- DeleteSplitNodes(child);
+ for (auto p : plan.GetMapSafe().at("Plans").GetArraySafe()) {
+ if (p.GetMapSafe().at("Node Type").GetStringSafe().find("Precompute") == TString::npos) {
+ planInputs.AppendValue(ReconstructQueryPlanRec(p, 0, planIndex, precomputes, nodeCounter));
+ }
}
+ result["Plans"] = planInputs;
+ return result;
}
-}
-
-/**
- * Need to transform json plan into a tree
- * Need to creating new nodes and connect them with nodes from inputs
-**/
-void TQueryPlanPrinter::SplitPlanInTree(NJson::TJsonValue& plan) {
- auto& planMap = plan.GetMapSafe();
- if (planMap.contains("Plans")) {
- // Array of newNodes
- NJson::TJsonValue newNodes;
- // Array of connection for each Nodes
- TVector<TVector<int>> connections;
- TMap<int, NJson::TJsonValue> grandchilds;
+ if (plan.GetMapSafe().contains("CTE Name") && plan.GetMapSafe().at("Node Type") == "ConstantExpr") {
+ auto precompute = plan.GetMapSafe().at("CTE Name").GetStringSafe();
+ return ReconstructQueryPlanRec(precomputes.at(precompute), 0, planIndex, precomputes, nodeCounter);
+ }
- // Look at every child
- for (auto& child : planMap.at("Plans").GetArray()) {
- if (child.GetMapSafe().contains("Operators") && not child.GetMapSafe().contains("Ready")) {
+ auto ops = plan.GetMapSafe().at("Operators").GetArraySafe();
+ auto op = ops[operatorIndex];
- if (child.GetMapSafe().contains("Plans")) {
- for (auto& grandchild : child.GetMapSafe().at("Plans").GetArray()) {
- grandchilds[grandchild.GetMapSafe().at("PlanNodeId").GetIntegerSafe()].AppendValue(grandchild);
- }
- }
-
- // counter of creating nodes
- int newNodeCount = 0;
-
- for (auto &op : child.GetMapSafe().at("Operators").GetArraySafe()) {
- const auto& opName = op.GetMapSafe().at("Name").GetStringSafe();
- NJson::TJsonValue operators;
-
- operators.AppendValue(op);
-
- // Creating new Node
- NJson::TJsonValue temp;
- temp["Node Type"] = opName;
- temp["Operators"] = operators;
- temp["PlanNodeId"] = -(child.GetMapSafe().at("PlanNodeId").GetIntegerSafe() * 1000 + newNodeCount);
-
- // Array of internal inputs for each Node
- TVector<int> intInputNodes;
-
- // Collect inputs
- if (op.GetMapSafe().contains("Inputs")) {
- for (auto &inp : op.GetMapSafe().at("Inputs").GetArraySafe()) {
- if (inp.GetMapSafe().contains("ExternalPlanNodeId")) {
- if (temp.GetMapSafe().contains("Plans")) {
- temp["Plans"].AppendValue(grandchilds[inp.GetMapSafe().at("ExternalPlanNodeId").GetIntegerSafe()]);
- } else {
- temp["Plans"] = grandchilds[inp.GetMapSafe().at("ExternalPlanNodeId").GetIntegerSafe()];
- }
- }
- if (inp.GetMapSafe().contains("InternalOperatorId")) {
- intInputNodes.push_back(inp.GetMapSafe().at("InternalOperatorId").GetIntegerSafe());
- }
- }
- }
-
- connections.push_back(intInputNodes);
+ TVector<NJson::TJsonValue> planInputs;
- // Flag that we already change node
- temp["Ready"] = 1;
+ for (auto opInput : op.GetMapSafe().at("Inputs").GetArraySafe()) {
+ if (opInput.GetMapSafe().contains("ExternalPlanNodeId")) {
+ auto inputPlanKey = opInput.GetMapSafe().at("ExternalPlanNodeId").GetIntegerSafe();
+ auto inputPlan = planIndex.at(inputPlanKey);
+ planInputs.push_back( ReconstructQueryPlanRec(inputPlan, 0, planIndex, precomputes, nodeCounter));
+ } else if (opInput.GetMapSafe().contains("InternalOperatorId")) {
+ auto inputPlanId = opInput.GetMapSafe().at("InternalOperatorId").GetIntegerSafe();
+ planInputs.push_back( ReconstructQueryPlanRec(plan, inputPlanId, planIndex, precomputes, nodeCounter));
+ }
+ }
- NJson::TJsonValue arrayTemp;
- arrayTemp.AppendValue(temp);
- newNodes.AppendValue(arrayTemp);
+ if (op.GetMapSafe().contains("Inputs")) {
+ op.GetMapSafe().erase("Inputs");
+ }
- newNodeCount++;
- }
- }
+ if (op.GetMapSafe().contains("Input") || op.GetMapSafe().contains("ToFlow")) {
+ TString maybePrecompute = "";
+ if (op.GetMapSafe().contains("Input")) {
+ maybePrecompute = op.GetMapSafe().at("Input").GetStringSafe();
+ } else if (op.GetMapSafe().contains("ToFlow")) {
+ maybePrecompute = op.GetMapSafe().at("ToFlow").GetStringSafe();
}
- // Connecting new Nodes
- if (newNodes.IsArray() && newNodes.GetArray().size() > 1) {
- for (long long i = newNodes.GetArray().size() - 1; i >= 0; --i) {
- for (size_t j = 0; j < connections[i].size(); ++j) {
- newNodes[i][0]["Plans"].AppendValue(newNodes[connections[i][j]][0]);
- }
- }
- planMap["Plans"] = newNodes[0];
- }
-
- if (planMap.contains("Plans")) {
- for (auto& child : planMap.at("Plans").GetArraySafe()) {
- SplitPlanInTree(child);
- }
+ if (precomputes.contains(maybePrecompute)) {
+ planInputs.push_back(ReconstructQueryPlanRec(precomputes.at(maybePrecompute), 0, planIndex, precomputes, nodeCounter));
}
-
- }
-}
+ }
-void TQueryPlanPrinter::SimplifyQueryPlan(NJson::TJsonValue& plan) {
- static const THashSet<TString> redundantNodes = {
- "UnionAll",
- "Broadcast",
- "Map",
- "HashShuffle",
- "Merge",
- "Collect",
- "Stage"
- };
+ result["Node Type"] = op.GetMapSafe().at("Name").GetStringSafe();
+ NJson::TJsonValue newOps;
+ newOps.AppendValue(op);
+ result["Operators"] = newOps;
- auto precomputes = ExtractPrecomputes(plan);
- ResolvePrecomputeLinks(plan, precomputes);
- SplitPlanInTree(plan);
- DeleteSplitNodes(plan);
- RemoveRedundantNodes(plan, redundantNodes);
+ if (planInputs.size()){
+ NJson::TJsonValue plans;
+ for( auto i : planInputs) {
+ plans.AppendValue(i);
+ }
+ result["Plans"] = plans;
+ }
+
+ return result;
}
TString TQueryPlanPrinter::JsonToString(const NJson::TJsonValue& jsonValue) {
diff --git a/ydb/public/lib/ydb_cli/common/format.h b/ydb/public/lib/ydb_cli/common/format.h
index 1e588f0e035..097a61f0c1a 100644
--- a/ydb/public/lib/ydb_cli/common/format.h
+++ b/ydb/public/lib/ydb_cli/common/format.h
@@ -110,6 +110,7 @@ private:
void SplitPlanInTree(NJson::TJsonValue& plan);
void SimplifyQueryPlan(NJson::TJsonValue& plan);
+ NJson::TJsonValue ReconstructQueryPlanRec(const NJson::TJsonValue& plan, int operatorIndex, const THashMap<int, NJson::TJsonValue>& planIndex, const THashMap<TString, NJson::TJsonValue>& precomputes, int& nodeCounter);
TVector<NJson::TJsonValue> RemoveRedundantNodes(NJson::TJsonValue& plan, const THashSet<TString>& redundantNodes);
THashMap<TString, NJson::TJsonValue> ExtractPrecomputes(NJson::TJsonValue& planJson);
void ResolvePrecomputeLinks(NJson::TJsonValue& planJson, const THashMap<TString, NJson::TJsonValue>& precomputes);
diff --git a/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_join_group_by_lookup.script-script_/join_group_by_lookup.script.plan b/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_join_group_by_lookup.script-script_/join_group_by_lookup.script.plan
index f70a61b06ac..df47ca5e632 100644
--- a/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_join_group_by_lookup.script-script_/join_group_by_lookup.script.plan
+++ b/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_join_group_by_lookup.script-script_/join_group_by_lookup.script.plan
@@ -142,9 +142,10 @@
"ExternalPlanNodeId": 16
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 14
}
],
+ "Condition": "Group = Group",
"Name": "LeftJoin (MapJoin)"
}
],
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_1.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_1.plan
index 9580a62d8b0..94f7ba590af 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_1.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_1.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.qr.y"
},
{
+ "Condition": "_equijoin_column_0 = x",
"Inputs": [
{
"ExternalPlanNodeId": 28
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 26
}
],
"Name": "LeftJoin (MapJoin)"
@@ -181,12 +182,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "x = x",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_2.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_2.plan
index c523dcbb9e9..4cf9e01f30b 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_2.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_2.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.a.y"
},
{
+ "Condition": "x = x",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_3.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_3.plan
index f9f99033fae..fdc74f7a64b 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_3.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_3.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.pv.x"
},
{
+ "Condition": "x = x",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_4.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_4.plan
index 3f1c4973093..67364271a21 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_4.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_4.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.yy.pkyy"
},
{
+ "Condition": "_equijoin_column_0 = pkxx",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_5.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_5.plan
index 1271df83b98..6b22da62a27 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_5.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_coalesce-and-join.test_/query_5.plan
@@ -41,6 +41,7 @@
"Name": "Limit"
},
{
+ "Condition": "pkxx = _equijoin_column_0",
"Inputs": [
{
"ExternalPlanNodeId": 6
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_2.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_2.plan
index 3899d020ad2..9c96e086f24 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_2.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_2.plan
@@ -66,12 +66,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "q2 = q1",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_3.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_3.plan
index 91b4aeb5858..dd1193a95f5 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_3.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_3.plan
@@ -66,12 +66,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "q2 = q1",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_4.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_4.plan
index 071fa83a71c..09412fe6b6c 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_4.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_4.plan
@@ -66,12 +66,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "q2 = q1",
"Inputs": [
{
"ExternalPlanNodeId": 8
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 6
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_5.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_5.plan
index 67728a839bb..4aa168e3b67 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_5.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join-group-by-with-null.test_/query_5.plan
@@ -66,12 +66,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "q2 = q1",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_1.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_1.plan
index 5fd5e8d2ec7..e9dea751f39 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_1.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_1.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "q2 = i2_1.q2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
@@ -73,6 +74,7 @@
"Node Type": "InnerJoin (MapJoin)-Filter-TableFullScan",
"Operators": [
{
+ "Condition": "q1 = x",
"Inputs": [
{
"InternalOperatorId": 1
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_10.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_10.plan
index e6f4d141167..14e3c5b9c2d 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_10.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_10.plan
@@ -50,12 +50,13 @@
"Predicate": "item.b.thousand == item.a.q1 And item.a.q1 == item.b.hundred"
},
{
+ "Condition": "q1 = unique2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_11.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_11.plan
index d5bbaa2c5c2..c9bffee2b74 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_11.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_11.plan
@@ -71,12 +71,13 @@
"Name": "Limit"
},
{
+ "Condition": "f1 = unique2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_12.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_12.plan
index 6d1bfafd92f..01cb6df3107 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_12.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_12.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "_equijoin_column_0 = unique2",
"Inputs": [
{
"ExternalPlanNodeId": 12
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
@@ -107,12 +108,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "unique1 = thousand",
"Inputs": [
{
"ExternalPlanNodeId": 10
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 8
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_13.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_13.plan
index 9158bcf8127..1215e583a04 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_13.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_13.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "join_key = foo2.f1",
"Inputs": [
{
"ExternalPlanNodeId": 12
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 10
}
],
"Name": "LeftJoin (MapJoin)"
@@ -72,12 +73,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "f1 = unique2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_14.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_14.plan
index 007b25fc0dc..f309a146c2e 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_14.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_14.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "id = yy_1.id",
"Inputs": [
{
"ExternalPlanNodeId": 10
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 8
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_15.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_15.plan
index f08720c0802..1ac8034052e 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_15.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_15.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "f1 = unique2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_2.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_2.plan
index e8f6dd7e9a4..b1b5a5707f5 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_2.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_2.plan
@@ -44,43 +44,43 @@
"InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 1
}
],
"Limit": "1001",
@@ -100,12 +100,13 @@
"ToFlow": "precompute_0_0"
},
{
+ "Condition": "thousand = Sum0",
"Inputs": [
{
"InternalOperatorId": 5
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_3.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_3.plan
index 1eca40cbdfa..d487b9c7bd2 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_3.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_3.plan
@@ -48,12 +48,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "hundred = thousand",
"Inputs": [
{
"InternalOperatorId": 2
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_4.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_4.plan
index 9cd4dd884d2..1698f81e375 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_4.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_4.plan
@@ -50,12 +50,13 @@
"Predicate": "Not Exist(item.b.unique2) And item.a.ten == 2 Or item.b.hundred == 3"
},
{
+ "Condition": "unique2 = tenthous",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_5.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_5.plan
index abc37405606..2b80d04aac3 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_5.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_5.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.qr.qq"
},
{
+ "Condition": "qq = unique2",
"Inputs": [
{
"InternalOperatorId": 2
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_6.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_6.plan
index 725ee0494db..0ef5165c9ac 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_6.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_6.plan
@@ -50,12 +50,13 @@
"Predicate": "item.t1.stringu1 > item.t2.stringu2"
},
{
+ "Condition": "subq1.y1 = unique1",
"Inputs": [
{
"ExternalPlanNodeId": 32
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 30
}
],
"Name": "LeftJoin (MapJoin)"
@@ -187,12 +188,13 @@
"Node Type": "InnerJoin (MapJoin)-Filter",
"Operators": [
{
+ "Condition": "unique2 = d1",
"Inputs": [
{
"InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 16
}
],
"Name": "InnerJoin (MapJoin)"
@@ -227,12 +229,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "f1 = v1.x2",
"Inputs": [
{
"ExternalPlanNodeId": 12
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 10
}
],
"Name": "LeftJoin (MapJoin)"
@@ -258,12 +261,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "x1 = y2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_7.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_7.plan
index 5a271a7e6ed..6ad2af627c3 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_7.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_7.plan
@@ -48,12 +48,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "hundred,ten = t2.hundred,t3.ten",
"Inputs": [
{
"ExternalPlanNodeId": 12
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 10
}
],
"Name": "LeftJoin (MapJoin)"
@@ -79,12 +80,13 @@
"Node Type": "InnerJoin (MapJoin)-Filter",
"Operators": [
{
+ "Condition": "thousand = unique2",
"Inputs": [
{
"InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_8.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_8.plan
index a21eb29e822..a9eae2b6883 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_8.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_8.plan
@@ -48,12 +48,13 @@
"Name": "Aggregate"
},
{
+ "Condition": "hundred,ten = hundred,_equijoin_column_0",
"Inputs": [
{
"ExternalPlanNodeId": 12
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 10
}
],
"Name": "LeftJoin (MapJoin)"
@@ -79,12 +80,13 @@
"Node Type": "InnerJoin (MapJoin)-Filter",
"Operators": [
{
+ "Condition": "thousand = unique2",
"Inputs": [
{
"InternalOperatorId": 1
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_9.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_9.plan
index 66c6abccd6e..5296ff41182 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_9.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join0.test_/query_9.plan
@@ -72,12 +72,13 @@
"TopSortBy": "row.fault"
},
{
+ "Condition": "q2 = unique2",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_1.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_1.plan
index 8b56ea0b4be..4f0e7128dca 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_1.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_1.plan
@@ -43,12 +43,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"InternalOperatorId": 3
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 2
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_10.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_10.plan
index fa702333d20..f5b56107f87 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_10.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_10.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_13.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_13.plan
index 16d169666a1..d3f340179e2 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_13.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_13.plan
@@ -50,12 +50,13 @@
"Predicate": "item.J2_TBL.k == 1"
},
{
+ "Condition": "i = i",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_14.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_14.plan
index 6af4488371c..f6daa85ac0e 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_14.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_14.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "i = i",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_2.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_2.plan
index 34bac532cc5..9f6b04fd8d0 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_2.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_2.plan
@@ -43,12 +43,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"InternalOperatorId": 3
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 2
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_3.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_3.plan
index 34bac532cc5..9f6b04fd8d0 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_3.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_3.plan
@@ -43,12 +43,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"InternalOperatorId": 3
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 2
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_4.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_4.plan
index 07c8c269a03..4c5f8447af5 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_4.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_4.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "j = k",
"Inputs": [
{
"InternalOperatorId": 2
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_5.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_5.plan
index 34bac532cc5..9f6b04fd8d0 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_5.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_5.plan
@@ -43,12 +43,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"InternalOperatorId": 3
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 2
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_6.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_6.plan
index 4e980d59876..882cd8bd9c2 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_6.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_6.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.J1_TBL.i"
},
{
+ "Condition": "i = k",
"Inputs": [
{
"InternalOperatorId": 2
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_7.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_7.plan
index 2fdd3376165..6c3caaa8bce 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_7.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_7.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_8.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_8.plan
index 2fdd3376165..6c3caaa8bce 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_8.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_8.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_9.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_9.plan
index fa702333d20..f5b56107f87 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_9.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join1.test_/query_9.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "i = i",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_10.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_10.plan
index aee05d62f45..6ef0f6b3d3c 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_10.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_10.plan
@@ -42,12 +42,13 @@
"TopSortBy": "row.x1"
},
{
+ "Condition": "x_1.x1 = x1",
"Inputs": [
{
"ExternalPlanNodeId": 20
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
@@ -64,12 +65,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "x1 = y1",
"Inputs": [
{
"ExternalPlanNodeId": 18
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 16
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_11.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_11.plan
index 1481475883e..83c40fc57fc 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_11.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_11.plan
@@ -51,12 +51,13 @@
"Predicate": "Exist(item.y.y2)"
},
{
+ "Condition": "x_1.x1 = x1",
"Inputs": [
{
"ExternalPlanNodeId": 20
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
@@ -73,12 +74,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "x1 = y1",
"Inputs": [
{
"ExternalPlanNodeId": 18
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 16
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_12.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_12.plan
index 82578c17ec9..953254cc571 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_12.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_12.plan
@@ -111,12 +111,13 @@
"TopSortBy": "row.x1"
},
{
+ "Condition": "x_1.x1 = x1",
"Inputs": [
{
"ExternalPlanNodeId": 20
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
@@ -133,12 +134,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "x1 = y1",
"Inputs": [
{
"ExternalPlanNodeId": 18
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 16
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_2.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_2.plan
index e1f3e575360..450483361e6 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_2.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_2.plan
@@ -43,12 +43,13 @@
"TopSortBy": "argument.s2.name"
},
{
+ "Condition": "name = name",
"Inputs": [
{
"InternalOperatorId": 3
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 2
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_3.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_3.plan
index b7db52f38ee..aae9353302d 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_3.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_3.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.s2.name"
},
{
+ "Condition": "name = name",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_7.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_7.plan
index 669baae2cae..6f4f4d6f8ce 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_7.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_7.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "x1 = y1",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_8.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_8.plan
index 5f69347bcfe..114b3cc40d3 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_8.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_8.plan
@@ -50,12 +50,13 @@
"Predicate": "Exist(item.y.y2)"
},
{
+ "Condition": "x1 = y1",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_9.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_9.plan
index bca7ff77432..3b44d2eb84e 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_9.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join2.test_/query_9.plan
@@ -42,12 +42,13 @@
"TopSortBy": "row.x1"
},
{
+ "Condition": "x_1.x1 = x1",
"Inputs": [
{
"ExternalPlanNodeId": 20
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
@@ -64,12 +65,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "x1 = y1",
"Inputs": [
{
"ExternalPlanNodeId": 18
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 16
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_1.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_1.plan
index 1e4361ed43a..d16268d244f 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_1.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_1.plan
@@ -51,6 +51,7 @@
"Predicate": "item.b.q1 > 0"
},
{
+ "Condition": "q2 = _equijoin_column_0",
"Inputs": [
{
"ExternalPlanNodeId": 6
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_2.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_2.plan
index 7657dfd0b9f..9b0b5c29552 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_2.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_2.plan
@@ -42,12 +42,13 @@
"TopSortBy": "argument.p.k"
},
{
+ "Condition": "k = k",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_3.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_3.plan
index b4044bc3ab2..26b195e6957 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_3.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_3.plan
@@ -42,12 +42,13 @@
"TopSortBy": "row.k"
},
{
+ "Condition": "k = k",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_4.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_4.plan
index 3e7f4aa529b..4e79bd2696d 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_4.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_4.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "k = k",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_5.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_5.plan
index 3b70d56190a..587d33bcc4a 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_5.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_5.plan
@@ -42,12 +42,13 @@
"Name": "Limit"
},
{
+ "Condition": "k = p_1.k",
"Inputs": [
{
"InternalOperatorId": 3
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 2
}
],
"Name": "InnerJoin (MapJoin)"
@@ -135,12 +136,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "k = k",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_6.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_6.plan
index 889fc818a16..de8fdea966b 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_6.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_6.plan
@@ -50,12 +50,13 @@
"Predicate": "Not Exist(item.qa.id) Or item.qa.id > 0"
},
{
+ "Condition": "a_id = id",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_7.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_7.plan
index 889fc818a16..de8fdea966b 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_7.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_7.plan
@@ -50,12 +50,13 @@
"Predicate": "Not Exist(item.qa.id) Or item.qa.id > 0"
},
{
+ "Condition": "a_id = id",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_8.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_8.plan
index 02c475ac633..be3d5e2afa8 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_8.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join3.test_/query_8.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "x = _equijoin_column_0",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
@@ -73,6 +74,7 @@
"Node Type": "LeftJoin (MapJoin)-TableFullScan",
"Operators": [
{
+ "Condition": "q2 = id",
"Inputs": [
{
"InternalOperatorId": 1
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_1.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_1.plan
index 424e45060ad..1b63281e4bd 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_1.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_1.plan
@@ -50,12 +50,13 @@
"Predicate": "{b1: ExtractMembers.nt2.b1,b2: ExtractMembers.nt2.b2,b3: ExtractMembers.nt2.b1 And {a1: ExtractMembers.a1,a2: ExtractMembers.a2,a3: Exist(ExtractMembers.id),id: ExtractMembers.id}.a3,id: ExtractMembers.nt2.id,nt1_id: ExtractMembers.nt2.nt1_id}.b3"
},
{
+ "Condition": "nt2_id = nt2.id",
"Inputs": [
{
"ExternalPlanNodeId": 12
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 10
}
],
"Name": "LeftJoin (MapJoin)"
@@ -81,12 +82,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "nt1_id = id",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_13.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_13.plan
index e5220f4e65d..dedb4d17765 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_13.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_13.plan
@@ -42,12 +42,13 @@
"TopSortBy": ""
},
{
+ "Condition": "a = a",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_4.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_4.plan
index f56c163342d..787a0eb9045 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_4.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_4.plan
@@ -42,12 +42,13 @@
"TopSortBy": "row.name"
},
{
+ "Condition": "a = a.code",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
@@ -73,12 +74,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "code = a",
"Inputs": [
{
"ExternalPlanNodeId": 8
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 6
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_5.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_5.plan
index 211a41ff050..acdf0d7034f 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_5.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_5.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "i,i,i = x,y,x",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_6.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_6.plan
index 56536eaef6e..83c7ae0a124 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_6.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_6.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "zt3.f3 = f1",
"Inputs": [
{
"ExternalPlanNodeId": 28
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 26
}
],
"Name": "LeftJoin (MapJoin)"
@@ -177,12 +178,13 @@
"Node Type": "LeftJoin (MapJoin)",
"Operators": [
{
+ "Condition": "f2 = f3",
"Inputs": [
{
"ExternalPlanNodeId": 14
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 12
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_7.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_7.plan
index 7a9100da147..fc5b1afdc84 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_7.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_7.plan
@@ -51,12 +51,13 @@
"Predicate": "item.tt5.f1 == item.tt5.f2 - item.tt6.f2"
},
{
+ "Condition": "f1 = f1",
"Inputs": [
{
"InternalOperatorId": 4
},
{
- "Other": "ConstantExpression"
+ "InternalOperatorId": 3
}
],
"Name": "InnerJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_8.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_8.plan
index f474a72e663..27032c6244b 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_8.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_8.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "joincol = joincol",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_9.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_9.plan
index f474a72e663..27032c6244b 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_9.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-jointest_join4.test_/query_9.plan
@@ -41,12 +41,13 @@
"Name": "Limit"
},
{
+ "Condition": "joincol = joincol",
"Inputs": [
{
"ExternalPlanNodeId": 6
},
{
- "Other": "ConstantExpression"
+ "ExternalPlanNodeId": 4
}
],
"Name": "LeftJoin (MapJoin)"
diff --git a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-select.test_/query_12.plan b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-select.test_/query_12.plan
index fd1be64e0a6..15c39ef75b9 100644
--- a/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-select.test_/query_12.plan
+++ b/ydb/tests/functional/suite_tests/canondata/test_postgres.TestPGSQL.test_sql_suite_plan-select.test_/query_12.plan
@@ -41,6 +41,7 @@
"Name": "Limit"
},
{
+ "Condition": "unique1,stringu1 = i,j",
"Inputs": [
{
"InternalOperatorId": 2