KYLIN-2302 push the value in statement.setMaxRows(10) to storage
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/cda4df41 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/cda4df41 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/cda4df41 Branch: refs/heads/master-hbase0.98 Commit: cda4df4106551f17311fde737d349af91790b3da Parents: e875e87 Author: Hongbin Ma <mahong...@apache.org> Authored: Tue Feb 28 18:18:36 2017 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Tue Feb 28 18:18:36 2017 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/storage/StorageContext.java | 16 +++++++++++----- .../apache/kylin/query/relnode/OLAPLimitRel.java | 2 ++ 2 files changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/cda4df41/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 4713d71..a3a851f 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 @@ -20,6 +20,7 @@ package org.apache.kylin.storage; import java.util.concurrent.atomic.AtomicLong; +import org.apache.kylin.common.debug.BackdoorToggles; import org.apache.kylin.cube.cuboid.Cuboid; import org.apache.kylin.metadata.realization.IRealization; import org.slf4j.Logger; @@ -35,6 +36,7 @@ public class StorageContext { private String connUrl; private int limit = Integer.MAX_VALUE; + private boolean overlookOuterLimit = false; private int offset = 0; private int finalPushDownLimit = Integer.MAX_VALUE; private boolean hasSort = false; @@ -62,7 +64,15 @@ public class StorageContext { } public int getLimit() { - return limit; + if (overlookOuterLimit) { + return limit; + } else { + return Math.min(limit, BackdoorToggles.getStatementMaxRows()); + } + } + + public void setOverlookOuterLimit() { + this.overlookOuterLimit = true; } public void setLimit(int l) { @@ -81,10 +91,6 @@ public class StorageContext { this.offset = offset; } - public void enableLimit() { - this.limitEnabled = true; - } - public boolean isLimitEnabled() { return this.limitEnabled; } http://git-wip-us.apache.org/repos/asf/kylin/blob/cda4df41/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 8179807..2a248cc 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 @@ -91,6 +91,8 @@ public class OLAPLimitRel extends SingleRel implements OLAPRel { } context.afterLimit = true; + } else { + this.context.storageContext.setOverlookOuterLimit(); } }