diff --git pom.xml pom.xml
index dfb29cee4b..8614dcd1c6 100644
--- pom.xml
+++ pom.xml
@@ -121,7 +121,7 @@
1.10.0
1.7.7
0.8.0.RELEASE
- 1.14.0
+ 1.15.0-SNAPSHOT
4.2.4
4.1.17
4.1.19
diff --git ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java
index 51b6ef58fc..03349bbc50 100644
--- ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java
+++ ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java
@@ -35,7 +35,6 @@
import org.apache.calcite.adapter.druid.DruidQuery;
import org.apache.calcite.adapter.druid.DruidSchema;
import org.apache.calcite.adapter.druid.DruidTable;
-import org.apache.calcite.adapter.druid.LocalInterval;
import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptMaterialization;
@@ -72,6 +71,7 @@
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import org.joda.time.Interval;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -311,9 +311,8 @@ private static RelNode createTableScan(Table viewTable) {
}
metrics.add(field.getName());
}
- // TODO: Default interval will be an Interval once Calcite 1.15.0 is released.
- // We will need to update the type of this list.
- List intervals = Arrays.asList(DruidTable.DEFAULT_INTERVAL);
+
+ List intervals = Arrays.asList(DruidTable.DEFAULT_INTERVAL);
DruidTable druidTable = new DruidTable(new DruidSchema(address, address, false),
dataSource, RelDataTypeImpl.proto(rowType), metrics, DruidTable.DEFAULT_TIMESTAMP_COLUMN,
diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelDistribution.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelDistribution.java
index 653f1c535c..7e5beee573 100644
--- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelDistribution.java
+++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelDistribution.java
@@ -19,6 +19,7 @@
import java.util.List;
+import org.apache.calcite.plan.RelMultipleTrait;
import org.apache.calcite.plan.RelOptPlanner;
import org.apache.calcite.plan.RelTrait;
import org.apache.calcite.plan.RelTraitDef;
@@ -26,8 +27,13 @@
import org.apache.calcite.rel.RelDistributionTraitDef;
import org.apache.calcite.util.mapping.Mappings.TargetMapping;
+import com.google.common.collect.Ordering;
+
public class HiveRelDistribution implements RelDistribution {
+ private static final Ordering> ORDERING =
+ Ordering.natural().lexicographical();
+
List keys;
RelDistribution.Type type;
@@ -77,4 +83,21 @@ public Type getType() {
return type;
}
+ @Override
+ public boolean isTop() {
+ return type == Type.ANY;
+ }
+
+ @Override
+ public int compareTo(RelMultipleTrait o) {
+ final RelDistribution distribution = (RelDistribution) o;
+ if (type == distribution.getType()
+ && (type == Type.HASH_DISTRIBUTED
+ || type == Type.RANGE_DISTRIBUTED)) {
+ return ORDERING.compare(getKeys(), distribution.getKeys());
+ }
+
+ return type.compareTo(distribution.getType());
+ }
+
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index 23b93cd29c..64b3cad9c4 100644
--- ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -52,7 +52,6 @@
import org.apache.calcite.adapter.druid.DruidRules;
import org.apache.calcite.adapter.druid.DruidSchema;
import org.apache.calcite.adapter.druid.DruidTable;
-import org.apache.calcite.adapter.druid.LocalInterval;
import org.apache.calcite.config.CalciteConnectionConfig;
import org.apache.calcite.config.CalciteConnectionConfigImpl;
import org.apache.calcite.config.CalciteConnectionProperty;
@@ -259,6 +258,7 @@
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import org.joda.time.Interval;
import com.google.common.base.Function;
import com.google.common.collect.ArrayListMultimap;
@@ -2413,9 +2413,8 @@ private RelNode genTableLogicalPlan(String tableAlias, QB qb) throws SemanticExc
}
metrics.add(field.getName());
}
- // TODO: Default interval will be an Interval once Calcite 1.15.0 is released.
- // We will need to update the type of this list.
- List intervals = Arrays.asList(DruidTable.DEFAULT_INTERVAL);
+
+ List intervals = Arrays.asList(DruidTable.DEFAULT_INTERVAL);
DruidTable druidTable = new DruidTable(new DruidSchema(address, address, false),
dataSource, RelDataTypeImpl.proto(rowType), metrics, DruidTable.DEFAULT_TIMESTAMP_COLUMN,