http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
index 523b721..ddf48ed 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
@@ -35,6 +35,7 @@ import org.apache.calcite.sql.SqlOperatorBinding;
 import org.apache.calcite.sql.fun.SqlAvgAggFunction;
 import org.apache.calcite.sql.parser.SqlParserPos;
 import org.apache.calcite.sql.type.SqlReturnTypeInference;
+import org.apache.calcite.sql.type.SqlTypeFamily;
 import org.apache.calcite.sql.type.SqlTypeName;
 
 import org.apache.drill.common.expression.ExpressionPosition;
@@ -73,7 +74,7 @@ public class TypeInferenceUtils {
       .put(TypeProtos.MinorType.TIMESTAMP, SqlTypeName.TIMESTAMP)
       .put(TypeProtos.MinorType.VARBINARY, SqlTypeName.VARBINARY)
       .put(TypeProtos.MinorType.INTERVALYEAR, SqlTypeName.INTERVAL_YEAR_MONTH)
-      .put(TypeProtos.MinorType.INTERVALDAY, SqlTypeName.INTERVAL_DAY_TIME)
+      .put(TypeProtos.MinorType.INTERVALDAY, SqlTypeName.INTERVAL_DAY)
       .put(TypeProtos.MinorType.MAP, SqlTypeName.MAP)
       .put(TypeProtos.MinorType.LIST, SqlTypeName.ARRAY)
       .put(TypeProtos.MinorType.LATE, SqlTypeName.ANY)
@@ -97,8 +98,19 @@ public class TypeInferenceUtils {
       .put(SqlTypeName.TIME, TypeProtos.MinorType.TIME)
       .put(SqlTypeName.TIMESTAMP, TypeProtos.MinorType.TIMESTAMP)
       .put(SqlTypeName.VARBINARY, TypeProtos.MinorType.VARBINARY)
+      .put(SqlTypeName.INTERVAL_YEAR, TypeProtos.MinorType.INTERVALYEAR)
       .put(SqlTypeName.INTERVAL_YEAR_MONTH, TypeProtos.MinorType.INTERVALYEAR)
-      .put(SqlTypeName.INTERVAL_DAY_TIME, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_MONTH, TypeProtos.MinorType.INTERVALYEAR)
+      .put(SqlTypeName.INTERVAL_DAY, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_DAY_HOUR, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_DAY_MINUTE, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_DAY_SECOND, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_HOUR, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_HOUR_MINUTE, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_HOUR_SECOND, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_MINUTE, TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_MINUTE_SECOND, 
TypeProtos.MinorType.INTERVALDAY)
+      .put(SqlTypeName.INTERVAL_SECOND, TypeProtos.MinorType.INTERVALDAY)
 
       // SqlTypeName.CHAR is the type for Literals in Calcite, Drill treats 
Literals as VARCHAR also
       .put(SqlTypeName.CHAR, TypeProtos.MinorType.VARCHAR)
@@ -734,13 +746,13 @@ public class TypeInferenceUtils {
                                                              SqlTypeName 
sqlTypeName,
                                                              boolean 
isNullable) {
     RelDataType type;
-    if (sqlTypeName == SqlTypeName.INTERVAL_DAY_TIME) {
+    if (sqlTypeName.getFamily() == SqlTypeFamily.INTERVAL_DAY_TIME) {
       type = typeFactory.createSqlIntervalType(
           new SqlIntervalQualifier(
               TimeUnit.DAY,
               TimeUnit.MINUTE,
               SqlParserPos.ZERO));
-    } else if (sqlTypeName == SqlTypeName.INTERVAL_YEAR_MONTH) {
+    } else if (sqlTypeName.getFamily() == SqlTypeFamily.INTERVAL_YEAR_MONTH) {
       type = typeFactory.createSqlIntervalType(
           new SqlIntervalQualifier(
               TimeUnit.YEAR,

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
index 9515b3b..93113cb 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
@@ -23,6 +23,10 @@ import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.plan.RelOptCostImpl;
+import org.apache.calcite.plan.RelOptLattice;
+import org.apache.calcite.plan.RelOptMaterialization;
 import org.apache.calcite.plan.RelOptPlanner;
 import org.apache.calcite.plan.RelOptRule;
 import org.apache.calcite.plan.RelOptUtil;
@@ -37,6 +41,8 @@ import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.core.TableFunctionScan;
 import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rel.logical.LogicalValues;
+import org.apache.calcite.rel.metadata.CachingRelMetadataProvider;
+import org.apache.calcite.rel.metadata.ChainedRelMetadataProvider;
 import org.apache.calcite.rel.metadata.JaninoRelMetadataProvider;
 import org.apache.calcite.rel.metadata.RelMetadataProvider;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
@@ -46,13 +52,13 @@ import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.rex.RexUtil;
 import org.apache.calcite.sql.SqlExplainLevel;
 import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.TypedSqlNode;
 import org.apache.calcite.sql.validate.SqlValidatorUtil;
 import org.apache.calcite.tools.Program;
 import org.apache.calcite.tools.Programs;
 import org.apache.calcite.tools.RelConversionException;
 import org.apache.calcite.tools.RuleSet;
 import org.apache.calcite.tools.ValidationException;
+import org.apache.calcite.util.Pair;
 import org.apache.drill.common.JSONOptions;
 import org.apache.drill.common.logical.PlanProperties;
 import org.apache.drill.common.logical.PlanProperties.Generator.ResultMode;
@@ -189,13 +195,13 @@ public class DefaultSqlHandler extends AbstractSqlHandler 
{
 
   protected ConvertedRelNode validateAndConvert(SqlNode sqlNode) throws 
ForemanSetupException, RelConversionException, ValidationException {
     final SqlNode rewrittenSqlNode = rewrite(sqlNode);
-    final TypedSqlNode validatedTypedSqlNode = validateNode(rewrittenSqlNode);
-    final SqlNode validated = validatedTypedSqlNode.getSqlNode();
+    final Pair<SqlNode, RelDataType> validatedTypedSqlNode = 
validateNode(rewrittenSqlNode);
+    final SqlNode validated = validatedTypedSqlNode.getKey();
 
     RelNode rel = convertToRel(validated);
     rel = preprocessNode(rel);
 
-    return new ConvertedRelNode(rel, validatedTypedSqlNode.getType());
+    return new ConvertedRelNode(rel, validatedTypedSqlNode.getValue());
   }
 
   /**
@@ -375,7 +381,9 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
         hepPgmBldr.addRuleInstance(rule);
       }
 
-      final HepPlanner planner = new HepPlanner(hepPgmBldr.build(), 
context.getPlannerSettings());
+      // Set noDAG = true to avoid caching problems which lead to incorrect 
Drill work.
+      final HepPlanner planner = new HepPlanner(hepPgmBldr.build(), 
context.getPlannerSettings(), true, null,
+          RelOptCostImpl.FACTORY);
 
       JaninoRelMetadataProvider relMetadataProvider = 
JaninoRelMetadataProvider.of(DrillDefaultRelMetadataProvider.INSTANCE);
       RelMetadataQuery.THREAD_PROVIDERS.set(relMetadataProvider);
@@ -397,7 +405,8 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
       Preconditions.checkArgument(planner instanceof VolcanoPlanner,
           "Cluster is expected to be constructed using VolcanoPlanner. Was 
actually of type %s.", planner.getClass()
               .getName());
-      output = program.run(planner, input, toTraits);
+      output = program.run(planner, input, toTraits,
+          ImmutableList.<RelOptMaterialization>of(), 
ImmutableList.<RelOptLattice>of());
 
       break;
     }
@@ -613,9 +622,9 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
 
   }
 
-  private TypedSqlNode validateNode(SqlNode sqlNode) throws 
ValidationException, RelConversionException, ForemanSetupException {
+  private Pair<SqlNode, RelDataType> validateNode(SqlNode sqlNode) throws 
ValidationException, RelConversionException, ForemanSetupException {
     final SqlNode sqlNodeValidated = config.getConverter().validate(sqlNode);
-    final TypedSqlNode typedSqlNode = new TypedSqlNode(sqlNodeValidated, 
config.getConverter().getOutputType(
+    final Pair<SqlNode, RelDataType> typedSqlNode = new 
Pair<>(sqlNodeValidated, config.getConverter().getOutputType(
         sqlNodeValidated));
 
     // Check if the unsupported functionality is used
@@ -634,7 +643,7 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
   }
 
   private RelNode convertToRel(SqlNode node) throws RelConversionException {
-    final RelNode convertedNode = config.getConverter().toRel(node);
+    final RelNode convertedNode = config.getConverter().toRel(node).rel;
     log("INITIAL", convertedNode, logger, null);
     return transform(PlannerType.HEP, PlannerPhase.WINDOW_REWRITE, 
convertedNode);
   }
@@ -674,7 +683,7 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
 
     final List<String> fieldNames2 = SqlValidatorUtil.uniquify(
         validatedRowType.getFieldNames(),
-        SqlValidatorUtil.F_SUGGESTER2,
+        SqlValidatorUtil.EXPR_SUGGESTER,
         
rel.getCluster().getTypeFactory().getTypeSystem().isSchemaCaseSensitive());
 
     RelDataType newRowType = 
RexUtil.createStructType(rel.getCluster().getTypeFactory(), projections, 
fieldNames2);

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeSchemaHandler.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeSchemaHandler.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeSchemaHandler.java
index 869829a..b41f880 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeSchemaHandler.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeSchemaHandler.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.core.io.CharacterEscapes;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.base.Joiner;
 import org.apache.calcite.schema.SchemaPlus;
+import org.apache.calcite.sql.SqlDescribeSchema;
 import org.apache.calcite.sql.SqlIdentifier;
 import org.apache.calcite.sql.SqlNode;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
@@ -31,7 +32,6 @@ import org.apache.drill.common.exceptions.UserException;
 import org.apache.drill.exec.physical.PhysicalPlan;
 import org.apache.drill.exec.planner.sql.DirectPlan;
 import org.apache.drill.exec.planner.sql.SchemaUtilites;
-import org.apache.drill.exec.planner.sql.parser.SqlDescribeSchema;
 import org.apache.drill.exec.store.StoragePlugin;
 import org.apache.drill.exec.store.dfs.FileSystemPlugin;
 import org.apache.drill.exec.store.dfs.FileSystemSchemaFactory;

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java
index 72b1aef..0311dfc 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DescribeTableHandler.java
@@ -29,6 +29,7 @@ import static 
org.apache.drill.exec.store.ischema.InfoSchemaConstants.TAB_COLUMN
 import java.util.List;
 
 import org.apache.calcite.schema.SchemaPlus;
+import org.apache.calcite.sql.SqlDescribeTable;
 import org.apache.calcite.sql.SqlIdentifier;
 import org.apache.calcite.sql.SqlLiteral;
 import org.apache.calcite.sql.SqlNode;
@@ -41,7 +42,7 @@ import org.apache.calcite.util.Util;
 import org.apache.drill.common.exceptions.UserException;
 import org.apache.drill.exec.planner.sql.SchemaUtilites;
 import org.apache.drill.exec.planner.sql.parser.DrillParserUtil;
-import org.apache.drill.exec.planner.sql.parser.SqlDescribeTable;
+import org.apache.drill.exec.planner.sql.parser.DrillSqlDescribeTable;
 import org.apache.drill.exec.work.foreman.ForemanSetupException;
 
 import com.google.common.collect.ImmutableList;
@@ -54,7 +55,7 @@ public class DescribeTableHandler extends DefaultSqlHandler {
   /** Rewrite the parse tree as SELECT ... FROM INFORMATION_SCHEMA.COLUMNS ... 
*/
   @Override
   public SqlNode rewrite(SqlNode sqlNode) throws RelConversionException, 
ForemanSetupException {
-    SqlDescribeTable node = unwrap(sqlNode, SqlDescribeTable.class);
+    DrillSqlDescribeTable node = unwrap(sqlNode, DrillSqlDescribeTable.class);
 
     try {
       List<SqlNode> selectList =

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/FindLimit0Visitor.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/FindLimit0Visitor.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/FindLimit0Visitor.java
index d5216e7..166c350 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/FindLimit0Visitor.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/FindLimit0Visitor.java
@@ -49,6 +49,7 @@ import org.apache.drill.exec.record.MaterializedField;
 import org.apache.drill.exec.store.AbstractRecordReader;
 import org.apache.drill.exec.store.direct.DirectGroupScan;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -71,8 +72,11 @@ public class FindLimit0Visitor extends RelShuttleImpl {
       ImmutableSet.<SqlTypeName>builder()
           .add(SqlTypeName.INTEGER, SqlTypeName.BIGINT, SqlTypeName.FLOAT, 
SqlTypeName.DOUBLE,
               SqlTypeName.VARCHAR, SqlTypeName.BOOLEAN, SqlTypeName.DATE, 
SqlTypeName.TIME,
-              SqlTypeName.TIMESTAMP, SqlTypeName.INTERVAL_YEAR_MONTH, 
SqlTypeName.INTERVAL_DAY_TIME,
-              SqlTypeName.CHAR)
+              SqlTypeName.TIMESTAMP, SqlTypeName.INTERVAL_YEAR, 
SqlTypeName.INTERVAL_YEAR_MONTH,
+              SqlTypeName.INTERVAL_MONTH, SqlTypeName.INTERVAL_DAY, 
SqlTypeName.INTERVAL_DAY_HOUR,
+              SqlTypeName.INTERVAL_DAY_MINUTE, 
SqlTypeName.INTERVAL_DAY_SECOND, SqlTypeName.INTERVAL_HOUR,
+              SqlTypeName.INTERVAL_HOUR_MINUTE, 
SqlTypeName.INTERVAL_HOUR_SECOND, SqlTypeName.INTERVAL_MINUTE,
+              SqlTypeName.INTERVAL_MINUTE_SECOND, SqlTypeName.INTERVAL_SECOND, 
SqlTypeName.CHAR)
           .build();
 
   /**
@@ -231,5 +235,26 @@ public class FindLimit0Visitor extends RelShuttleImpl {
     @Override
     public void close() throws Exception {
     }
+
+    /**
+     * Represents RelDataTypeReader content as string, used in query plan json.
+     * Example: RelDataTypeReader{columnNames=[col1], 
columnTypes=[INTERVALYEAR-OPTIONAL]}
+     *
+     * @return string representation of RelDataTypeReader content
+     */
+    @Override
+    public String toString() {
+      StringBuilder builder = new StringBuilder();
+      builder.append("RelDataTypeReader{columnNames=");
+      builder.append(columnNames).append(", columnTypes=");
+      List<String> columnTypesList = new ArrayList<>(columnTypes.size());
+      for (TypeProtos.MajorType columnType : columnTypes) {
+        columnTypesList.add(columnType.getMinorType().toString() + "-" + 
columnType.getMode().toString());
+      }
+      builder.append(columnTypesList);
+      builder.append("}");
+
+      return builder.toString();
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java
index e9d0dca..4d0f34c 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/CompoundIdentifierConverter.java
@@ -163,7 +163,7 @@ public class CompoundIdentifierConverter extends SqlShuttle 
{
     rules.put(SqlSelect.class, R(D, E, D, E, E, E, E, E, D, D));
     rules.put(SqlCreateTable.class, R(D, D, D, E, D, D));
     rules.put(SqlCreateView.class, R(D, E, E, D));
-    rules.put(SqlDescribeTable.class, R(D, D, E));
+    rules.put(DrillSqlDescribeTable.class, R(D, D, E));
     rules.put(SqlDropView.class, R(D, D));
     rules.put(SqlShowFiles.class, R(D));
     rules.put(SqlShowSchemas.class, R(D, D));
@@ -173,7 +173,6 @@ public class CompoundIdentifierConverter extends SqlShuttle 
{
     rules.put(SqlDropTable.class, R(D, D));
     rules.put(SqlRefreshMetadata.class, R(D));
     rules.put(SqlSetOption.class, R(D, D, D));
-    rules.put(SqlDescribeSchema.class, R(D));
     rules.put(SqlCreateFunction.class, R(D));
     rules.put(SqlDropFunction.class, R(D));
     REWRITE_RULES = ImmutableMap.copyOf(rules);

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlDescribeTable.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlDescribeTable.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlDescribeTable.java
new file mode 100644
index 0000000..c97d8c3
--- /dev/null
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillSqlDescribeTable.java
@@ -0,0 +1,73 @@
+/*
+* 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.planner.sql.parser;
+
+import org.apache.calcite.sql.SqlCall;
+import org.apache.calcite.sql.SqlDescribeTable;
+import org.apache.calcite.sql.SqlIdentifier;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.SqlLiteral;
+import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.SqlSpecialOperator;
+import org.apache.calcite.sql.SqlWriter;
+import org.apache.calcite.sql.parser.SqlParserPos;
+import org.apache.calcite.util.ImmutableNullableList;
+
+import java.util.List;
+
+/**
+ * Sql parser tree node to represent statement:
+ * { DESCRIBE | DESC } tblname [col_name | wildcard ]
+ */
+public class DrillSqlDescribeTable extends SqlDescribeTable {
+
+  private final SqlNode columnQualifier;
+
+  public static final SqlSpecialOperator OPERATOR =
+    new SqlSpecialOperator("DESCRIBE_TABLE", SqlKind.DESCRIBE_TABLE) {
+    @Override
+    public SqlCall createCall(SqlLiteral functionQualifier, SqlParserPos pos, 
SqlNode... operands) {
+      return new DrillSqlDescribeTable(pos, (SqlIdentifier) operands[0], 
(SqlIdentifier) operands[1], operands[2]);
+    }
+  };
+
+  public DrillSqlDescribeTable(SqlParserPos pos, SqlIdentifier table, 
SqlIdentifier column, SqlNode columnQualifier) {
+    super(pos, table, column);
+    this.columnQualifier = columnQualifier;
+  }
+
+  @Override
+  public List<SqlNode> getOperandList() {
+    return ImmutableNullableList.<SqlNode>of(getTable(), getColumn(), 
columnQualifier);
+  }
+
+  @Override
+  public void unparse(SqlWriter writer, int leftPrec, int rightPrec) {
+    super.unparse(writer, leftPrec, rightPrec);
+    if (columnQualifier != null) {
+      columnQualifier.unparse(writer, leftPrec, rightPrec);
+    }
+  }
+
+  public SqlNode getColumnQualifier() { return columnQualifier; }
+
+  @Override public SqlOperator getOperator() {
+    return OPERATOR;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeSchema.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeSchema.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeSchema.java
deleted file mode 100644
index 7ea6940..0000000
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeSchema.java
+++ /dev/null
@@ -1,81 +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
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
- * 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.planner.sql.parser;
-
-import org.apache.calcite.sql.SqlCall;
-import org.apache.calcite.sql.SqlIdentifier;
-import org.apache.calcite.sql.SqlKind;
-import org.apache.calcite.sql.SqlLiteral;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.SqlOperator;
-import org.apache.calcite.sql.SqlSpecialOperator;
-import org.apache.calcite.sql.SqlWriter;
-import org.apache.calcite.sql.parser.SqlParserPos;
-import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler;
-import org.apache.drill.exec.planner.sql.handlers.DescribeSchemaHandler;
-import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Sql parse tree node to represent statement:
- * DESCRIBE {SCHEMA | DATABASE} schema_name
- */
-public class SqlDescribeSchema extends DrillSqlCall {
-
-  private final SqlIdentifier schema;
-
-  public static final SqlSpecialOperator OPERATOR =
-      new SqlSpecialOperator("DESCRIBE_SCHEMA", SqlKind.OTHER) {
-        @Override
-        public SqlCall createCall(SqlLiteral functionQualifier, SqlParserPos 
pos, SqlNode... operands) {
-          return new SqlDescribeSchema(pos, (SqlIdentifier) operands[0]);
-        }
-      };
-
-  public SqlDescribeSchema(SqlParserPos pos, SqlIdentifier schema) {
-    super(pos);
-    this.schema = schema;
-  }
-
-  @Override
-  public SqlOperator getOperator() {
-    return OPERATOR;
-  }
-
-  @Override
-  public List<SqlNode> getOperandList() {
-    return Collections.singletonList((SqlNode) schema);
-  }
-
-  @Override
-  public void unparse(SqlWriter writer, int leftPrec, int rightPrec) {
-    writer.keyword("DESCRIBE");
-    writer.keyword("SCHEMA");
-    schema.unparse(writer, leftPrec, rightPrec);
-  }
-
-  @Override
-  public AbstractSqlHandler getSqlHandler(SqlHandlerConfig config) {
-    return new DescribeSchemaHandler(config);
-  }
-
-  public SqlIdentifier getSchema() { return schema; }
-
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java
deleted file mode 100644
index 3a09aea..0000000
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/SqlDescribeTable.java
+++ /dev/null
@@ -1,102 +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.planner.sql.parser;
-
-import java.util.List;
-
-import org.apache.calcite.tools.Planner;
-
-import org.apache.drill.exec.ops.QueryContext;
-import org.apache.drill.exec.planner.sql.handlers.AbstractSqlHandler;
-import org.apache.drill.exec.planner.sql.handlers.DescribeTableHandler;
-import org.apache.drill.exec.planner.sql.handlers.SqlHandlerConfig;
-import org.apache.calcite.plan.hep.HepPlanner;
-import org.apache.calcite.sql.SqlCall;
-import org.apache.calcite.sql.SqlIdentifier;
-import org.apache.calcite.sql.SqlKind;
-import org.apache.calcite.sql.SqlLiteral;
-import org.apache.calcite.sql.SqlNode;
-import org.apache.calcite.sql.SqlOperator;
-import org.apache.calcite.sql.SqlSpecialOperator;
-import org.apache.calcite.sql.SqlWriter;
-import org.apache.calcite.sql.parser.SqlParserPos;
-
-import com.google.common.collect.Lists;
-
-/**
- * Sql parser tree node to represent statement:
- * { DESCRIBE | DESC } tblname [col_name | wildcard ]
- */
-public class SqlDescribeTable extends DrillSqlCall {
-
-  private final SqlIdentifier table;
-  private final SqlIdentifier column;
-  private final SqlNode columnQualifier;
-
-  public static final SqlSpecialOperator OPERATOR =
-    new SqlSpecialOperator("DESCRIBE_TABLE", SqlKind.OTHER) {
-    @Override
-    public SqlCall createCall(SqlLiteral functionQualifier, SqlParserPos pos, 
SqlNode... operands) {
-      return new SqlDescribeTable(pos, (SqlIdentifier) operands[0], 
(SqlIdentifier) operands[1], operands[2]);
-    }
-  };
-
-  public SqlDescribeTable(SqlParserPos pos, SqlIdentifier table, SqlIdentifier 
column, SqlNode columnQualifier) {
-    super(pos);
-    this.table = table;
-    this.column = column;
-    this.columnQualifier = columnQualifier;
-  }
-
-  @Override
-  public SqlOperator getOperator() {
-    return OPERATOR;
-  }
-
-  @Override
-  public List<SqlNode> getOperandList() {
-    List<SqlNode> opList = Lists.newArrayList();
-    opList.add(table);
-    opList.add(column);
-    opList.add(columnQualifier);
-    return opList;
-  }
-
-  @Override
-  public void unparse(SqlWriter writer, int leftPrec, int rightPrec) {
-    writer.keyword("DESCRIBE");
-    writer.keyword("TABLE");
-    table.unparse(writer, leftPrec, rightPrec);
-    if (column != null) {
-      column.unparse(writer, leftPrec, rightPrec);
-    }
-    if (columnQualifier != null) {
-      columnQualifier.unparse(writer, leftPrec, rightPrec);
-    }
-  }
-
-  @Override
-  public AbstractSqlHandler getSqlHandler(SqlHandlerConfig config) {
-    return new DescribeTableHandler(config);
-  }
-
-  public SqlIdentifier getTable() { return table; }
-  public SqlIdentifier getColumn() { return column; }
-  public SqlNode getColumnQualifier() { return columnQualifier; }
-
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java
index a88f523..e4b9668 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/torel/ConversionContext.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.calcite.prepare.Prepare;
 
+import org.apache.calcite.rel.RelRoot;
 import org.apache.drill.common.expression.LogicalExpression;
 import org.apache.drill.common.logical.LogicalPlan;
 import org.apache.drill.common.logical.data.Filter;
@@ -111,12 +112,12 @@ public class ConversionContext implements ToRelContext {
   }
 
   @Override
-  public RelNode expandView(RelDataType rowType, String queryString, 
List<String> schemaPath) {
+  public RelRoot expandView(RelDataType rowType, String queryString, 
List<String> schemaPath, List<String> viewPath) {
     throw new UnsupportedOperationException();
   }
 
   @Override
-  public RelNode expandView(RelDataType rowType, String queryString, 
SchemaPlus rootSchema, List<String> schemaPath) {
+  public RelRoot expandView(RelDataType rowType, String queryString, 
SchemaPlus rootSchema, List<String> schemaPath) {
     throw new UnsupportedOperationException();
   }
 

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java
index 04c35c1..d332434 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeDrillImpl.java
@@ -20,21 +20,21 @@ package org.apache.drill.exec.planner.types;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.calcite.rel.type.DynamicRecordType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rel.type.RelDataTypeFamily;
 import org.apache.calcite.rel.type.RelDataTypeField;
-import org.apache.calcite.rel.type.RelDataTypeImpl;
 import org.apache.calcite.rel.type.RelDataTypePrecedenceList;
 import org.apache.calcite.sql.type.SqlTypeExplicitPrecedenceList;
 import org.apache.calcite.sql.type.SqlTypeName;
 
-/* We use an instance of this class as the row type for
+/* We use an instance of this class as the dynamic row type for
  * Drill table. Since we don't know the schema before hand
  * whenever optiq requires us to validate that a field exists
  * we always return true and indicate that the type of that
  * field is 'ANY'
  */
-public class RelDataTypeDrillImpl extends RelDataTypeImpl {
+public class RelDataTypeDrillImpl extends DynamicRecordType {
 
     private final RelDataTypeFactory typeFactory;
     private final RelDataTypeHolder holder;

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java
index 483b277..aa3542c 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/types/RelDataTypeHolder.java
@@ -19,12 +19,15 @@ package org.apache.drill.exec.planner.types;
 
 import java.util.List;
 
+import org.apache.calcite.rel.type.DynamicRecordType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rel.type.RelDataTypeField;
 import org.apache.calcite.rel.type.RelDataTypeFieldImpl;
 import org.apache.calcite.sql.type.SqlTypeName;
 
 import com.google.common.collect.Lists;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Util;
 
 public class RelDataTypeHolder {
   static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(RelDataTypeHolder.class);
@@ -59,7 +62,14 @@ public class RelDataTypeHolder {
     }
 
     /* This field does not exist in our field list add it */
-    RelDataTypeField newField = new RelDataTypeFieldImpl(fieldName, 
fields.size(), 
typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.ANY),
 true));
+    final SqlTypeName typeName = 
DynamicRecordType.isDynamicStarColName(fieldName)
+        ? SqlTypeName.DYNAMIC_STAR : SqlTypeName.ANY;
+
+    // This field does not exist in our field list add it
+    RelDataTypeField newField = new RelDataTypeFieldImpl(
+        fieldName,
+        fields.size(),
+        
typeFactory.createTypeWithNullability(typeFactory.createSqlType(typeName), 
true));
 
     /* Add the name to our list of field names */
     fields.add(newField);

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java
index 7d6bfe3..c4586ef 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/AbstractSchema.java
@@ -206,6 +206,11 @@ public abstract class AbstractSchema implements Schema, 
SchemaPartitionExplorer,
     // no-op: default implementation for most implementations.
   }
 
+  @Override
+  public Schema snapshot(long now) {
+    return this;
+  }
+
   public void dropTable(String tableName) {
     throw UserException.unsupportedError()
         .message("Dropping tables is not supported in schema [%s]", 
getSchemaPath())

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaTreeProvider.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaTreeProvider.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaTreeProvider.java
index 23441bd..21ab39f 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaTreeProvider.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/SchemaTreeProvider.java
@@ -20,7 +20,7 @@ package org.apache.drill.exec.store;
 import java.io.IOException;
 import java.util.List;
 
-import org.apache.calcite.jdbc.SimpleCalciteSchema;
+import org.apache.calcite.jdbc.CalciteSchema;
 import org.apache.calcite.schema.SchemaPlus;
 import org.apache.drill.common.AutoCloseables;
 import org.apache.drill.common.exceptions.UserException;
@@ -106,7 +106,7 @@ public class SchemaTreeProvider implements AutoCloseable {
    */
   public SchemaPlus createRootSchema(SchemaConfig schemaConfig) {
     try {
-      final SchemaPlus rootSchema = 
SimpleCalciteSchema.createRootSchema(false);
+      final SchemaPlus rootSchema = CalciteSchema.createRootSchema(false, 
false).plus();
       dContext.getSchemaFactory().registerSchemas(schemaConfig, rootSchema);
       schemaTreesToClose.add(rootSchema);
       return rootSchema;

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java
index 49d1423..81ac8b6 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/Records.java
@@ -134,8 +134,19 @@ public class Records {
         case CHAR:                this.DATA_TYPE = "CHARACTER";         break;
         case VARCHAR:             this.DATA_TYPE = "CHARACTER VARYING"; break;
         case VARBINARY:           this.DATA_TYPE = "BINARY VARYING";    break;
-        case INTERVAL_YEAR_MONTH: this.DATA_TYPE = "INTERVAL";          break;
-        case INTERVAL_DAY_TIME:   this.DATA_TYPE = "INTERVAL";          break;
+        case INTERVAL_YEAR:
+        case INTERVAL_YEAR_MONTH:
+        case INTERVAL_MONTH:
+        case INTERVAL_DAY:
+        case INTERVAL_DAY_HOUR:
+        case INTERVAL_DAY_MINUTE:
+        case INTERVAL_DAY_SECOND:
+        case INTERVAL_HOUR:
+        case INTERVAL_HOUR_MINUTE:
+        case INTERVAL_HOUR_SECOND:
+        case INTERVAL_MINUTE:
+        case INTERVAL_MINUTE_SECOND:
+        case INTERVAL_SECOND:     this.DATA_TYPE = "INTERVAL";          break;
         // 3:  SqlTypeName enumerators not yet seen and confirmed or handled.
         default:
           logger.warn( "Type not handled explicitly (code needs review): "
@@ -292,21 +303,43 @@ public class Records {
 
           }
           break;
+        case INTERVAL_YEAR:
         case INTERVAL_YEAR_MONTH:
-        case INTERVAL_DAY_TIME:
+        case INTERVAL_MONTH:
+        case INTERVAL_DAY:
+        case INTERVAL_DAY_HOUR:
+        case INTERVAL_DAY_MINUTE:
+        case INTERVAL_DAY_SECOND:
+        case INTERVAL_HOUR:
+        case INTERVAL_HOUR_MINUTE:
+        case INTERVAL_HOUR_SECOND:
+        case INTERVAL_MINUTE:
+        case INTERVAL_MINUTE_SECOND:
+        case INTERVAL_SECOND:
           this.CHARACTER_MAXIMUM_LENGTH = null;
           this.CHARACTER_OCTET_LENGTH = null;
           this.NUMERIC_PRECISION = null;
           this.NUMERIC_PRECISION_RADIX = null;
           this.NUMERIC_SCALE = null;
           switch ( sqlTypeName ) {
+            case INTERVAL_YEAR:
             case INTERVAL_YEAR_MONTH:
+            case INTERVAL_MONTH:
               // NOTE:  Apparently can't get use RelDataType, etc.; it seems to
               // apply a default fractional seconds precision of 6 for SECOND,
               // even though SECOND does not exist for this case.
               this.DATETIME_PRECISION = 0;
               break;
-            case INTERVAL_DAY_TIME:
+            case INTERVAL_DAY:
+            case INTERVAL_DAY_HOUR:
+            case INTERVAL_DAY_MINUTE:
+            case INTERVAL_DAY_SECOND:
+            case INTERVAL_HOUR:
+            case INTERVAL_HOUR_MINUTE:
+            case INTERVAL_HOUR_SECOND:
+            case INTERVAL_MINUTE:
+            case INTERVAL_MINUTE_SECOND:
+            case INTERVAL_SECOND:
               this.DATETIME_PRECISION =
                   relDataType
                   .getIntervalQualifier()

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java 
b/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
index ca643f5..8a8e8d2 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/PlanningBase.java
@@ -23,7 +23,7 @@ import java.net.URL;
 import mockit.Mocked;
 import mockit.NonStrictExpectations;
 
-import org.apache.calcite.jdbc.SimpleCalciteSchema;
+import org.apache.calcite.jdbc.CalciteSchema;
 import org.apache.calcite.schema.SchemaPlus;
 import org.apache.drill.common.config.DrillConfig;
 import org.apache.drill.common.config.LogicalPlanPersistence;
@@ -111,7 +111,7 @@ public class PlanningBase extends ExecTest{
     registry.init();
     final FunctionImplementationRegistry functionRegistry = new 
FunctionImplementationRegistry(config);
     final DrillOperatorTable table = new DrillOperatorTable(functionRegistry, 
systemOptions);
-    final SchemaPlus root = SimpleCalciteSchema.createRootSchema(false);
+    final SchemaPlus root = CalciteSchema.createRootSchema(false, 
false).plus();
     registry.getSchemaFactory().registerSchemas(SchemaConfig.newBuilder("foo", 
context).build(), root);
 
     new NonStrictExpectations() {

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
 
b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
index e449602..57b7466 100644
--- 
a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
+++ 
b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/DrillOptiqTest.java
@@ -56,7 +56,7 @@ public class DrillOptiqTest {
 
       // create a dummy RexOver object.
       RexNode window = rex.makeOver(anyType, SqlStdOperatorTable.AVG, 
emptyList, emptyList, e, null, null, true,
-          false, false);
+          false, false, false);
       DrillOptiq.toDrill(null, (RelNode) null, window);
     } catch (UserException e) {
       if (e.getMessage().contains(DrillOptiq.UNSUPPORTED_REX_NODE_ERROR)) {

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
 
b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
index f94c40e..57ca0c1 100644
--- 
a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
+++ 
b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestSqlBracketlessSyntax.java
@@ -18,7 +18,7 @@
 package org.apache.drill.exec.sql;
 
 import org.apache.calcite.config.Lex;
-import org.apache.calcite.jdbc.SimpleCalciteSchema;
+import org.apache.calcite.jdbc.CalciteSchema;
 import org.apache.calcite.tools.FrameworkConfig;
 import org.apache.calcite.tools.Frameworks;
 import org.apache.calcite.tools.Planner;
@@ -46,7 +46,7 @@ public class TestSqlBracketlessSyntax {
             
.setIdentifierMaxLength(PlannerSettings.DEFAULT_IDENTIFIER_MAX_LENGTH)
             .setParserFactory(DrillParserImpl.FACTORY)
             .build()) //
-        .defaultSchema(SimpleCalciteSchema.createRootSchema(false)) //
+        .defaultSchema(CalciteSchema.createRootSchema(false, false).plus()) //
         .convertletTable(DrillConvertletTable.INSTANCE) //
         .build();
     Planner planner = Frameworks.getPlanner(config);

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetGroupScan.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetGroupScan.java
 
b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetGroupScan.java
index d7ccea4..6dd2e66 100644
--- 
a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetGroupScan.java
+++ 
b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetGroupScan.java
@@ -85,7 +85,7 @@ public class TestParquetGroupScan extends BaseTestQuery {
       runSQL("SELECT COUNT(*) AS `count` FROM dfs.tmp.`4376_3/604*`");
       fail("Query should've failed!");
     } catch (UserRemoteException uex) {
-      final String expectedMsg = "Table 'dfs.tmp.4376_3/604*' not found";
+      final String expectedMsg = "Object '4376_3/604*' not found within 
'dfs.tmp'";
       assertTrue(String.format("Error message should contain \"%s\" but was 
instead \"%s\"", expectedMsg,
         uex.getMessage()), uex.getMessage().contains(expectedMsg));
     }
@@ -112,7 +112,7 @@ public class TestParquetGroupScan extends BaseTestQuery {
       runSQL("SELECT COUNT(*) AS `count` FROM dfs.tmp.`4376_5/6041`");
       fail("Query should've failed!");
     } catch (UserRemoteException uex) {
-      final String expectedMsg = "Table 'dfs.tmp.4376_5/6041' not found";
+      final String expectedMsg = "Object '4376_5/6041' not found within 
'dfs.tmp'";
       assertTrue(String.format("Error message should contain \"%s\" but was 
instead \"%s\"", expectedMsg,
         uex.getMessage()), uex.getMessage().contains(expectedMsg));
     }

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc-all/pom.xml
----------------------------------------------------------------------
diff --git a/exec/jdbc-all/pom.xml b/exec/jdbc-all/pom.xml
index 9db9c58..f59780d 100644
--- a/exec/jdbc-all/pom.xml
+++ b/exec/jdbc-all/pom.xml
@@ -509,7 +509,7 @@
                   This is likely due to you adding new dependencies to a 
java-exec and not updating the excludes in this module. This is important as it 
minimizes the size of the dependency of Drill application users.
 
                   </message>
-                  <maxsize>32000000</maxsize>
+                  <maxsize>35000000</maxsize>
                   <minsize>15000000</minsize>
                   <files>
                    
<file>${project.build.directory}/drill-jdbc-all-${project.version}.jar</file>
@@ -569,7 +569,7 @@
                           This is likely due to you adding new dependencies to 
a java-exec and not updating the excludes in this module. This is important as 
it minimizes the size of the dependency of Drill application users.
 
                         </message>
-                        <maxsize>29000000</maxsize>
+                        <maxsize>31000000</maxsize>
                         <minsize>15000000</minsize>
                         <files>
                           
<file>${project.build.directory}/drill-jdbc-all-${project.version}.jar</file>

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/exec/jdbc/pom.xml b/exec/jdbc/pom.xml
index dfeaf82..d7087f4 100644
--- a/exec/jdbc/pom.xml
+++ b/exec/jdbc/pom.xml
@@ -21,9 +21,8 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.calcite</groupId>
-      <artifactId>calcite-avatica</artifactId>
-      <version>${calcite.version}</version>
+      <groupId>org.apache.calcite.avatica</groupId>
+      <artifactId>avatica</artifactId>
       <exclusions>
         <exclusion>
           <artifactId>jackson-core</artifactId>

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
index a2b9211..689041c 100644
--- 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
+++ 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -46,6 +46,8 @@ import org.apache.calcite.avatica.AvaticaFactory;
 import org.apache.calcite.avatica.AvaticaStatement;
 import org.apache.calcite.avatica.Meta.ExecuteResult;
 import org.apache.calcite.avatica.Meta.MetaResultSet;
+import org.apache.calcite.avatica.NoSuchStatementException;
+import org.apache.calcite.avatica.QueryState;
 import org.apache.calcite.avatica.UnregisteredDriver;
 import org.apache.drill.common.config.DrillConfig;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
@@ -180,16 +182,16 @@ class DrillConnectionImpl extends AvaticaConnection
 
 
   @Override
-  protected ResultSet createResultSet(MetaResultSet metaResultSet) throws 
SQLException {
-    return super.createResultSet(metaResultSet);
+  protected ResultSet createResultSet(MetaResultSet metaResultSet, QueryState 
state) throws SQLException {
+    return super.createResultSet(metaResultSet, state);
   }
 
   @Override
   protected ExecuteResult prepareAndExecuteInternal(AvaticaStatement 
statement, String sql, long maxRowCount)
-      throws SQLException {
+      throws SQLException, NoSuchStatementException {
     try {
       return super.prepareAndExecuteInternal(statement, sql, maxRowCount);
-    } catch(RuntimeException e) {
+    } catch (RuntimeException e) {
       Throwables.propagateIfInstanceOf(e.getCause(), SQLException.class);
       throw e;
     }

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillJdbc41Factory.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillJdbc41Factory.java 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillJdbc41Factory.java
index 629e47b..38715e9 100644
--- a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillJdbc41Factory.java
+++ b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillJdbc41Factory.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -34,6 +34,7 @@ import org.apache.calcite.avatica.AvaticaStatement;
 import org.apache.calcite.avatica.Helper;
 import org.apache.calcite.avatica.Meta;
 import org.apache.calcite.avatica.Meta.StatementHandle;
+import org.apache.calcite.avatica.QueryState;
 import org.apache.drill.exec.client.DrillClient;
 import org.apache.drill.exec.client.ServerMethod;
 import org.apache.drill.exec.proto.UserProtos.CreatePreparedStatementResp;
@@ -170,12 +171,13 @@ public class DrillJdbc41Factory extends DrillFactory {
 
   @Override
   public DrillResultSetImpl newResultSet(AvaticaStatement statement,
+                                         QueryState state,
                                          Meta.Signature signature,
                                          TimeZone timeZone,
                                          Meta.Frame firstFrame) {
     final ResultSetMetaData metaData =
         newResultSetMetaData(statement, signature);
-    return new DrillResultSetImpl(statement, signature, metaData, timeZone, 
firstFrame);
+    return new DrillResultSetImpl(statement, state, signature, metaData, 
timeZone, firstFrame);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillMetaImpl.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillMetaImpl.java 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillMetaImpl.java
index b78e93a..810ffef 100644
--- a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillMetaImpl.java
+++ b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillMetaImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -38,6 +38,10 @@ import org.apache.calcite.avatica.ColumnMetaData;
 import org.apache.calcite.avatica.ColumnMetaData.StructType;
 import org.apache.calcite.avatica.Meta;
 import org.apache.calcite.avatica.MetaImpl;
+import org.apache.calcite.avatica.MissingResultsException;
+import org.apache.calcite.avatica.NoSuchStatementException;
+import org.apache.calcite.avatica.QueryState;
+import org.apache.calcite.avatica.remote.TypedValue;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.common.util.DrillStringUtils;
 import org.apache.drill.exec.client.ServerMethod;
@@ -92,8 +96,8 @@ class DrillMetaImpl extends MetaImpl {
         sql,
         Collections.<AvaticaParameter> emptyList(),
         Collections.<String, Object>emptyMap(),
-        null // CursorFactory set to null, as SQL requests use DrillCursor
-        );
+        null, // CursorFactory set to null, as SQL requests use DrillCursor
+        Meta.StatementType.SELECT);
   }
 
   private MetaResultSet s(String s) {
@@ -322,7 +326,7 @@ class DrillMetaImpl extends MetaImpl {
         StructType fieldMetaData = drillFieldMetaData(clazz);
         Meta.Signature signature = Meta.Signature.create(
             fieldMetaData.columns, "",
-            Collections.<AvaticaParameter>emptyList(), 
CursorFactory.record(clazz));
+            Collections.<AvaticaParameter>emptyList(), 
CursorFactory.record(clazz), Meta.StatementType.SELECT);
 
         AvaticaStatement statement = connection.createStatement();
         return MetaResultSet.create(connection.id, statement.getId(), true,
@@ -419,8 +423,11 @@ class DrillMetaImpl extends MetaImpl {
    * Implements {@link DatabaseMetaData#getTables}.
    */
   @Override
-  public MetaResultSet getTables(String catalog, final Pat schemaPattern, 
final Pat tableNamePattern,
-      final List<String> typeList) {
+  public MetaResultSet getTables(ConnectionHandle ch,
+                                 String catalog,
+                                 Pat schemaPattern,
+                                 Pat tableNamePattern,
+                                 List<String> typeList) {
     if (connection.getConfig().isServerMetadataDisabled() || ! 
connection.getClient().getSupportedMethods().contains(ServerMethod.GET_TABLES)) 
{
       return clientGetTables(catalog, schemaPattern, tableNamePattern, 
typeList);
     }
@@ -962,8 +969,7 @@ class DrillMetaImpl extends MetaImpl {
    * Implements {@link DatabaseMetaData#getColumns}.
    */
   @Override
-  public MetaResultSet getColumns(String catalog, Pat schemaPattern,
-                              Pat tableNamePattern, Pat columnNamePattern) {
+  public MetaResultSet getColumns(ConnectionHandle ch, String catalog, Pat 
schemaPattern, Pat tableNamePattern, Pat columnNamePattern) {
     if (connection.getConfig().isServerMetadataDisabled() || ! 
connection.getClient().getSupportedMethods().contains(ServerMethod.GET_COLUMNS))
 {
       return clientGetColumns(catalog, schemaPattern, tableNamePattern, 
columnNamePattern);
     }
@@ -1022,7 +1028,7 @@ class DrillMetaImpl extends MetaImpl {
    * Implements {@link DatabaseMetaData#getSchemas}.
    */
   @Override
-  public MetaResultSet getSchemas(String catalog, Pat schemaPattern) {
+  public MetaResultSet getSchemas(ConnectionHandle ch, String catalog, Pat 
schemaPattern) {
     if (connection.getConfig().isServerMetadataDisabled() || ! 
connection.getClient().getSupportedMethods().contains(ServerMethod.GET_SCHEMAS))
 {
       return clientGetSchemas(catalog, schemaPattern);
     }
@@ -1069,7 +1075,7 @@ class DrillMetaImpl extends MetaImpl {
    * Implements {@link DatabaseMetaData#getCatalogs}.
    */
   @Override
-  public MetaResultSet getCatalogs() {
+  public MetaResultSet getCatalogs(ConnectionHandle ch) {
     if (connection.getConfig().isServerMetadataDisabled() || ! 
connection.getClient().getSupportedMethods().contains(ServerMethod.GET_CATALOGS))
 {
       return clientGetCatalogs();
     }
@@ -1106,7 +1112,54 @@ class DrillMetaImpl extends MetaImpl {
   }
 
   @Override
+  public ExecuteResult prepareAndExecute(final StatementHandle handle, final 
String sql, final long maxRowCount,
+                                         int maxRowsInFirstFrame, final 
PrepareCallback callback) throws NoSuchStatementException {
+    return prepareAndExecute(handle, sql, maxRowCount, callback);
+  }
+
+  @Override
+  public ExecuteBatchResult prepareAndExecuteBatch(StatementHandle 
statementHandle, List<String> list) throws NoSuchStatementException {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public ExecuteBatchResult executeBatch(StatementHandle statementHandle, 
List<List<TypedValue>> list) throws NoSuchStatementException {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public Frame fetch(StatementHandle statementHandle, long l, int i) throws 
NoSuchStatementException, MissingResultsException {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public ExecuteResult execute(StatementHandle statementHandle, 
List<TypedValue> list, long l) throws NoSuchStatementException {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public ExecuteResult execute(StatementHandle statementHandle, 
List<TypedValue> list, int i) throws NoSuchStatementException {
+    return null;
+  }
+
+  @Override
   public void closeStatement(StatementHandle h) {
     // Nothing
   }
+
+  @Override
+  public boolean syncResults(StatementHandle statementHandle, QueryState 
queryState, long l) throws NoSuchStatementException {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public void commit(ConnectionHandle connectionHandle) {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public void rollback(ConnectionHandle connectionHandle) {
+    throw new UnsupportedOperationException(this.getClass().getSimpleName());
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillPreparedStatementImpl.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillPreparedStatementImpl.java
 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillPreparedStatementImpl.java
index f1ba4c1..a45412f 100644
--- 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillPreparedStatementImpl.java
+++ 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillPreparedStatementImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -58,13 +58,9 @@ abstract class DrillPreparedStatementImpl extends 
AvaticaPreparedStatement
           resultSetType, resultSetConcurrency, resultSetHoldability);
     connection.openStatementsRegistry.addStatement(this);
     this.preparedStatementHandle = preparedStatementHandle;
-    if (preparedStatementHandle != null) {
-      ((DrillColumnMetaDataList) 
signature.columns).updateColumnMetaData(preparedStatementHandle.getColumnsList());
-    }
+    ((DrillColumnMetaDataList) 
signature.columns).updateColumnMetaData(preparedStatementHandle.getColumnsList());
   }
 
-
-
   /**
    * Throws AlreadyClosedSqlException <i>iff</i> this PreparedStatement is 
closed.
    *
@@ -333,13 +329,17 @@ abstract class DrillPreparedStatementImpl extends 
AvaticaPreparedStatement
   }
 
   @Override
-  public void clearBatch() throws SQLException {
-    throwIfClosed();
+  public void clearBatch() throws RuntimeException {
+    try {
+      throwIfClosed();
+    } catch (AlreadyClosedSqlException e) {
+      throw new RuntimeException(e);
+    }
     try {
       super.clearBatch();
     }
     catch (UnsupportedOperationException e) {
-      throw new SQLFeatureNotSupportedException(e.getMessage(), e);
+      throw new RuntimeException(new 
SQLFeatureNotSupportedException(e.getMessage(), e));
     }
   }
 

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillResultSetImpl.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillResultSetImpl.java 
b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillResultSetImpl.java
index c8b4e3d..f4fc588 100644
--- a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillResultSetImpl.java
+++ b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillResultSetImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -48,6 +48,7 @@ import org.apache.calcite.avatica.AvaticaSite;
 import org.apache.calcite.avatica.AvaticaStatement;
 import org.apache.calcite.avatica.ColumnMetaData;
 import org.apache.calcite.avatica.Meta;
+import org.apache.calcite.avatica.QueryState;
 import org.apache.calcite.avatica.util.Cursor;
 import org.apache.calcite.avatica.util.Cursor.Accessor;
 import org.apache.drill.jdbc.AlreadyClosedSqlException;
@@ -66,10 +67,10 @@ class DrillResultSetImpl extends AvaticaResultSet 
implements DrillResultSet {
   private final DrillConnectionImpl connection;
   private volatile boolean hasPendingCancelationNotification = false;
 
-  DrillResultSetImpl(AvaticaStatement statement, Meta.Signature signature,
+  DrillResultSetImpl(AvaticaStatement statement, QueryState state, 
Meta.Signature signature,
                      ResultSetMetaData resultSetMetaData, TimeZone timeZone,
                      Meta.Frame firstFrame) {
-    super(statement, signature, resultSetMetaData, timeZone, firstFrame);
+    super(statement, state, signature, resultSetMetaData, timeZone, 
firstFrame);
     connection = (DrillConnectionImpl) statement.getConnection();
   }
 

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataGetColumnsTest.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataGetColumnsTest.java
 
b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataGetColumnsTest.java
index ed95162..ac84844 100644
--- 
a/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataGetColumnsTest.java
+++ 
b/exec/jdbc/src/test/java/org/apache/drill/jdbc/DatabaseMetaDataGetColumnsTest.java
@@ -128,7 +128,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
   private static ResultSet mdrReqCHAR_5;
   // No NCHAR, etc., in Drill (?).
   private static ResultSet mdrOptVARBINARY_16;
-  private static ResultSet mdrOptBINARY_1048576;
+  private static ResultSet mdrOptBINARY_65536;
 
   private static ResultSet mdrReqDATE;
   private static ResultSet mdrReqTIME;
@@ -256,7 +256,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
         + "\n  CAST( NULL    AS VARCHAR            ) AS mdrOptVARCHAR,        "
         + "\n  CAST( '55'    AS CHAR(5)            ) AS mdrReqCHAR_5,         "
         + "\n  CAST( NULL    AS VARBINARY(16)      ) AS mdrOptVARBINARY_16,   "
-        + "\n  CAST( NULL    AS VARBINARY(1048576) ) AS mdrOptBINARY_1048576, "
+        + "\n  CAST( NULL    AS VARBINARY(65536)   ) AS mdrOptBINARY_65536,   "
         + "\n  CAST( NULL    AS BINARY(8)          ) AS mdrOptBINARY_8,       "
         + "\n  "
         + "\n                   DATE '2015-01-01'    AS mdrReqDATE,           "
@@ -307,7 +307,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
     mdrOptVARCHAR        = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptVARCHAR" );
     mdrReqCHAR_5         = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, "mdrReqCHAR_5" 
);
     mdrOptVARBINARY_16   = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptVARBINARY_16" );
-    mdrOptBINARY_1048576 = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptBINARY_1048576" );
+    mdrOptBINARY_65536   = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptBINARY_65536" );
 
     mdrReqDATE           = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, "mdrReqDATE" );
     mdrReqTIME           = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, "mdrReqTIME" );
@@ -671,7 +671,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_DATA_TYPE_hasRightValue_mdrOptBINARY_1048576CHECK() throws 
SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "DATA_TYPE" ), equalTo( 
Types.VARBINARY ) );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "DATA_TYPE" ), equalTo( 
Types.VARBINARY ) );
   }
 
   @Test
@@ -849,7 +849,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_TYPE_NAME_hasRightValue_mdrOptBINARY_1048576CHECK() throws 
SQLException {
-    assertThat( mdrOptBINARY_1048576.getString( "TYPE_NAME" ),
+    assertThat( mdrOptBINARY_65536.getString( "TYPE_NAME" ),
                 equalTo( "BINARY VARYING" ) );
   }
 
@@ -1039,7 +1039,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_COLUMN_SIZE_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "COLUMN_SIZE" ), equalTo( 
1048576 ) );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "COLUMN_SIZE" ), equalTo( 
65536 ) );
   }
 
   @Test
@@ -1109,13 +1109,16 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
                 equalTo( 12 ) );  // "P123DT12H12M"
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_COLUMN_SIZE_hasRightValue_mdrReqINTERVAL_2D_S5() throws 
SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_2D_S5, "COLUMN_SIZE" ),
                 equalTo( 20 ) );  // "P12DT12H12M12.12345S"
   }
 
+  @Ignore( "Ignored after Calcite update" )
+  @Test
   public void test_COLUMN_SIZE_hasINTERIMValue_mdrReqINTERVAL_2D_S5() throws 
SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
                 getIntOrNull( mdrReqINTERVAL_2D_S5, "COLUMN_SIZE" ),
@@ -1134,13 +1137,15 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
                 equalTo( 7 ) );  // "PT1H12M"
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_COLUMN_SIZE_hasRightValue_mdrReqINTERVAL_3H_S1() throws 
SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_3H_S1, "COLUMN_SIZE" ),
                 equalTo( 14 ) );  // "PT123H12M12.1S"
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_COLUMN_SIZE_hasINTERIMValue_mdrReqINTERVAL_3H_S1() throws 
SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -1172,13 +1177,15 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
                 equalTo( 13 ) );  // "PT123.123456S"
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_COLUMN_SIZE_hasRightValue_mdrReqINTERVAL_3S1() throws 
SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_3S1, "COLUMN_SIZE" ),
                 equalTo( 8 ) );  // "PT123.1S"
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_COLUMN_SIZE_hasINTERIMValue_mdrReqINTERVAL_3S1() throws 
SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -1342,7 +1349,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_DECIMAL_DIGITS_hasRightValue_mdrOptBINARY_1048576CHECK() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "DECIMAL_DIGITS" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "DECIMAL_DIGITS" ), 
nullValue() );
   }
 
   @Test
@@ -1420,12 +1427,14 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
     assertThat( getIntOrNull( mdrReqINTERVAL_3D_Mi, "DECIMAL_DIGITS" ), 
equalTo( 6 ) );
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_DECIMAL_DIGITS_hasRightValue_mdrReqINTERVAL_2D_S5() throws 
SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_2D_S5, "DECIMAL_DIGITS" ), 
equalTo( 5 ) );
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_DECIMAL_DIGITS_hasINTERIMValue_mdrReqINTERVAL_2D_S5() 
throws SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -1450,12 +1459,14 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
     assertThat( getIntOrNull( mdrReqINTERVAL_1H_Mi, "DECIMAL_DIGITS" ), 
equalTo( 6 ) );
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_DECIMAL_DIGITS_hasRightValue_mdrReqINTERVAL_3H_S1() throws 
SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_3H_S1, "DECIMAL_DIGITS" ), 
equalTo( 1 ) );
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_DECIMAL_DIGITS_hasINTERIMValue_mdrReqINTERVAL_3H_S1() 
throws SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -1640,7 +1651,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_NUM_PREC_RADIX_hasRightValue_mdrOptBINARY_1048576CHECK() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "NUM_PREC_RADIX" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "NUM_PREC_RADIX" ), 
nullValue() );
   }
 
   @Test
@@ -1824,7 +1835,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
   @Test
   public void test_NULLABLE_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
     assertThat( "ResultSetMetaData.column...Null... nullability code:",
-                getIntOrNull( mdrOptBINARY_1048576, "NULLABLE" ), equalTo( 
columnNullable ) );
+                getIntOrNull(mdrOptBINARY_65536, "NULLABLE" ), equalTo( 
columnNullable ) );
   }
 
   @Test
@@ -2186,7 +2197,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_CHAR_OCTET_LENGTH_hasRightValue_mdrOptBINARY_1048576CHECK() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "CHAR_OCTET_LENGTH" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "CHAR_OCTET_LENGTH" ), 
nullValue() );
   }
 
   @Test
@@ -2443,7 +2454,7 @@ public class DatabaseMetaDataGetColumnsTest extends 
JdbcTestBase {
 
   @Test
   public void test_IS_NULLABLE_hasRightValue_mdrOptBINARY_1048576CHECK() 
throws SQLException {
-    assertThat( mdrOptBINARY_1048576.getString( "IS_NULLABLE" ), equalTo( 
"YES" ) );
+    assertThat( mdrOptBINARY_65536.getString( "IS_NULLABLE" ), equalTo( "YES" 
) );
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestInformationSchemaColumns.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestInformationSchemaColumns.java
 
b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestInformationSchemaColumns.java
index 7e0934c..214b7ca 100644
--- 
a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestInformationSchemaColumns.java
+++ 
b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestInformationSchemaColumns.java
@@ -99,7 +99,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
   private static ResultSet mdrReqCHAR_5;
   // No NCHAR, etc., in Drill (?).
   private static ResultSet mdrOptVARBINARY_16;
-  private static ResultSet mdrOptBINARY_1048576;
+  private static ResultSet mdrOptBINARY_65536;
 
   private static ResultSet mdrReqDATE;
   private static ResultSet mdrReqTIME;
@@ -236,7 +236,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
         + "\n  CAST( NULL    AS VARCHAR            ) AS mdrOptVARCHAR,        "
         + "\n  CAST( '55'    AS CHAR(5)            ) AS mdrReqCHAR_5,         "
         + "\n  CAST( NULL    AS VARBINARY(16)      ) AS mdrOptVARBINARY_16,   "
-        + "\n  CAST( NULL    AS VARBINARY(1048576) ) AS mdrOptBINARY_1048576, "
+        + "\n  CAST( NULL    AS VARBINARY(65536)   ) AS mdrOptBINARY_65536,   "
         + "\n  CAST( NULL    AS BINARY(8)          ) AS mdrOptBINARY_8,       "
         + "\n  "
         + "\n                   DATE '2015-01-01'    AS mdrReqDATE,           "
@@ -287,7 +287,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
     mdrOptVARCHAR        = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptVARCHAR" );
     mdrReqCHAR_5         = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, "mdrReqCHAR_5" 
);
     mdrOptVARBINARY_16   = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptVARBINARY_16" );
-    mdrOptBINARY_1048576 = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptBINARY_1048576" );
+    mdrOptBINARY_65536   = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, 
"mdrOptBINARY_65536" );
 
     mdrReqDATE           = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, "mdrReqDATE" );
     mdrReqTIME           = setUpRow( DFS_TMP_SCHEMA, VIEW_NAME, "mdrReqTIME" );
@@ -829,7 +829,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
   @Test
   public void test_IS_NULLABLE_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
     assertThat( "ResultSetMetaData.column...Null... nullability code:",
-                mdrOptBINARY_1048576.getString( "IS_NULLABLE" ), equalTo( 
"YES" ) );
+                mdrOptBINARY_65536.getString( "IS_NULLABLE" ), equalTo( "YES" 
) );
   }
 
   @Test
@@ -1006,8 +1006,8 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
   @Ignore( "TODO(DRILL-3368): unignore when BINARY is implemented enough" )
   @Test
   public void test_DATA_TYPE_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
-    assertThat( mdrOptBINARY_1048576.getString( "DATA_TYPE" ), equalTo( 
"BINARY VARYING" ) ); // ?? current
-    assertThat( mdrOptBINARY_1048576.getString( "DATA_TYPE" ), equalTo( 
"BINARY" ) );  // ?? should be
+    assertThat( mdrOptBINARY_65536.getString( "DATA_TYPE" ), equalTo( "BINARY 
VARYING" ) ); // ?? current
+    assertThat( mdrOptBINARY_65536.getString( "DATA_TYPE" ), equalTo( "BINARY" 
) );  // ?? should be
   }
 
   @Test
@@ -1172,7 +1172,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void 
test_CHARACTER_MAXIMUM_LENGTH_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "CHARACTER_MAXIMUM_LENGTH" 
), equalTo( 1048576 ) );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "CHARACTER_MAXIMUM_LENGTH" ), 
equalTo( 65536 ) );
   }
 
   @Test
@@ -1339,7 +1339,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void test_CHARACTER_OCTET_LENGTH_hasRightValue_mdrOptBINARY_1048576() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "CHARACTER_OCTET_LENGTH" 
), equalTo( 1048576 ));
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "CHARACTER_OCTET_LENGTH" ), 
equalTo( 65536 ));
   }
 
   @Test
@@ -1499,7 +1499,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void test_NUMERIC_PRECISION_hasRightValue_mdrOptBINARY_1048576() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "NUMERIC_PRECISION" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "NUMERIC_PRECISION" ), 
nullValue() );
   }
 
   @Test
@@ -1659,7 +1659,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void 
test_NUMERIC_PRECISION_RADIX_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "NUMERIC_PRECISION_RADIX" 
), nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "NUMERIC_PRECISION_RADIX" ), 
nullValue() );
   }
 
   @Test
@@ -1819,7 +1819,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void test_NUMERIC_SCALE_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "NUMERIC_SCALE" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "NUMERIC_SCALE" ), 
nullValue() );
   }
 
   @Test
@@ -1979,7 +1979,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void test_DATETIME_PRECISION_hasRightValue_mdrOptBINARY_1048576() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "DATETIME_PRECISION" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "DATETIME_PRECISION" ), 
nullValue() );
   }
 
   @Test
@@ -2050,12 +2050,14 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
     assertThat( getIntOrNull( mdrReqINTERVAL_3D_Mi, "DATETIME_PRECISION" ), 
equalTo( 6 ) );
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_DATETIME_PRECISION_hasRightValue_mdrReqINTERVAL_2D_S5() 
throws SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_2D_S5, "DATETIME_PRECISION" ), 
equalTo( 5 ) );
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_DATETIME_PRECISION_hasINTERIMValue_mdrReqINTERVAL_2D_S5() 
throws SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -2080,12 +2082,14 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
     assertThat( getIntOrNull( mdrReqINTERVAL_1H_Mi, "DATETIME_PRECISION" ), 
equalTo( 6 ) );
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_DATETIME_PRECISION_hasRightValue_mdrReqINTERVAL_H_S3() 
throws SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_3H_S1, "DATETIME_PRECISION" ), 
equalTo( 1 ) );
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_DATETIME_PRECISION_hasINTERIMValue_mdrReqINTERVAL_H_S3() 
throws SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -2119,12 +2123,14 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
     assertThat( getIntOrNull( mdrReqINTERVAL_3S, "DATETIME_PRECISION" ), 
equalTo( 6 ) );
   }
 
-  @Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" )
+  //Fixed with Calcite update
+  //@Ignore( "TODO(DRILL-3244): unignore when fractional secs. prec. is right" 
)
   @Test
   public void test_DATETIME_PRECISION_hasRightValue_mdrReqINTERVAL_3S1() 
throws SQLException {
     assertThat( getIntOrNull( mdrReqINTERVAL_3S1, "DATETIME_PRECISION" ), 
equalTo( 1 ) );
   }
 
+  @Ignore( "Ignored after Calcite update" )
   @Test
   public void test_DATETIME_PRECISION_hasINTERIMValue_mdrReqINTERVAL_3S1() 
throws SQLException {
     assertThat( "When DRILL-3244 fixed, un-ignore above method and purge 
this.",
@@ -2258,7 +2264,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void test_INTERVAL_TYPE_hasRightValue_mdrOptBINARY_1048576() throws 
SQLException {
-    assertThat( mdrOptBINARY_1048576.getString( "INTERVAL_TYPE" ), nullValue() 
);
+    assertThat( mdrOptBINARY_65536.getString( "INTERVAL_TYPE" ), nullValue() );
   }
 
   @Test
@@ -2491,7 +2497,7 @@ public class TestInformationSchemaColumns extends 
JdbcTestBase {
 
   @Test
   public void test_INTERVAL_PRECISION_hasRightValue_mdrOptBINARY_1048576() 
throws SQLException {
-    assertThat( getIntOrNull( mdrOptBINARY_1048576, "INTERVAL_PRECISION" ), 
nullValue() );
+    assertThat( getIntOrNull(mdrOptBINARY_65536, "INTERVAL_PRECISION" ), 
nullValue() );
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 6189cf2..ce64591 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,8 @@
     <dep.guava.version>18.0</dep.guava.version>
     <forkCount>2</forkCount>
     <parquet.version>1.8.1-drill-r0</parquet.version>
-    <calcite.version>1.4.0-drill-r23</calcite.version>
+    <calcite.version>1.13.0-drill-r0</calcite.version>
+    <avatica.version>1.10.0</avatica.version>
     <janino.version>2.7.6</janino.version>
     <sqlline.version>1.1.9-drill-r7</sqlline.version>
     <jackson.version>2.7.9</jackson.version>
@@ -57,7 +58,7 @@
     <hive.version>1.2.1</hive.version>
     <hadoop.version>2.7.1</hadoop.version>
     <hbase.version>1.1.3</hbase.version>
-    <fmpp.version>0.9.15</fmpp.version>
+    <fmpp.version>1.0</fmpp.version>
     <freemarker.version>2.3.26-incubating</freemarker.version>
     <javassist.version>3.16.1-GA</javassist.version>
     <msgpack.version>0.6.6</msgpack.version>
@@ -717,6 +718,25 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
+        <groupId>org.apache.calcite.avatica</groupId>
+        <artifactId>avatica</artifactId>
+        <version>${avatica.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.apache.calcite.avatica</groupId>
+            <artifactId>avatica-core</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+          <exclusion>
+            <artifactId>protobuf-java</artifactId>
+            <groupId>com.google.protobuf</groupId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
         <groupId>org.msgpack</groupId>
         <artifactId>msgpack</artifactId>
         <version>${msgpack.version}</version>
@@ -1723,6 +1743,10 @@
             <version>${calcite.version}</version>
             <exclusions>
               <exclusion>
+                <groupId>org.apache.calcite.avatica</groupId>
+                <artifactId>avatica-core</artifactId>
+              </exclusion>
+              <exclusion>
                 <groupId>org.jgrapht</groupId>
                 <artifactId>jgrapht-jdk1.5</artifactId>
               </exclusion>

http://git-wip-us.apache.org/repos/asf/drill/blob/9fabb612/tools/fmpp/pom.xml
----------------------------------------------------------------------
diff --git a/tools/fmpp/pom.xml b/tools/fmpp/pom.xml
index 91e686c..4f4b7e9 100644
--- a/tools/fmpp/pom.xml
+++ b/tools/fmpp/pom.xml
@@ -45,9 +45,19 @@
       <version>3.3.3</version>
     </dependency>
     <dependency>
-      <groupId>net.sourceforge.fmpp</groupId>
-      <artifactId>fmpp</artifactId>
+      <groupId>com.googlecode.fmpp-maven-plugin</groupId>
+      <artifactId>fmpp-maven-plugin</artifactId>
       <version>${fmpp.version}</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>log4j</artifactId>
+          <groupId>log4j</groupId>
+        </exclusion>
+        <exclusion>
+          <artifactId>commons-logging-api</artifactId>
+          <groupId>commons-logging</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.freemarker</groupId>

Reply via email to