aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraozeritsky <aozeritsky@ydb.tech>2023-07-13 12:41:12 +0300
committeraozeritsky <aozeritsky@ydb.tech>2023-07-13 12:41:12 +0300
commit4efe1405951a75e533afd6fb036b17a72b2cb130 (patch)
tree6399179da2fc43312d162eb72f635ea357454a71
parent902da5705bb1eac2f2d679310563c78dca9b221a (diff)
downloadydb-4efe1405951a75e533afd6fb036b17a72b2cb130.tar.gz
LeftVar always corresponds to Outer
-rw-r--r--ydb/library/yql/sql/pg/optimizer.cpp4
-rw-r--r--ydb/library/yql/sql/pg/optimizer_ut.cpp2
2 files changed, 5 insertions, 1 deletions
diff --git a/ydb/library/yql/sql/pg/optimizer.cpp b/ydb/library/yql/sql/pg/optimizer.cpp
index 6837e4881d4..80f1143593e 100644
--- a/ydb/library/yql/sql/pg/optimizer.cpp
+++ b/ydb/library/yql/sql/pg/optimizer.cpp
@@ -216,6 +216,10 @@ int TPgOptimizer::MakeOutputJoin(TOutput& output, Path* path) {
node.Inner = MakeOutputJoin(output, jpath->innerjoinpath);
node.Outer = MakeOutputJoin(output, jpath->outerjoinpath);
+
+ if (!bms_is_member(left->varno, jpath->outerjoinpath->parent->relids)) {
+ std::swap(node.LeftVar, node.RightVar);
+ }
}
output.Nodes[id] = node;
diff --git a/ydb/library/yql/sql/pg/optimizer_ut.cpp b/ydb/library/yql/sql/pg/optimizer_ut.cpp
index 0bcfa3aaf41..554c7df15e7 100644
--- a/ydb/library/yql/sql/pg/optimizer_ut.cpp
+++ b/ydb/library/yql/sql/pg/optimizer_ut.cpp
@@ -37,7 +37,7 @@ Y_UNIT_TEST(PgJoinSearch2Rels) {
Inner Join
Loop Strategy
Rels: [1,2]
- Op: a = b
+ Op: b = a
{
Node
Rels: [2]