Repository: kylin Updated Branches: refs/heads/2.0.x-hbase0.98 a0e845d93 -> 4ee45f473 (forced update)
minor, add prepare only backdoor toggle Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/98f9adc4 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/98f9adc4 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/98f9adc4 Branch: refs/heads/2.0.x-hbase0.98 Commit: 98f9adc441f36ca0c7c7ebc5cd937e5a0a189e37 Parents: 848df9c Author: Li Yang <liy...@apache.org> Authored: Wed Jun 14 18:00:10 2017 +0800 Committer: Li Yang <liy...@apache.org> Committed: Wed Jun 14 18:00:10 2017 +0800 ---------------------------------------------------------------------- .../kylin/common/debug/BackdoorToggles.java | 14 ++++++++++ .../kylin/query/enumerator/OLAPQuery.java | 28 +++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/98f9adc4/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java b/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java index 95d5d62..8cb48b6 100644 --- a/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java +++ b/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java @@ -106,6 +106,10 @@ public class BackdoorToggles { return Integer.valueOf(v); } + public static boolean getPrepareOnly() { + return getBoolean(DEBUG_TOGGLE_PREPARE_ONLY); + } + private static String getString(String key) { Map<String, String> toggles = _backdoorToggles.get(); if (toggles == null) { @@ -230,6 +234,16 @@ public class BackdoorToggles { */ public final static String DEBUG_TOGGLE_DUMPED_PARTITION_DIR = "DEBUG_TOGGLE_DUMPED_PARTITION_DIR"; + /** + * set DEBUG_TOGGLE_PREPARE_ONLY="true" to prepare the sql statement and get its result set metadata + * + example:(put it into request body) + "backdoorToggles": { + "DEBUG_TOGGLE_PREPARE_ONLY": "true" + } + */ + public final static String DEBUG_TOGGLE_PREPARE_ONLY = "DEBUG_TOGGLE_PREPARE_ONLY"; + // properties on statement may go with this "channel" too /** * set ATTR_STATEMENT_MAX_ROWS="maxRows" to statement's max rows property http://git-wip-us.apache.org/repos/asf/kylin/blob/98f9adc4/query/src/main/java/org/apache/kylin/query/enumerator/OLAPQuery.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/enumerator/OLAPQuery.java b/query/src/main/java/org/apache/kylin/query/enumerator/OLAPQuery.java index 8318a07..63b37d0 100644 --- a/query/src/main/java/org/apache/kylin/query/enumerator/OLAPQuery.java +++ b/query/src/main/java/org/apache/kylin/query/enumerator/OLAPQuery.java @@ -22,6 +22,7 @@ import org.apache.calcite.DataContext; import org.apache.calcite.linq4j.AbstractEnumerable; import org.apache.calcite.linq4j.Enumerable; import org.apache.calcite.linq4j.Enumerator; +import org.apache.kylin.common.debug.BackdoorToggles; import org.apache.kylin.query.relnode.OLAPContext; /** @@ -52,13 +53,34 @@ public class OLAPQuery extends AbstractEnumerable<Object[]> implements Enumerabl OLAPContext olapContext = OLAPContext.getThreadLocalContextById(contextId); switch (type) { case OLAP: - return new OLAPEnumerator(olapContext, optiqContext); + return BackdoorToggles.getPrepareOnly() ? new EmptyEnumerator() : new OLAPEnumerator(olapContext, optiqContext); case LOOKUP_TABLE: - return new LookupTableEnumerator(olapContext); + return BackdoorToggles.getPrepareOnly() ? new EmptyEnumerator() : new LookupTableEnumerator(olapContext); case HIVE: - return new HiveEnumerator(olapContext); + return BackdoorToggles.getPrepareOnly() ? new EmptyEnumerator() : new HiveEnumerator(olapContext); default: throw new IllegalArgumentException("Wrong type " + type + "!"); } } + + private static class EmptyEnumerator implements Enumerator<Object[]> { + + @Override + public void close() { + } + + @Override + public Object[] current() { + return null; + } + + @Override + public boolean moveNext() { + return false; + } + + @Override + public void reset() { + } + } }