aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraakulaga <aakulaga@ydb.tech>2023-05-11 14:12:08 +0300
committeraakulaga <aakulaga@ydb.tech>2023-05-11 14:12:08 +0300
commitee93b1db56ec5eadd42ae3f1b825ac455d01d8fc (patch)
tree9adf0ecf3bbe5a1677e4bfae7606e2d05f06645a
parentfea17ba216b8128754ae3ecb6044dd83fea5f4ca (diff)
downloadydb-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.cpp26
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);
}