You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/02/07 07:09:41 UTC
[kylin] 12/15: KYLIN-5415 Rename the merge rule parameters to conform open source requirement
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 <bo...@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;