Repository: kylin
Updated Branches:
  refs/heads/yang22 55f87f477 -> a6abf16b4


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/a6abf16b
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/a6abf16b
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/a6abf16b

Branch: refs/heads/yang22
Commit: a6abf16b4f7ff934330d5d6c9898f86c9b0295fd
Parents: 55f87f4
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:01:57 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/a6abf16b/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/a6abf16b/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/a6abf16b/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());

Reply via email to