diff options
author | Igor Guzenko <ihor.huzenko.igs@gmail.com> | 2018-10-22 14:33:49 +0300 |
---|---|---|
committer | Aman Sinha <asinha@maprtech.com> | 2019-02-01 16:18:01 -0800 |
commit | 3bec197bce73ed7aa2ae3fabf457c408aa7aff87 (patch) | |
tree | 2faf657f38ed91dda5b79b57fef5f432fb1c2cd7 /exec/java-exec/src/main/java/org/apache/drill/exec/planner | |
parent | 35b42ebdfd645b92330ad5dcac363aa0036696a7 (diff) |
DRILL-6862: Update Calcite to 1.18.0
1. Moved Calcite dependency from profile hadoop-default to general dependency managment
2. Updated Calcite version to 1.18.0-drill-r0 and Avatica version to 1.13.0
3. Hook.REL_BUILDER_SIMPLIFY moved to static block, cause now it can't be removed (fixes DRILL-6830)
4. Removed WrappedAccessor, since it was workaround fixed in CALCITE-1408
5. Fixed setting of multiple options in TestBuilder
6. Timstampadd type inference aligned with CALCITE-2699
7. Dependency update caused 417 kB increase of jdb-all jar size, so the maxsize limit was
increased from 39.5 to 40 MB
8. Added test into TestDrillParquetReader to ensure that DRILL-6856 was
fixed by Calcite update
close apache/drill#1631
Diffstat (limited to 'exec/java-exec/src/main/java/org/apache/drill/exec/planner')
3 files changed, 23 insertions, 8 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/DrillRelBuilder.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/DrillRelBuilder.java index 1ec300daf..22597dc51 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/DrillRelBuilder.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/DrillRelBuilder.java @@ -67,4 +67,14 @@ public class DrillRelBuilder extends RelBuilder { public static RelBuilderFactory proto(Object... factories) { return proto(Contexts.of(factories)); } + + /** + * Disables combining of consecutive {@link org.apache.calcite.rel.core.Project} nodes. + * See comments under CALCITE-2470 for details. + * @return false + */ + @Override + protected boolean shouldMergeProject() { + return false; + } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java index 154bf8cbb..62d6f325d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java @@ -119,6 +119,14 @@ public class SqlConverter { private VolcanoPlanner planner; private boolean useRootSchema = false; + static { + /* + * Sets value to false to avoid simplifying project expressions + * during creating new projects since it may cause changing data mode + * which causes to assertion errors during type validation + */ + Hook.REL_BUILDER_SIMPLIFY.add(Hook.propertyJ(false)); + } public SqlConverter(QueryContext context) { this.settings = context.getPlannerSettings(); @@ -373,13 +381,6 @@ public class SqlConverter { new SqlToRelConverter(new Expander(), validator, catalog, cluster, DrillConvertletTable.INSTANCE, sqlToRelConverterConfig); - /* - * Sets value to false to avoid simplifying project expressions - * during creating new projects since it may cause changing data mode - * which causes to assertion errors during type validation - */ - Hook.REL_BUILDER_SIMPLIFY.add(Hook.propertyJ(false)); - //To avoid unexpected column errors set a value of top to false final RelRoot rel = sqlToRelConverter.convertQuery(validatedNode, false, false); return rel.withRel(sqlToRelConverter.flattenTypes(rel.rel, true)); 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 3319104dc..9b0142405 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 @@ -593,7 +593,11 @@ public class TypeInferenceUtils { case SECOND: case MINUTE: case HOUR: - sqlTypeName = SqlTypeName.TIMESTAMP; + if (inputTypeName == SqlTypeName.TIME) { + sqlTypeName = SqlTypeName.TIME; + } else { + sqlTypeName = SqlTypeName.TIMESTAMP; + } break; default: sqlTypeName = SqlTypeName.ANY; |