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 <rogershijich...@hotmail.com>
Authored: Sun Sep 3 22:12:57 2017 +0800
Committer: Roger Shi <rogershijich...@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;
 

Reply via email to