diff options
author | aakulaga <aakulaga@ydb.tech> | 2023-05-11 14:12:08 +0300 |
---|---|---|
committer | aakulaga <aakulaga@ydb.tech> | 2023-05-11 14:12:08 +0300 |
commit | ee93b1db56ec5eadd42ae3f1b825ac455d01d8fc (patch) | |
tree | 9adf0ecf3bbe5a1677e4bfae7606e2d05f06645a | |
parent | fea17ba216b8128754ae3ecb6044dd83fea5f4ca (diff) | |
download | ydb-ee93b1db56ec5eadd42ae3f1b825ac455d01d8fc.tar.gz |
Fix LeftOnly in stream mode
Fix LeftOnly in stream mode
-rw-r--r-- | ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.cpp index 31de9218203..0d94e0ba62b 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join_imp.cpp @@ -508,17 +508,25 @@ void TTable::Join( TTable & t1, TTable & t2, EJoinKind joinKind, bool hasMoreLef std::sort(rightIds.begin(), rightIds.end()); } - if ( (JoinKind == EJoinKind::Left || JoinKind == EJoinKind::LeftOnly || JoinKind == EJoinKind::LeftSemi || - JoinKind == EJoinKind::Right || JoinKind == EJoinKind::RightOnly || JoinKind == EJoinKind::RightSemi ) && - (RightTableBatch_ || LeftTableBatch_) ) - { - for (auto & jid: joinIds ) { - leftMatchedIds.insert(jid.id1); + if ( JoinKind == EJoinKind::Left || JoinKind == EJoinKind::LeftOnly || JoinKind == EJoinKind::LeftSemi ) { + if (RightTableBatch_ ) { + for (auto & jid: joinIds ) { + leftMatchedIds.insert(jid.id1); + } + leftIdsMatch += leftMatchedIds.size(); } - leftIdsMatch += leftMatchedIds.size(); } + if( JoinKind == EJoinKind::Right || JoinKind == EJoinKind::RightOnly || JoinKind == EJoinKind::RightSemi ) { + if (LeftTableBatch_) { + for (auto & jid: joinIds ) { + leftMatchedIds.insert(jid.id1); + } + leftIdsMatch += leftMatchedIds.size(); + } + + } } @@ -763,7 +771,7 @@ bool TTable::NextJoinedData( TupleData & td1, TupleData & td2) { ui32 tupleId2; bool globalMatchedId = false; - if ( RightTableBatch_ || LeftTableBatch_ ) { + if ( RightTableBatch_ ) { std::set<ui32> & leftMatchedIds = TableBuckets[JoinTable1->CurrIterBucket].AllLeftMatchedIds; globalMatchedId = leftMatchedIds.contains( (ui32) JoinTable1->CurrIterIndex); } @@ -794,7 +802,7 @@ bool TTable::NextJoinedData( TupleData & td1, TupleData & td2) { ui32 tupleId2; bool globalMatchedId = false; - if ( RightTableBatch_ || LeftTableBatch_ ) { + if ( LeftTableBatch_ ) { std::set<ui32> & leftMatchedIds = TableBuckets[JoinTable1->CurrIterBucket].AllLeftMatchedIds; globalMatchedId = leftMatchedIds.contains( (ui32) JoinTable1->CurrIterIndex); } |