diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java index 86c8486ef4..e0cc791f85 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/PlanPostProcessors.java @@ -63,7 +63,9 @@ public class PlanPostProcessors { builder.add(new MergeProjectPostProcessor()); builder.add(new RecomputeLogicalPropertiesProcessor()); builder.add(new AddOffsetIntoDistribute()); - builder.add(new CommonSubExpressionOpt()); + if (cascadesContext.getConnectContext().getSessionVariable().enableCommonSubExpression) { + builder.add(new CommonSubExpressionOpt()); + } // DO NOT replace PLAN NODE from here builder.add(new TopNScanOpt()); builder.add(new FragmentProcessor()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index d1ff6550b3..57afbf1c20 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -908,6 +908,10 @@ public class SessionVariable implements Serializable, Writable { varType = VariableAnnotation.EXPERIMENTAL, needForward = true) private int parallelScanMaxScannersCount = 48; + @VariableMgr.VarAttr(name = "enable_common_sub_expression", fuzzy = false, + varType = VariableAnnotation.EXPERIMENTAL, needForward = true) + public boolean enableCommonSubExpression = false; + @VariableMgr.VarAttr(name = PARALLEL_SCAN_MIN_ROWS_PER_SCANNER, fuzzy = true, varType = VariableAnnotation.EXPERIMENTAL, needForward = true) private long parallelScanMinRowsPerScanner = 16384; // 16K diff --git a/regression-test/suites/tpch_sf0.1_p1/sql/cse.groovy b/regression-test/suites/tpch_sf0.1_p1/sql/cse.groovy index d5989cf68b..c4c1ecb2e6 100644 --- a/regression-test/suites/tpch_sf0.1_p1/sql/cse.groovy +++ b/regression-test/suites/tpch_sf0.1_p1/sql/cse.groovy @@ -20,6 +20,7 @@ // and modified by Doris. suite('cse') { + sql "set enable_common_sub_expression=true" def q1 = """select s_suppkey,n_regionkey,(s_suppkey + n_regionkey) + 1 as x, (s_suppkey + n_regionkey) + 2 as y from supplier join nation on s_nationkey=n_nationkey order by s_suppkey , n_regionkey limit 10 ; """