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 89b96f474351d2dbaf9ca5bb756a127ae0b46e85 Author: Yaguang Jia <jiayagu...@foxmail.com> AuthorDate: Thu Dec 29 14:32:39 2022 +0800 KYLIN-5452 Optimise constant queries, add cache for getBindable * KYLIN-5452 Optimise constant queries, add cache for getBindable * KYLIN-5452 update calcite version --- pom.xml | 2 +- .../org/apache/kylin/rest/KylinPrepareEnvListener.java | 3 +++ .../java/org/apache/kylin/common/KylinConfigBase.java | 7 +++++++ .../org/apache/kylin/common/KylinConfigBaseTest.java | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 611087bf48..e1a852cf3c 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ <scala-retry>0.3.0</scala-retry> <!-- Calcite Version --> - <calcite.version>1.116.0-kylin-4.x-r024</calcite.version> + <calcite.version>1.116.0-kylin-4.x-r025</calcite.version> <avatica.version>4.x_1.10-r01</avatica.version> <!-- Hadoop Common deps, keep compatible with hadoop2.version --> diff --git a/src/common-service/src/main/java/org/apache/kylin/rest/KylinPrepareEnvListener.java b/src/common-service/src/main/java/org/apache/kylin/rest/KylinPrepareEnvListener.java index 0109c7fea5..483acca4b9 100644 --- a/src/common-service/src/main/java/org/apache/kylin/rest/KylinPrepareEnvListener.java +++ b/src/common-service/src/main/java/org/apache/kylin/rest/KylinPrepareEnvListener.java @@ -81,6 +81,9 @@ public class KylinPrepareEnvListener implements EnvironmentPostProcessor, Ordere } else { Unsafe.setProperty("calcite.convert-multiple-columns-in-to-or", "false"); } + Unsafe.setProperty("calcite.bindable.cache.maxSize", Integer.toString(config.getCalciteBindableCacheSize())); + Unsafe.setProperty("calcite.bindable.cache.concurrencyLevel", + Integer.toString(config.getCalciteBindableCacheConcurrencyLevel())); TimeZoneUtils.setDefaultTimeZone(config); DelegationTokenManager delegationTokenManager = new DelegationTokenManager(); 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 773fa0af0f..f6b9622033 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 @@ -2469,6 +2469,13 @@ public abstract class KylinConfigBase implements Serializable { return Boolean.parseBoolean(getOptional("kylin.query.calcite.aggregate-pushdown-enabled", FALSE)); } + public int getCalciteBindableCacheSize() { + return Integer.parseInt(getOptional("kylin.query.calcite.bindable.cache.maxSize", "10")); + } + public int getCalciteBindableCacheConcurrencyLevel() { + return Integer.parseInt(getOptional("kylin.query.calcite.bindable.cache.concurrencyLevel", "5")); + } + public int getEventPollIntervalSecond() { return Integer.parseInt(getOptional("kylin.job.event.poll-interval-second", "60")); } diff --git a/src/core-common/src/test/java/org/apache/kylin/common/KylinConfigBaseTest.java b/src/core-common/src/test/java/org/apache/kylin/common/KylinConfigBaseTest.java index a241b73b4c..23f39ccd1f 100644 --- a/src/core-common/src/test/java/org/apache/kylin/common/KylinConfigBaseTest.java +++ b/src/core-common/src/test/java/org/apache/kylin/common/KylinConfigBaseTest.java @@ -943,6 +943,10 @@ class KylinConfigBaseTest { new PropertiesEntity("kylin.metrics.hdfs-periodic-calculation-interval", "5m", 300000L)); map.put("isSkipResourceCheck", new PropertiesEntity("kylin.build.resource.skip-resource-check", "false", false)); + map.put("getCalciteBindableCacheSize", + new PropertiesEntity("kylin.query.calcite.bindable.cache.maxSize", "10", 10)); + map.put("getCalciteBindableCacheConcurrencyLevel", + new PropertiesEntity("kylin.query.calcite.bindable.cache.concurrencyLevel", "5", 5)); } @Test @@ -1400,6 +1404,20 @@ class KylinConfigBaseTest { config.setProperty("kylin.storage.check-quota-enabled", "true"); assertTrue(config.isStorageQuotaEnabled()); } + @Test + void testCalciteBindableCacheSize() { + KylinConfig config = KylinConfig.getInstanceFromEnv(); + assertEquals(10, config.getCalciteBindableCacheSize()); + config.setProperty("kylin.query.calcite.bindable.cache.maxSize", "7"); + assertEquals(7, config.getCalciteBindableCacheSize()); + } + @Test + void testCalciteBindableCacheConcurrencyLevel() { + KylinConfig config = KylinConfig.getInstanceFromEnv(); + assertEquals(5, config.getCalciteBindableCacheConcurrencyLevel()); + config.setProperty("kylin.query.calcite.bindable.cache.concurrencyLevel", "3"); + assertEquals(3, config.getCalciteBindableCacheConcurrencyLevel()); + } } class EnvironmentUpdateUtils {