drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jacq...@apache.org
Subject [17/27] git commit: DRILL-1166: Session option to enable/disable debug information in runtime generated Java code
Date Sun, 27 Jul 2014 18:47:03 GMT
DRILL-1166: Session option to enable/disable debug information in runtime generated Java code

+ By default, debug options are enabled but can be disabled by setting the session option
`exec.java_compiler_debug` to false.
+ Allow the defaults for compiler options to be set through configuration.


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/97a9a4c1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/97a9a4c1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/97a9a4c1

Branch: refs/heads/master
Commit: 97a9a4c155da4f5a3604c24db7e8ab5ec47797ce
Parents: 2a4d6f1
Author: Aditya Kishore <aditya@maprtech.com>
Authored: Mon Jul 21 16:09:44 2014 -0700
Committer: Jacques Nadeau <jacques@apache.org>
Committed: Fri Jul 25 14:34:18 2014 -0700

----------------------------------------------------------------------
 .../exec/compile/AbstractClassCompiler.java     | 29 +++-----
 .../drill/exec/compile/ClassCompiler.java       | 30 --------
 .../drill/exec/compile/JDKClassCompiler.java    | 20 ++----
 .../drill/exec/compile/JaninoClassCompiler.java |  5 +-
 .../drill/exec/compile/QueryClassLoader.java    | 33 ++++++---
 .../apache/drill/exec/ops/FragmentContext.java  |  2 +-
 .../server/options/SystemOptionManager.java     |  1 +
 .../src/main/resources/drill-module.conf        |  5 ++
 .../exec/compile/TestClassTransformation.java   | 76 +++++++++++++++-----
 .../exec/compile/TestLargeFileCompilation.java  |  8 ++-
 .../exec/fn/impl/TestNewMathFunctions.java      |  1 +
 .../physical/impl/TestComparisonFunctions.java  |  1 +
 .../impl/TestImplicitCastFunctions.java         |  1 +
 .../exec/physical/impl/TestSimpleFunctions.java |  3 +
 .../exec/physical/impl/TestStringFunctions.java |  1 +
 .../physical/impl/common/TestHashTable.java     |  1 +
 .../physical/impl/filter/TestSimpleFilter.java  |  2 +
 .../exec/physical/impl/join/TestMergeJoin.java  |  1 +
 .../physical/impl/limit/TestSimpleLimit.java    |  3 +
 .../impl/project/TestSimpleProjection.java      |  1 +
 .../exec/physical/impl/sort/TestSimpleSort.java |  2 +
 .../physical/impl/svremover/TestSVRemover.java  |  1 +
 .../physical/impl/union/TestSimpleUnion.java    |  1 +
 .../drill/jdbc/test/JdbcTestQueryBase.java      |  2 +-
 24 files changed, 132 insertions(+), 98 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/compile/AbstractClassCompiler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/AbstractClassCompiler.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/AbstractClassCompiler.java
index 91588b8..98c51c6 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/AbstractClassCompiler.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/AbstractClassCompiler.java
@@ -24,17 +24,13 @@ import org.apache.drill.exec.compile.ClassTransformer.ClassNames;
 import org.apache.drill.exec.exception.ClassTransformationException;
 import org.codehaus.commons.compiler.CompileException;
 
