This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 15ff1d04cbe015317bb4828fd0eb09c60e4247f8 Author: Bowen Song <bowen.s...@kyligence.io> AuthorDate: Thu Nov 24 20:19:12 2022 +0800 KYLIN-5415 Rename the merge rule parameters to conform open source requirement --- .../org/apache/kylin/common/KylinConfigBase.java | 6 ++-- .../kylin/query/engine/SqlToRelNodeTest.java | 41 ++++++++++++++-------- .../kap/query/optrule/KapProjectMergeRule.java | 2 +- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index 4405eede60..d3665bd475 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -3721,10 +3721,10 @@ public abstract class KylinConfigBase implements Serializable { } public boolean isProjectMergeWithBloatEnabled() { - return Boolean.parseBoolean(getOptional("kylin.query.kap-project-merge-with-bloat-enabled", "true")); + return Boolean.parseBoolean(getOptional("kylin.query.project-merge-with-bloat-enabled", "true")); } - public int getKapProjectMergeRuleBloatThreshold() { - return Integer.parseInt(getOptional("kylin.query.kap-project-merge-bloat-threshold", "0")); + public int getProjectMergeRuleBloatThreshold() { + return Integer.parseInt(getOptional("kylin.query.project-merge-bloat-threshold", "0")); } } diff --git a/src/kylin-it/src/test/java/org/apache/kylin/query/engine/SqlToRelNodeTest.java b/src/kylin-it/src/test/java/org/apache/kylin/query/engine/SqlToRelNodeTest.java index 64f5ea16d2..1e2a0816fb 100644 --- a/src/kylin-it/src/test/java/org/apache/kylin/query/engine/SqlToRelNodeTest.java +++ b/src/kylin-it/src/test/java/org/apache/kylin/query/engine/SqlToRelNodeTest.java @@ -33,6 +33,7 @@ import org.apache.calcite.util.Litmus; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.util.Pair; import org.apache.kylin.query.rules.CalciteRuleTestBase; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -57,6 +58,11 @@ public class SqlToRelNodeTest extends CalciteRuleTestBase { queryExec = new QueryExec(PROJECT, config); } + @After + public void destroy() { + cleanupTestMetadata(); + } + @Override protected DiffRepository getDiffRepo() { return diff; @@ -89,36 +95,41 @@ public class SqlToRelNodeTest extends CalciteRuleTestBase { String sql = "select q.x + q.x from( select (p.v + p.v) as x from (select (case when TRANS_ID > 60 then 1 else 0 end) v from test_kylin_fact) p)q"; try (KylinConfig.SetAndUnsetThreadLocalConfig autoUnset = KylinConfig.setAndUnsetThreadLocalConfig(config)) { - config.setProperty("kylin.query.kap-project-merge-with-bloat-enabled", "false"); + config.setProperty("kylin.query.project-merge-with-bloat-enabled", "false"); QueryExec exec1 = new QueryExec(PROJECT, config); RelRoot relRoot = exec1.sqlToRelRoot(sql); RelNode rel = exec1.optimize(relRoot).rel; String realPlan = NL + RelOptUtil.toString(rel); diff.assertEquals("bloat_merge_sql.bloat_disabled", "${bloat_merge_sql.bloat_disabled}", realPlan); + } - config.setProperty("kylin.query.kap-project-merge-with-bloat-enabled", "true"); + try (KylinConfig.SetAndUnsetThreadLocalConfig autoUnset = KylinConfig.setAndUnsetThreadLocalConfig(config)) { + config.setProperty("kylin.query.project-merge-with-bloat-enabled", "true"); QueryExec exec2 = new QueryExec(PROJECT, config); - relRoot = exec2.sqlToRelRoot(sql); - rel = exec2.optimize(relRoot).rel; - realPlan = NL + RelOptUtil.toString(rel); + RelRoot relRoot = exec2.sqlToRelRoot(sql); + RelNode rel = exec2.optimize(relRoot).rel; + String realPlan = NL + RelOptUtil.toString(rel); diff.assertEquals("bloat_merge_sql.bloat_enabled", "${bloat_merge_sql.bloat_enabled}", realPlan); + } - config.setProperty("kylin.query.kap-project-merge-with-bloat-enabled", "true"); - config.setProperty("kylin.query.kap-project-merge-bloat-threshold", "5"); + try (KylinConfig.SetAndUnsetThreadLocalConfig autoUnset = KylinConfig.setAndUnsetThreadLocalConfig(config)) { + config.setProperty("kylin.query.project-merge-with-bloat-enabled", "true"); + config.setProperty("kylin.query.project-merge-bloat-threshold", "5"); QueryExec exec3 = new QueryExec(PROJECT, config); - relRoot = exec3.sqlToRelRoot(sql); - rel = exec3.optimize(relRoot).rel; - realPlan = NL + RelOptUtil.toString(rel); + RelRoot relRoot = exec3.sqlToRelRoot(sql); + RelNode rel = exec3.optimize(relRoot).rel; + String realPlan = NL + RelOptUtil.toString(rel); diff.assertEquals("bloat_merge_sql.bloat_enabled_bloat_5", "${bloat_merge_sql.bloat_enabled_bloat_5}", realPlan); + } - config.setProperty("kylin.query.kap-project-merge-bloat-threshold", "100"); + try (KylinConfig.SetAndUnsetThreadLocalConfig autoUnset = KylinConfig.setAndUnsetThreadLocalConfig(config)) { + config.setProperty("kylin.query.project-merge-bloat-threshold", "100"); QueryExec exec4 = new QueryExec(PROJECT, config); - relRoot = exec4.sqlToRelRoot(sql); - rel = exec4.optimize(relRoot).rel; - realPlan = NL + RelOptUtil.toString(rel); + RelRoot relRoot = exec4.sqlToRelRoot(sql); + RelNode rel = exec4.optimize(relRoot).rel; + String realPlan = NL + RelOptUtil.toString(rel); diff.assertEquals("bloat_merge_sql.bloat_disabled", "${bloat_merge_sql.bloat_disabled}", realPlan); } - } /** diff --git a/src/query/src/main/java/io/kyligence/kap/query/optrule/KapProjectMergeRule.java b/src/query/src/main/java/io/kyligence/kap/query/optrule/KapProjectMergeRule.java index 8aefc1d645..231dec8e00 100644 --- a/src/query/src/main/java/io/kyligence/kap/query/optrule/KapProjectMergeRule.java +++ b/src/query/src/main/java/io/kyligence/kap/query/optrule/KapProjectMergeRule.java @@ -123,7 +123,7 @@ public class KapProjectMergeRule extends RelOptRule { final List<RexNode> pushedProjects; if (KylinConfig.getInstanceFromEnv().isProjectMergeWithBloatEnabled()) { pushedProjects = RelOptUtil.pushPastProjectUnlessBloat(topProject.getProjects(), - bottomProject, KylinConfig.getInstanceFromEnv().getKapProjectMergeRuleBloatThreshold()); + bottomProject, KylinConfig.getInstanceFromEnv().getProjectMergeRuleBloatThreshold()); if (pushedProjects == null) { // Merged projects are significantly more complex. Do not merge. return;