You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2015/09/23 08:47:33 UTC

incubator-kylin git commit: KYLIN-943 filter the queries that doesn’t match topN

Repository: incubator-kylin
Updated Branches:
  refs/heads/KYLIN-943 d330c0257 -> 847dc963e


KYLIN-943 filter the queries that doesn’t match topN

Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/847dc963
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/847dc963
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/847dc963

Branch: refs/heads/KYLIN-943
Commit: 847dc963e755e6c2452491df57c83fadd7ac425b
Parents: d330c02
Author: shaofengshi <sh...@apache.org>
Authored: Wed Sep 23 14:47:22 2015 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Wed Sep 23 14:47:22 2015 +0800

----------------------------------------------------------------------
 .../apache/kylin/cube/CubeCapabilityChecker.java | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/847dc963/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
index b14e531..3bb246a 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
@@ -86,6 +86,13 @@ public class CubeCapabilityChecker {
      * @return
      */
     public static boolean isMatchedWithTopN(CubeInstance cube, SQLDigest digest) {
+
+        boolean hasTopN = hasTopNMeasure(cube.getDescriptor());
+        
+        if (hasTopN == false) {
+            return false;
+        }
+        
         Collection<TblColRef> dimensionColumns = CubeDimensionDeriver.getDimensionColumns(digest);
         
         boolean matchDimensions = isMatchedWithDimensions(dimensionColumns, cube);
@@ -126,13 +133,15 @@ public class CubeCapabilityChecker {
             if (measure.getFunction().isTopN()) {
                 List<TblColRef> cols = measure.getFunction().getParameter().getColRefs();
                 TblColRef displayCol = cols.get(cols.size() - 1);
-                dimensionColumnsCopy.remove(displayCol);
-                if(isMatchedWithDimensions(dimensionColumnsCopy, cube)) {
-                    if (measure.getFunction().isCompatible(onlyFunction)) {
-                        return true;
+                if (digest.groupbyColumns.contains(displayCol)) {
+                    dimensionColumnsCopy.remove(displayCol);
+                    if (isMatchedWithDimensions(dimensionColumnsCopy, cube)) {
+                        if (measure.getFunction().isCompatible(onlyFunction)) {
+                            return true;
+                        }
                     }
+                    dimensionColumnsCopy.add(displayCol);
                 }
-                dimensionColumnsCopy.add(displayCol);
             }
         }