-public abstract class AbstractClassCompiler implements ClassCompiler {
-  static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(AbstractClassCompiler.class);
+public abstract class AbstractClassCompiler {
+  protected boolean debug = false;
 
-  protected boolean debugLines = true;
-  protected boolean debugVars = true;
-  protected boolean debugSource = true;
-
-  protected abstract byte[][] getByteCode(ClassNames className, String sourcecode)
-      throws CompileException, IOException, ClassNotFoundException, ClassTransformationException;
+  AbstractClassCompiler(boolean debug) {
+    this.debug = debug;
+  }
 
-  @Override
   public byte[][] getClassByteCode(ClassNames className, String sourceCode)
       throws CompileException, IOException, ClassNotFoundException, ClassTransformationException
{
     if(getLogger().isDebugEnabled()){
@@ -43,15 +39,9 @@ public abstract class AbstractClassCompiler implements ClassCompiler {
     return getByteCode(className, sourceCode);
   }
 
-  public void setDebuggingOptions(boolean debugSource, boolean debugLines, boolean debugVars)
{
-    this.debugSource = debugSource;
-    this.debugLines = debugLines;
-    this.debugVars = debugVars;
-    updateDebugOptions();
-  }
-
   protected String prefixLineNumbers(String code) {
-    if (!debugLines) return code;
+    if (!debug) return code;
+
     StringBuilder out = new StringBuilder();
     int i = 1;
     for (String line : code.split("\n")) {
@@ -68,8 +58,9 @@ public abstract class AbstractClassCompiler implements ClassCompiler {
     return out.toString();
   }
 
-  protected void updateDebugOptions() { } // default no-op implementation
+  protected abstract byte[][] getByteCode(ClassNames className, String sourcecode)
+      throws CompileException, IOException, ClassNotFoundException, ClassTransformationException;
 
-  protected org.slf4j.Logger getLogger() { return logger; }
+  protected abstract org.slf4j.Logger getLogger();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompiler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompiler.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompiler.java
deleted file mode 100644
index fb080f8..0000000
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ClassCompiler.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.exec.compile;
-
-import java.io.IOException;
-
-import org.apache.drill.exec.compile.ClassTransformer.ClassNames;
-import org.apache.drill.exec.exception.ClassTransformationException;
-import org.codehaus.commons.compiler.CompileException;
-
-interface ClassCompiler {
-
-  public abstract byte[][] getClassByteCode(ClassNames className, String sourcecode) throws
CompileException, IOException, ClassNotFoundException, ClassTransformationException ;
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
index 2bbf4f8..e1f52ca 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JDKClassCompiler.java
@@ -36,19 +36,20 @@ import com.google.common.collect.Lists;
 class JDKClassCompiler extends AbstractClassCompiler {
   static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(JDKClassCompiler.class);
 
-  private Collection<String> compilerOptions;
-  private DiagnosticListener<JavaFileObject> listener;
+  private final Collection<String> compilerOptions;
+  private final DiagnosticListener<JavaFileObject> listener;
   private final JavaCompiler compiler;
   private final DrillJavaFileManager fileManager;
 
-  public JDKClassCompiler(ClassLoader classLoader) {
+  public JDKClassCompiler(ClassLoader classLoader, boolean debug) {
+    super(debug);
     this.compiler = ToolProvider.getSystemJavaCompiler();
     if (compiler == null) {
       throw new UnsupportedOperationException("JDK Java compiler not available - probably
you're running a JRE, not a JDK");
     }
     this.listener = new DrillDiagnosticListener();
     this.fileManager = new DrillJavaFileManager(compiler.getStandardFileManager(listener,
null, Charsets.UTF_8), classLoader);
-    updateDebugOptions();
+    this.compilerOptions = Lists.newArrayList(this.debug ? "-g:source,lines,vars" : "-g:none");
   }
 
   @Override
@@ -80,17 +81,6 @@ class JDKClassCompiler extends AbstractClassCompiler {
     }
   }
 
-  protected void updateDebugOptions() {
-    StringBuilder sb = new StringBuilder("-g:");
-    if (this.debugSource) sb.append("source,");
-    if (this.debugLines) sb.append("lines,");
-    if (this.debugVars) sb.append("vars,");
-    if (sb.length() == 3) { // "-g:"
-      sb.append("none,");
-    }
-    compilerOptions = Lists.newArrayList(sb.substring(0, sb.length()-1));
-  }
-
   protected org.slf4j.Logger getLogger() { return logger; }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JaninoClassCompiler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JaninoClassCompiler.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JaninoClassCompiler.java
index 4b17598..aa16b83 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JaninoClassCompiler.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/JaninoClassCompiler.java
@@ -36,7 +36,8 @@ public class JaninoClassCompiler extends AbstractClassCompiler {
 
   private IClassLoader compilationClassLoader;
 
-  public JaninoClassCompiler(ClassLoader parentClassLoader) {
+  public JaninoClassCompiler(ClassLoader parentClassLoader, boolean debug) {
+    super(debug);
     this.compilationClassLoader = new ClassLoaderIClassLoader(parentClassLoader);
   }
 
@@ -46,7 +47,7 @@ public class JaninoClassCompiler extends AbstractClassCompiler {
     Scanner scanner = new Scanner((String) null, reader);
     Java.CompilationUnit compilationUnit = new Parser(scanner).parseCompilationUnit();
     ClassFile[] classFiles = new UnitCompiler(compilationUnit, compilationClassLoader)
-                                  .compileUnit(this.debugSource, this.debugLines, this.debugVars);
+                                  .compileUnit(this.debug, this.debug, this.debug);
 
     byte[][] byteCodes = new byte[classFiles.length][];
     for(int i = 0; i < classFiles.length; i++){

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
index 8f1abcb..8de14ec 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/QueryClassLoader.java
@@ -24,12 +24,14 @@ import java.util.Arrays;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.drill.common.config.DrillConfig;
 import org.apache.drill.common.exceptions.ExpressionParsingException;
 import org.apache.drill.exec.compile.ClassTransformer.ClassNames;
 import org.apache.drill.exec.exception.ClassTransformationException;
 import org.apache.drill.exec.server.options.OptionManager;
 import org.apache.drill.exec.server.options.OptionValidator;
 import org.apache.drill.exec.server.options.OptionValue;
+import org.apache.drill.exec.server.options.TypeValidators.BooleanValidator;
 import org.apache.drill.exec.server.options.TypeValidators.LongValidator;
 import org.apache.drill.exec.server.options.TypeValidators.StringValidator;
 import org.codehaus.commons.compiler.CompileException;
@@ -55,8 +57,15 @@ public class QueryClassLoader extends URLClassLoader {
     }
   };
 
+  public static final String JAVA_COMPILER_DEBUG_OPTION = "exec.java_compiler_debug";
+  public static final OptionValidator JAVA_COMPILER_DEBUG = new BooleanValidator(JAVA_COMPILER_DEBUG_OPTION,
true);
+
   public static final String JAVA_COMPILER_JANINO_MAXSIZE_OPTION = "exec.java_compiler_janino_maxsize";
   public static final OptionValidator JAVA_COMPILER_JANINO_MAXSIZE = new LongValidator(JAVA_COMPILER_JANINO_MAXSIZE_OPTION,
256*1024);
+  
+  public static final String JAVA_COMPILER_CONFIG = "drill.exec.compile.compiler";
+  public static final String JAVA_COMPILER_DEBUG_CONFIG = "drill.exec.compile.debug";
+  public static final String JAVA_COMPILER_JANINO_MAXSIZE_CONFIG = "drill.exec.compile.janino_maxsize";
 
   private ClassCompilerSelector compilerSelector;
 
@@ -64,9 +73,9 @@ public class QueryClassLoader extends URLClassLoader {
   
   private ConcurrentMap<String, byte[]> customClasses = new MapMaker().concurrencyLevel(4).makeMap();
 
-  public QueryClassLoader(OptionManager sessionOptions) {
+  public QueryClassLoader(DrillConfig config, OptionManager sessionOptions) {
     super(new URL[0]);
-    compilerSelector = new ClassCompilerSelector(sessionOptions);
+    compilerSelector = new ClassCompilerSelector(config, sessionOptions);
   }
 
   public long getNextClassIndex(){
@@ -101,23 +110,27 @@ public class QueryClassLoader extends URLClassLoader {
     private final CompilerPolicy policy;
     private final long janinoThreshold;
 
-    private ClassCompiler jdkClassCompiler;
-    private ClassCompiler janinoClassCompiler;
+    private final AbstractClassCompiler jdkClassCompiler;
+    private final AbstractClassCompiler janinoClassCompiler;
 
 
-    ClassCompilerSelector(OptionManager sessionOptions) {
+    ClassCompilerSelector(DrillConfig config, OptionManager sessionOptions) {
       OptionValue value = sessionOptions.getOption(JAVA_COMPILER_OPTION);
-      this.policy = (value != null) ? CompilerPolicy.valueOf(value.string_val.toUpperCase())
: CompilerPolicy.DEFAULT;
+      this.policy = CompilerPolicy.valueOf((value != null) ? value.string_val.toUpperCase()
: config.getString(JAVA_COMPILER_CONFIG).toUpperCase());
+
       value = sessionOptions.getOption(JAVA_COMPILER_JANINO_MAXSIZE_OPTION);
-      this.janinoThreshold = (value != null) ? value.num_val : JAVA_COMPILER_JANINO_MAXSIZE.getDefault().num_val;
+      this.janinoThreshold = (value != null) ? value.num_val : config.getLong(JAVA_COMPILER_JANINO_MAXSIZE_CONFIG);
+
+      value = sessionOptions.getOption(JAVA_COMPILER_DEBUG_OPTION);
+      boolean debug = (value != null) ? value.bool_val : config.getBoolean(JAVA_COMPILER_DEBUG_CONFIG);
 
-      this.janinoClassCompiler = new JaninoClassCompiler(QueryClassLoader.this);
-      this.jdkClassCompiler = new JDKClassCompiler(QueryClassLoader.this);
+      this.janinoClassCompiler = (policy == CompilerPolicy.JANINO || policy == CompilerPolicy.DEFAULT)
? new JaninoClassCompiler(QueryClassLoader.this, debug) : null;
+      this.jdkClassCompiler = (policy == CompilerPolicy.JDK || policy == CompilerPolicy.DEFAULT)
? new JDKClassCompiler(QueryClassLoader.this, debug) : null;
     }
 
     private byte[][] getClassByteCode(ClassNames className, String sourceCode)
         throws CompileException, ClassNotFoundException, ClassTransformationException, IOException
{
-      ClassCompiler classCompiler;
+      AbstractClassCompiler classCompiler;
       if (policy == CompilerPolicy.JDK || (policy == CompilerPolicy.DEFAULT && sourceCode.length()
> janinoThreshold)) {
         classCompiler = jdkClassCompiler;
       } else {

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java
index 659a20c..c426918 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentContext.java
@@ -100,7 +100,7 @@ public class FragmentContext implements Closeable {
       throw new ExecutionSetupException("Failure while reading plan options.", e);
     }
     this.allocator = context.getAllocator().getChildAllocator(fragment.getHandle(), fragment.getMemInitial(),
fragment.getMemMax());
-    this.loader = new QueryClassLoader(sessionOptions);
+    this.loader = new QueryClassLoader(dbContext.getConfig(), sessionOptions);
   }
 
   public OptionManager getOptions(){

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
index bb45264..6a8cc5e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java
@@ -73,6 +73,7 @@ public class SystemOptionManager implements OptionManager{
       ExecConstants.MAX_HASH_TABLE_SIZE,
       QueryClassLoader.JAVA_COMPILER_VALIDATOR,
       QueryClassLoader.JAVA_COMPILER_JANINO_MAXSIZE,
+      QueryClassLoader.JAVA_COMPILER_DEBUG,
       ExecConstants.ENABLE_VERBOSE_ERRORS
   };
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/main/resources/drill-module.conf
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/resources/drill-module.conf b/exec/java-exec/src/main/resources/drill-module.conf
index 81a2bc2..f99c2fa 100644
--- a/exec/java-exec/src/main/resources/drill-module.conf
+++ b/exec/java-exec/src/main/resources/drill-module.conf
@@ -118,6 +118,11 @@ drill.exec: {
       size: 100000000
     }
   },
+  compile: {
+    compiler: "DEFAULT",
+    debug: true,
+    janino_maxsize: 262144
+  },
   sort: {
     purge.threshold : 100,
     external: {

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
index beac02f..e1fefdf 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestClassTransformation.java
@@ -17,24 +17,27 @@
  */
 package org.apache.drill.exec.compile;
 
+import java.io.IOException;
+
 import org.apache.drill.BaseTestQuery;
-import org.apache.drill.common.config.DrillConfig;
+import org.apache.drill.exec.compile.ClassTransformer.ClassSet;
 import org.apache.drill.exec.compile.sig.GeneratorMapping;
 import org.apache.drill.exec.compile.sig.MappingSet;
+import org.apache.drill.exec.exception.ClassTransformationException;
 import org.apache.drill.exec.expr.ClassGenerator;
 import org.apache.drill.exec.expr.CodeGenerator;
-import org.apache.drill.exec.expr.fn.FunctionImplementationRegistry;
-import org.apache.drill.exec.server.options.OptionManager;
 import org.apache.drill.exec.server.options.OptionValue;
 import org.apache.drill.exec.server.options.OptionValue.OptionType;
 import org.apache.drill.exec.server.options.SessionOptionManager;
+import org.codehaus.commons.compiler.CompileException;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class TestClassTransformation extends BaseTestQuery {
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestClassTransformation.class);
 
-  private static final int ITERATION_COUNT = 1;
+  private static final int ITERATION_COUNT = Integer.valueOf(System.getProperty("TestClassTransformation.iteration",
"1"));
 
   private static SessionOptionManager sessionOptions;
 
@@ -47,48 +50,83 @@ public class TestClassTransformation extends BaseTestQuery {
   public void testJaninoClassCompiler() throws Exception {
     logger.debug("Testing JaninoClassCompiler");
     sessionOptions.setOption(OptionValue.createString(OptionType.SESSION, QueryClassLoader.JAVA_COMPILER_OPTION,
QueryClassLoader.CompilerPolicy.JANINO.name()));
-    QueryClassLoader loader = new QueryClassLoader(sessionOptions);
+    QueryClassLoader loader = new QueryClassLoader(config, sessionOptions);
     for (int i = 0; i < ITERATION_COUNT; i++) {
       compilationInnerClass(loader);
     }
+    loader.close();
   }
 
   @Test
   public void testJDKClassCompiler() throws Exception {
     logger.debug("Testing JDKClassCompiler");
     sessionOptions.setOption(OptionValue.createString(OptionType.SESSION, QueryClassLoader.JAVA_COMPILER_OPTION,
QueryClassLoader.CompilerPolicy.JDK.name()));
-    QueryClassLoader loader = new QueryClassLoader(sessionOptions);
+    QueryClassLoader loader = new QueryClassLoader(config, sessionOptions);
     for (int i = 0; i < ITERATION_COUNT; i++) {
       compilationInnerClass(loader);
     }
+    loader.close();
+  }
+
+  @Test
+  public void testCompilationNoDebug() throws CompileException, ClassNotFoundException, ClassTransformationException,
IOException {
+    CodeGenerator<ExampleInner> cg = newCodeGenerator(ExampleInner.class, ExampleTemplateWithInner.class);
+    ClassSet classSet = new ClassSet(null, cg.getDefinition().getTemplateClassName(), cg.getMaterializedClassName());
+    String sourceCode = cg.generate();
+    sessionOptions.setOption(OptionValue.createString(OptionType.SESSION, QueryClassLoader.JAVA_COMPILER_OPTION,
QueryClassLoader.CompilerPolicy.JDK.name()));
+
+    sessionOptions.setOption(OptionValue.createBoolean(OptionType.SESSION, QueryClassLoader.JAVA_COMPILER_DEBUG_OPTION,
false));
+    QueryClassLoader loader = new QueryClassLoader(config, sessionOptions);
+    final byte[][] codeWithoutDebug = loader.getClassByteCode(classSet.generated, sourceCode);
+    loader.close();
+    int sizeWithoutDebug = 0;
+    for (byte[] bs : codeWithoutDebug) {
+      sizeWithoutDebug += bs.length;
+    }
+
+    sessionOptions.setOption(OptionValue.createBoolean(OptionType.SESSION, QueryClassLoader.JAVA_COMPILER_DEBUG_OPTION,
true));
+    loader = new QueryClassLoader(config, sessionOptions);
+    final byte[][] codeWithDebug = loader.getClassByteCode(classSet.generated, sourceCode);
+    loader.close();
+    int sizeWithDebug = 0;
+    for (byte[] bs : codeWithDebug) {
+      sizeWithDebug += bs.length;
+    }
+
+    Assert.assertTrue("Debug code is smaller than optimized code!!!", sizeWithDebug >
sizeWithoutDebug);
+    logger.debug("Optimized code is {}% smaller than debug code.", (int)((sizeWithDebug -
sizeWithoutDebug)/(double)sizeWithDebug*100));
   }
 
   /**
    * Do a test of a three level class to ensure that nested code generators works correctly.
    * @throws Exception
    */
-  public void compilationInnerClass(QueryClassLoader loader) throws Exception{
-    final TemplateClassDefinition<ExampleInner> template = new TemplateClassDefinition<>(ExampleInner.class,
ExampleTemplateWithInner.class);
-    CodeGenerator<ExampleInner> cg = CodeGenerator.get(template, bit.getContext().getFunctionImplementationRegistry());
+  private void compilationInnerClass(QueryClassLoader loader) throws Exception{
+    CodeGenerator<ExampleInner> cg = newCodeGenerator(ExampleInner.class, ExampleTemplateWithInner.class);
+
+    ClassTransformer ct = new ClassTransformer();
+    ExampleInner t = ct.getImplementationClass(loader, cg.getDefinition(), cg.generate(),
cg.getMaterializedClassName());
 
-    ClassGenerator<ExampleInner> root = cg.getRoot();
+    t.doOutside();
+    t.doInsideOutside();
+  }
+
+  private <T, X extends T> CodeGenerator<T> newCodeGenerator(Class<T> iface,
Class<X> impl) {
+    final TemplateClassDefinition<T> template = new TemplateClassDefinition<T>(iface,
impl);
+    CodeGenerator<T> cg = CodeGenerator.get(template, bit.getContext().getFunctionImplementationRegistry());
+
+    ClassGenerator<T> root = cg.getRoot();
     root.setMappingSet(new MappingSet(new GeneratorMapping("doOutside", null, null, null)));
     root.getSetupBlock().directStatement("System.out.println(\"outside\");");
 
 
-    ClassGenerator<ExampleInner> inner = root.getInnerGenerator("TheInnerClass");
+    ClassGenerator<T> inner = root.getInnerGenerator("TheInnerClass");
     inner.setMappingSet(new MappingSet(new GeneratorMapping("doInside", null, null, null)));
     inner.getSetupBlock().directStatement("System.out.println(\"inside\");");
 
-    ClassGenerator<ExampleInner> doubleInner = inner.getInnerGenerator("DoubleInner");
+    ClassGenerator<T> doubleInner = inner.getInnerGenerator("DoubleInner");
     doubleInner.setMappingSet(new MappingSet(new GeneratorMapping("doDouble", null, null,
null)));
     doubleInner.getSetupBlock().directStatement("System.out.println(\"double\");");
-
-    ClassTransformer ct = new ClassTransformer();
-    ExampleInner t = ct.getImplementationClass(loader, cg.getDefinition(), cg.generate(),
cg.getMaterializedClassName());
-
-    t.doOutside();
-    t.doInsideOutside();
+    return cg;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestLargeFileCompilation.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestLargeFileCompilation.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestLargeFileCompilation.java
index fecf66b..f6f06ad 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestLargeFileCompilation.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/compile/TestLargeFileCompilation.java
@@ -28,7 +28,7 @@ public class TestLargeFileCompilation extends BaseTestQuery {
 
   private static final String LARGE_QUERY;
 
-  private static final int ITERATION_COUNT = 1;
+  private static final int ITERATION_COUNT = Integer.valueOf(System.getProperty("TestLargeFileCompilation.iteration",
"1"));
 
   static {
     StringBuilder sb = new StringBuilder("select \n");
@@ -45,6 +45,12 @@ public class TestLargeFileCompilation extends BaseTestQuery {
     runTest();
   }
 
+  @Test
+  public void testWithDEFAULT() throws Exception {
+    test(String.format("alter session set `%s`='DEFAULT'", QueryClassLoader.JAVA_COMPILER_OPTION));
+    runTest();
+  }
+
   @Test(expected=org.apache.drill.exec.rpc.RpcException.class)
   public void testWithJanino() throws Exception {
     test(String.format("alter session set `%s`='JANINO'", QueryClassLoader.JAVA_COMPILER_OPTION));

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
index 328dd9c..62a224e 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestNewMathFunctions.java
@@ -82,6 +82,7 @@ public class TestNewMathFunctions {
 	      bitContext.getMetrics(); result = new MetricRegistry();
 	      bitContext.getAllocator(); result = new TopLevelAllocator();
 	      bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+	      bitContext.getConfig(); result = c;
 	    }};
 
 	    String planString = Resources.toString(Resources.getResource(planPath), Charsets.UTF_8);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestComparisonFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestComparisonFunctions.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestComparisonFunctions.java
index 172bbed..6cb6ec1 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestComparisonFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestComparisonFunctions.java
@@ -61,6 +61,7 @@ public class TestComparisonFunctions extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     String planString = Resources.toString(Resources.getResource(COMPARISON_TEST_PHYSICAL_PLAN),
Charsets.UTF_8).replaceAll("EXPRESSION", expression);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestImplicitCastFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestImplicitCastFunctions.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestImplicitCastFunctions.java
index ba3b646..3e4081d 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestImplicitCastFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestImplicitCastFunctions.java
@@ -71,6 +71,7 @@ public class TestImplicitCastFunctions extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     String planString = Resources.toString(Resources.getResource(planPath), Charsets.UTF_8);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFunctions.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFunctions.java
index b032c51..18478a3 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestSimpleFunctions.java
@@ -155,6 +155,7 @@ public class TestSimpleFunctions extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     PhysicalPlanReader reader = new PhysicalPlanReader(c, c.getMapper(), CoordinationProtos.DrillbitEndpoint.getDefaultInstance());
@@ -195,6 +196,7 @@ public class TestSimpleFunctions extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     PhysicalPlanReader reader = new PhysicalPlanReader(c, c.getMapper(), CoordinationProtos.DrillbitEndpoint.getDefaultInstance());
@@ -236,6 +238,7 @@ public class TestSimpleFunctions extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     PhysicalPlanReader reader = new PhysicalPlanReader(c, c.getMapper(), CoordinationProtos.DrillbitEndpoint.getDefaultInstance());

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestStringFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestStringFunctions.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestStringFunctions.java
index cb9e749..0f91366 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestStringFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestStringFunctions.java
@@ -74,6 +74,7 @@ public class TestStringFunctions extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     String planString = Resources.toString(Resources.getResource(planPath), Charsets.UTF_8);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/TestHashTable.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/TestHashTable.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/TestHashTable.java
index e887584..e3b4daf 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/TestHashTable.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/common/TestHashTable.java
@@ -50,6 +50,7 @@ private SimpleRootExec doTest(final DrillbitContext bitContext, UserClientConnec
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/filter/TestSimpleFilter.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/filter/TestSimpleFilter.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/filter/TestSimpleFilter.java
index 1f87371..2def4a6 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/filter/TestSimpleFilter.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/filter/TestSimpleFilter.java
@@ -58,6 +58,7 @@ public class TestSimpleFilter extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 
@@ -85,6 +86,7 @@ public class TestSimpleFilter extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     PhysicalPlanReader reader = new PhysicalPlanReader(c, c.getMapper(), CoordinationProtos.DrillbitEndpoint.getDefaultInstance());

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoin.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoin.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoin.java
index 7afef56..65d51dc 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoin.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoin.java
@@ -76,6 +76,7 @@ public class TestMergeJoin extends PopUnitTestBase {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     PhysicalPlanReader reader = new PhysicalPlanReader(c, c.getMapper(), CoordinationProtos.DrillbitEndpoint.getDefaultInstance());

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/limit/TestSimpleLimit.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/limit/TestSimpleLimit.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/limit/TestSimpleLimit.java
index 0caf6d9..0d5d622 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/limit/TestSimpleLimit.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/limit/TestSimpleLimit.java
@@ -61,6 +61,7 @@ public class TestSimpleLimit extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     verifyLimitCount(bitContext, connection, "test1.json", 5);
@@ -72,6 +73,7 @@ public class TestSimpleLimit extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     verifyLimitCount(bitContext, connection, "test3.json", 95);
@@ -88,6 +90,7 @@ public class TestSimpleLimit extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
     verifyLimitCount(bitContext, connection, "test2.json", 69999);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/project/TestSimpleProjection.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/project/TestSimpleProjection.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/project/TestSimpleProjection.java
index a05a632..63fb54b 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/project/TestSimpleProjection.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/project/TestSimpleProjection.java
@@ -66,6 +66,7 @@ public class TestSimpleProjection extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/sort/TestSimpleSort.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/sort/TestSimpleSort.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/sort/TestSimpleSort.java
index 6e9ecb1..f73889d 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/sort/TestSimpleSort.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/sort/TestSimpleSort.java
@@ -63,6 +63,7 @@ public class TestSimpleSort extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 
@@ -111,6 +112,7 @@ public class TestSimpleSort extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/TestSVRemover.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/TestSVRemover.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/TestSVRemover.java
index 6032681..e05a170 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/TestSVRemover.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/svremover/TestSVRemover.java
@@ -63,6 +63,7 @@ public class TestSVRemover extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/union/TestSimpleUnion.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/union/TestSimpleUnion.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/union/TestSimpleUnion.java
index 1fc2164..576f017 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/union/TestSimpleUnion.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/union/TestSimpleUnion.java
@@ -61,6 +61,7 @@ public class TestSimpleUnion extends ExecTest {
       bitContext.getMetrics(); result = new MetricRegistry();
       bitContext.getAllocator(); result = new TopLevelAllocator();
       bitContext.getOperatorCreatorRegistry(); result = new OperatorCreatorRegistry(c);
+      bitContext.getConfig(); result = c;
     }};
 
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/97a9a4c1/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcTestQueryBase.java
----------------------------------------------------------------------
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcTestQueryBase.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcTestQueryBase.java
index 33a25b7..6ab7619 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcTestQueryBase.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/JdbcTestQueryBase.java
@@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit;
 public class JdbcTestQueryBase extends JdbcTest {
   // Set a timeout unless we're debugging.
   @Rule
-  public TestRule TIMEOUT = TestTools.getTimeoutRule(20000);
+  public TestRule TIMEOUT = TestTools.getTimeoutRule(40000);
 
   protected static final String WORKING_PATH;
   static{


Mime
View raw message