diff options
author | aozeritsky <aozeritsky@ydb.tech> | 2023-07-13 12:41:12 +0300 |
---|---|---|
committer | aozeritsky <aozeritsky@ydb.tech> | 2023-07-13 12:41:12 +0300 |
commit | 4efe1405951a75e533afd6fb036b17a72b2cb130 (patch) | |
tree | 6399179da2fc43312d162eb72f635ea357454a71 | |
parent | 902da5705bb1eac2f2d679310563c78dca9b221a (diff) | |
download | ydb-4efe1405951a75e533afd6fb036b17a72b2cb130.tar.gz |
LeftVar always corresponds to Outer
-rw-r--r-- | ydb/library/yql/sql/pg/optimizer.cpp | 4 | ||||
-rw-r--r-- | ydb/library/yql/sql/pg/optimizer_ut.cpp | 2 |
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] |