From a3f06e5fbdeb5f74595addc7d0bf72d7091a36eb Mon Sep 17 00:00:00 2001 From: jakevin Date: Thu, 18 May 2023 10:54:46 +0800 Subject: [PATCH] [git](Nereids): ignore apache parquet. (#19765) --- .gitignore | 2 +- .../rewrite/logical/MergeSetOperations.java | 39 ++++++++----------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 5c9626e2ec..59ad7208bd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ *.pyc *.class *.iml -*.swp *.jar *.log *.so.tmp @@ -76,6 +75,7 @@ fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.tokens fe/fe-core/src/main/antlr4/org/apache/doris/nereids/gen/ fe/fe-common/src/main/java/org/apache/doris/thrift fe/fe-common/src/main/java/org/apache/parquet +fe/fe-core/src/main/java/org/apache/parquet # BE be/build*/ diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeSetOperations.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeSetOperations.java index 56f924684c..757388c417 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeSetOperations.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MergeSetOperations.java @@ -30,22 +30,20 @@ import java.util.List; import java.util.stream.Stream; /** - * optimization. * Merge nodes of the same type and same qualifier. - * + *

* eg: select k1, k2 from t1 union select 1, 2 union select d1, d2 from t2; - * before: - * logicalUnion() - * / \ - * logicalUnion() logicalProject - * / \ - * logicalProject logicalOneRowRelation - * - * after: - * 2. MERGE_SET_OPERATION - * logicalUnion() - * / \ \ - * logicalProject logicalOneRowRelation logicalProject + *

+ *     union
+ *    /    \
+ *   union  scan3
+ *   /   \
+ * scan1 scan2
+ * -->
+ *      union
+ *     /  |  \
+ * scan1 scan2 scan3
+ * 
*/ public class MergeSetOperations implements RewriteRuleFactory { @Override @@ -72,22 +70,17 @@ public class MergeSetOperations implements RewriteRuleFactory { /** canMerge */ public static boolean canMerge(LogicalSetOperation parent) { Plan left = parent.child(0); - if (canMerge(parent, left)) { - return true; - } Plan right = parent.child(1); - if (canMerge(parent, right)) { - return true; - } - return false; + + return canMerge(parent, left) || canMerge(parent, right); } - public static final boolean canMerge(LogicalSetOperation parent, Plan child) { + public static boolean canMerge(LogicalSetOperation parent, Plan child) { return child.getClass().equals(parent.getClass()) && isSameQualifierOrChildQualifierIsAll(parent, (LogicalSetOperation) child); } - public static final boolean isSameQualifierOrChildQualifierIsAll(LogicalSetOperation parentSetOperation, + public static boolean isSameQualifierOrChildQualifierIsAll(LogicalSetOperation parentSetOperation, LogicalSetOperation childSetOperation) { return parentSetOperation.getQualifier() == childSetOperation.getQualifier() || childSetOperation.getQualifier() == Qualifier.ALL;