From 8d64e4b6b014d7e593d76e094d40a2b5856e4ff8 Mon Sep 17 00:00:00 2001 From: Slim Date: Mon, 29 Jan 2018 13:35:49 -0800 Subject: [PATCH] Use proper calcite rexCall operators. Rename extract and floor calls to use same name for all units, this is needed for druid expression matchers Change-Id: I8dd823af547c5f6e78c31e90c7e5567317d46c68 --- .../calcite/reloperators/HiveExtractDate.java | 3 +- .../calcite/reloperators/HiveFloorDate.java | 2 +- .../calcite/translator/SqlFunctionConverter.java | 32 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java index 4099733..d27a13c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveExtractDate.java @@ -22,6 +22,7 @@ import org.apache.calcite.sql.SqlFunction; import org.apache.calcite.sql.SqlFunctionCategory; import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.fun.SqlExtractFunction; import org.apache.calcite.sql.type.OperandTypes; import org.apache.calcite.sql.type.ReturnTypes; import org.apache.calcite.sql.type.SqlTypeTransforms; @@ -43,7 +44,7 @@ Sets.newHashSet(YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND); private HiveExtractDate(String name) { - super(name, SqlKind.EXTRACT, + super("EXTRACT", SqlKind.EXTRACT, ReturnTypes.cascade(ReturnTypes.INTEGER, SqlTypeTransforms.FORCE_NULLABLE), null, OperandTypes.INTERVALINTERVAL_INTERVALDATETIME, SqlFunctionCategory.SYSTEM); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveFloorDate.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveFloorDate.java index eb1fb96..62475e5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveFloorDate.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveFloorDate.java @@ -45,7 +45,7 @@ Sets.newHashSet(YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND); private HiveFloorDate(String name) { - super(name, SqlKind.FLOOR, ReturnTypes.ARG0_OR_EXACT_NO_SCALE, null, + super("FLOOR", SqlKind.FLOOR, ReturnTypes.ARG0_OR_EXACT_NO_SCALE, null, OperandTypes.sequence( "'" + SqlKind.FLOOR + "( TO )'\n" + "'" + SqlKind.FLOOR + "(