You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/09/15 14:42:22 UTC
[02/48] kylin git commit: minor,
provide option to refuse sql without aggcall
minor, provide option to refuse sql without aggcall
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/adb04cda
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/adb04cda
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/adb04cda
Branch: refs/heads/ranger
Commit: adb04cda694e6f9d534ab32adb57ed97f080ced0
Parents: 3f11a59
Author: Roger Shi <ro...@hotmail.com>
Authored: Sun Sep 3 22:12:57 2017 +0800
Committer: Roger Shi <ro...@gmail.com>
Committed: Sun Sep 3 22:27:39 2017 +0800
----------------------------------------------------------------------
.../java/org/apache/kylin/common/KylinConfigBase.java | 4 ++++
.../src/main/java/org/apache/kylin/cube/CubeInstance.java | 10 ++++++++++
2 files changed, 14 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/adb04cda/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index 9533400..78edd67 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -973,6 +973,10 @@ abstract public class KylinConfigBase implements Serializable {
return Boolean.valueOf(getOptional("kylin.query.skip-empty-segments", "true"));
}
+ public boolean isDisableCubeNoAggSQL() {
+ return Boolean.valueOf(getOptional("kylin.query.disable-cube-noagg-sql", "false"));
+ }
+
public boolean isStreamAggregateEnabled() {
return Boolean.parseBoolean(getOptional("kylin.query.stream-aggregate-enabled", "true"));
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/adb04cda/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
index fad942c..9f3336c 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java
@@ -292,6 +292,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
@Override
public CapabilityResult isCapable(SQLDigest digest) {
CapabilityResult result = CubeCapabilityChecker.check(this, digest);
+ result = localCapacityCheck(digest, result);
if (result.capable) {
result.cost = getCost(digest);
for (CapabilityInfluence i : result.influences) {
@@ -303,6 +304,15 @@ public class CubeInstance extends RootPersistentEntity implements IRealization,
return result;
}
+ private CapabilityResult localCapacityCheck(SQLDigest digest, CapabilityResult originResult) {
+ if (this.getDescriptor().getConfig().isDisableCubeNoAggSQL()) {
+ CapabilityResult notCap = new CapabilityResult();
+ notCap.capable = false;
+ return digest.aggregations.isEmpty() ? notCap : originResult ;
+ }
+ return originResult;
+ }
+
public int getCost(SQLDigest digest) {
int calculatedCost = cost;