minor improvement on limit
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/c0b87039 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c0b87039 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c0b87039 Branch: refs/heads/master-cdh5.7 Commit: c0b87039eb45ee94c6ecab71e27d14ee81bac8e2 Parents: af8940d Author: Hongbin Ma <mahong...@apache.org> Authored: Thu Dec 8 16:01:54 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Thu Dec 8 16:04:09 2016 +0800 ---------------------------------------------------------------------- .../main/java/org/apache/kylin/storage/StorageContext.java | 9 +++++++-- .../java/org/apache/kylin/query/relnode/OLAPContext.java | 2 -- .../java/org/apache/kylin/query/relnode/OLAPLimitRel.java | 1 - 3 files changed, 7 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/c0b87039/core-storage/src/main/java/org/apache/kylin/storage/StorageContext.java ---------------------------------------------------------------------- diff --git a/core-storage/src/main/java/org/apache/kylin/storage/StorageContext.java b/core-storage/src/main/java/org/apache/kylin/storage/StorageContext.java index 719cab6..bc43a87 100644 --- a/core-storage/src/main/java/org/apache/kylin/storage/StorageContext.java +++ b/core-storage/src/main/java/org/apache/kylin/storage/StorageContext.java @@ -92,7 +92,12 @@ public class StorageContext { } public void setLimit(int l) { - this.limit = l; + if (l > limit) { + //cases like : select price from (select * from kylin_sales limit 10) limit 5000 + logger.info("Setting limit to {} but in current olap context, the limit is already {}, won't apply", l, limit); + } else { + this.limit = l; + } } public int getOffset() { @@ -126,7 +131,7 @@ public class StorageContext { if (tempPushDownLimit == Integer.MAX_VALUE) { return; } - + int pushDownLimitMax = KylinConfig.getInstanceFromEnv().getStoragePushDownLimitMax(); if (!realization.supportsLimitPushDown()) { logger.info("Not enabling limit push down because cube storage type not supported"); http://git-wip-us.apache.org/repos/asf/kylin/blob/c0b87039/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java index 5fb2c5c..8278fb0 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java @@ -135,8 +135,6 @@ public class OLAPContext { // rewrite info public Map<String, RelDataType> rewriteFields = new HashMap<>(); - public int limit; - // hive query public String sql = ""; http://git-wip-us.apache.org/repos/asf/kylin/blob/c0b87039/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java index d6569f6..f0af863 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java @@ -81,7 +81,6 @@ public class OLAPLimitRel extends SingleRel implements OLAPRel { Number limitValue = (Number) (((RexLiteral) localFetch).getValue()); int limit = limitValue.intValue(); this.context.storageContext.setLimit(limit); - this.context.limit = limit; if (localOffset != null) { Number offsetValue = (Number) (((RexLiteral) localOffset).getValue());