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/29 03:04:14 UTC
[23/27] incubator-kylin git commit: KYLIN-943 filter the queries that doesn’t match topN
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/132747d4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/132747d4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/132747d4
Branch: refs/heads/2.x-staging
Commit: 132747d4182627bd977198a385a0880119f53f08
Parents: 5753d4c
Author: shaofengshi <sh...@apache.org>
Authored: Wed Sep 23 14:47:22 2015 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Tue Sep 29 09:02:21 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/132747d4/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);
}
}