diff --git a/pom.xml b/pom.xml index 85f1222..5187df5 100644 --- a/pom.xml +++ b/pom.xml @@ -115,10 +115,10 @@ 3.5.2 1.5.6 0.1 - 1.9.0 + 1.10.0 1.7.7 0.8.0.RELEASE - 1.12.0 + 1.13.0-SNAPSHOT 4.2.4 4.1.17 4.1.19 @@ -131,7 +131,7 @@ 3.0.1 2.4 2.6 - 3.1 + 3.2 1.5.4 1.4 10.10.2.0 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java index e339d0a..5f34e8d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveCalciteUtil.java @@ -89,6 +89,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import org.apache.calcite.rex.RexTableInputRef; /** * Generic utility functions needed for Calcite based Hive CBO. @@ -1080,6 +1081,11 @@ public Boolean visitSubQuery(RexSubQuery subQuery) { public Boolean visitPatternFieldRef(RexPatternFieldRef fieldRef) { return false; } + + @Override + public Boolean visitTableInputRef(RexTableInputRef fieldRef) { + return false; + } } public static Set getInputRefs(RexNode expr) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveTypeSystemImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveTypeSystemImpl.java index 279d101..1f5b2bc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveTypeSystemImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveTypeSystemImpl.java @@ -26,7 +26,7 @@ private static final int MAX_DECIMAL_PRECISION = 38; private static final int MAX_DECIMAL_SCALE = 38; private static final int DEFAULT_DECIMAL_PRECISION = 10; - private static final int MAX_VARCHAR_PRECISION = 65535; + public static final int MAX_VARCHAR_PRECISION = 65535; private static final int MAX_CHAR_PRECISION = 255; private static final int MAX_BINARY_PRECISION = Integer.MAX_VALUE; private static final int MAX_TIMESTAMP_PRECISION = 9; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java index 52ca3b0..92444c4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java @@ -661,14 +661,14 @@ protected RexNode convert(ExprNodeConstantDesc literal) throws CalciteSemanticEx case DATE: // The Calcite literal is in GMT, this will be converted back to JVM locale // by ASTBuilder.literal during Calcite->Hive plan conversion - final Calendar cal = Calendar.getInstance(DateTimeUtils.GMT_ZONE, Locale.getDefault()); + final Calendar cal = Calendar.getInstance(DateTimeUtils.UTC_ZONE, Locale.getDefault()); cal.setTime((Date) value); calciteLiteral = rexBuilder.makeDateLiteral(cal); break; case TIMESTAMP: // The Calcite literal is in GMT, this will be converted back to JVM locale // by ASTBuilder.literal during Calcite->Hive plan conversion - final Calendar calt = Calendar.getInstance(DateTimeUtils.GMT_ZONE, Locale.getDefault()); + final Calendar calt = Calendar.getInstance(DateTimeUtils.UTC_ZONE, Locale.getDefault()); if (value instanceof Calendar) { final Calendar c = (Calendar) value; long timeMs = c.getTimeInMillis(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java index 2df7588..aedb2fd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/TypeConverter.java @@ -58,6 +58,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.Lists; +import org.apache.hadoop.hive.ql.optimizer.calcite.HiveTypeSystemImpl; public class TypeConverter { @@ -376,7 +377,8 @@ public static HiveToken hiveToken(RelDataType calciteType) { } break; case VARCHAR: { - if (calciteType.getPrecision() == Integer.MAX_VALUE) + if (calciteType.getPrecision() == Integer.MAX_VALUE || + calciteType.getPrecision() == HiveTypeSystemImpl.MAX_VARCHAR_PRECISION) ht = new HiveToken(HiveParser.TOK_STRING, "TOK_STRING", String.valueOf(calciteType .getPrecision())); else diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index 931e074..6b5ae25 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -3448,7 +3448,7 @@ private int getWindowSpecIndx(ASTNode wndAST) { w = cluster.getRexBuilder().makeOver(calciteAggFnRetType, calciteAggFn, calciteAggFnArgs, partitionKeys, ImmutableList. copyOf(orderKeys), lowerBound, - upperBound, isRows, true, false); + upperBound, isRows, true, false, false); } else { // TODO: Convert to Semantic Exception throw new RuntimeException("Unsupported window Spec");