From f0852f2ac9b9b3881e88283329a89539e2eec1aa Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Fri, 28 Apr 2023 15:06:38 +0800 Subject: [PATCH] [fix](fe)fix bug if left table is empty and there are multiple right tables need do bucket shuffle to left side (#19169) * [fix](fe)fix bug if left table is empty and there are multiple right tables need do bucket shuffle to left side * fix bug * fix test cases --- .../src/main/java/org/apache/doris/analysis/StmtRewriter.java | 3 ++- fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java index a5e245f9f8..c09f034525 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/StmtRewriter.java @@ -882,7 +882,8 @@ public class StmtRewriter { } } } else { - joinOp = JoinOperator.LEFT_ANTI_JOIN; + joinOp = expr instanceof InPredicate ? JoinOperator.NULL_AWARE_LEFT_ANTI_JOIN + : JoinOperator.LEFT_ANTI_JOIN; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java index 8068c1a998..87282dcaac 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java @@ -1357,8 +1357,8 @@ public class Coordinator { // when left table is empty, it's bucketset is empty. // set right table destination address to the address of left table - if (destParams.instanceExecParams.size() == 1 - && destParams.instanceExecParams.get(0).bucketSeqSet.isEmpty()) { + if (destParams.instanceExecParams.size() == 1 && (bucketNum == 0 + || destParams.instanceExecParams.get(0).bucketSeqSet.isEmpty())) { bucketNum = 1; destParams.instanceExecParams.get(0).bucketSeqSet.add(0); }