Repository: kylin
Updated Branches:
  refs/heads/2.0.x 848df9cad -> 98f9adc44


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
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() {
+        }
+    }
 }

Reply via email to