You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2018/06/18 22:03:36 UTC
[45/67] [abbrv] hive git commit: HIVE-19923: Follow up of HIVE-19615,
use UnaryFunction instead of prefix (Slim Bouguerra,
reviewed by Nishant Bangarwa, Ashutosh Chauhan)
HIVE-19923: Follow up of HIVE-19615, use UnaryFunction instead of prefix (Slim Bouguerra, reviewed by Nishant Bangarwa, Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3a6ad266
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3a6ad266
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3a6ad266
Branch: refs/heads/master-txnstats
Commit: 3a6ad2661e5fdd3e6ce8b8f7ee5a35ddb3bd2c47
Parents: 6a16a71
Author: Slim Bouguerra <sl...@gmail.com>
Authored: Mon Jun 18 07:54:44 2018 -0700
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Mon Jun 18 07:54:44 2018 -0700
----------------------------------------------------------------------
.../ql/parse/DruidSqlOperatorConverter.java | 35 ++++++++++++++++++--
.../clientpositive/druid/druidmini_test1.q.out | 2 +-
2 files changed, 34 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/3a6ad266/ql/src/java/org/apache/hadoop/hive/ql/parse/DruidSqlOperatorConverter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DruidSqlOperatorConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DruidSqlOperatorConverter.java
index 4db0714..6aa98c0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DruidSqlOperatorConverter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DruidSqlOperatorConverter.java
@@ -21,6 +21,7 @@ package org.apache.hadoop.hive.ql.parse;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import org.apache.calcite.adapter.druid.DirectOperatorConversion;
import org.apache.calcite.adapter.druid.DruidExpressions;
@@ -51,6 +52,7 @@ import org.joda.time.Period;
import javax.annotation.Nullable;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.TimeZone;
@@ -87,9 +89,9 @@ public class DruidSqlOperatorConverter {
druidOperatorMap
.put(SqlStdOperatorTable.SUBSTRING, new DruidSqlOperatorConverter.DruidSubstringOperatorConversion());
druidOperatorMap
- .put(SqlStdOperatorTable.IS_NULL, new UnarySuffixOperatorConversion(SqlStdOperatorTable.IS_NULL, "isnull"));
+ .put(SqlStdOperatorTable.IS_NULL, new UnaryFunctionOperatorConversion(SqlStdOperatorTable.IS_NULL, "isnull"));
druidOperatorMap.put(SqlStdOperatorTable.IS_NOT_NULL,
- new UnarySuffixOperatorConversion(SqlStdOperatorTable.IS_NOT_NULL, "notnull")
+ new UnaryFunctionOperatorConversion(SqlStdOperatorTable.IS_NOT_NULL, "notnull")
);
druidOperatorMap.put(HiveTruncSqlOperator.INSTANCE, new DruidDateTruncOperatorConversion());
druidOperatorMap.put(HiveToDateSqlOperator.INSTANCE, new DruidToDateOperatorConversion());
@@ -346,4 +348,33 @@ public class DruidSqlOperatorConverter {
);
}
+ public static class UnaryFunctionOperatorConversion implements org.apache.calcite.adapter.druid.DruidSqlOperatorConverter {
+
+ private final SqlOperator operator;
+ private final String druidOperator;
+
+ public UnaryFunctionOperatorConversion(SqlOperator operator, String druidOperator) {
+ this.operator = operator;
+ this.druidOperator = druidOperator;
+ }
+
+ @Override public SqlOperator calciteOperator() {
+ return operator;
+ }
+
+ @Override public String toDruidExpression(RexNode rexNode, RelDataType rowType,
+ DruidQuery druidQuery) {
+ final RexCall call = (RexCall) rexNode;
+
+ final List<String> druidExpressions = DruidExpressions.toDruidExpressions(
+ druidQuery, rowType,
+ call.getOperands());
+
+ if (druidExpressions == null) {
+ return null;
+ }
+
+ return DruidQuery.format("%s(%s)", druidOperator, Iterables.getOnlyElement(druidExpressions));
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/3a6ad266/ql/src/test/results/clientpositive/druid/druidmini_test1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/druid/druidmini_test1.q.out b/ql/src/test/results/clientpositive/druid/druidmini_test1.q.out
index 89da36a..4e078aa 100644
--- a/ql/src/test/results/clientpositive/druid/druidmini_test1.q.out
+++ b/ql/src/test/results/clientpositive/druid/druidmini_test1.q.out
@@ -814,7 +814,7 @@ STAGE PLANS:
properties:
druid.fieldNames vc,vc0
druid.fieldTypes boolean,boolean
- druid.query.json {"queryType":"scan","dataSource":"default.druid_table_n3","intervals":["1900-01-01T00:00:00.000Z/3000-01-01T00:00:00.000Z"],"virtualColumns":[{"type":"expression","name":"vc","expression":"(\"cstring1\" isnull)","outputType":"FLOAT"},{"type":"expression","name":"vc0","expression":"(\"cint\" notnull)","outputType":"FLOAT"}],"columns":["vc","vc0"],"resultFormat":"compactedList"}
+ druid.query.json {"queryType":"scan","dataSource":"default.druid_table_n3","intervals":["1900-01-01T00:00:00.000Z/3000-01-01T00:00:00.000Z"],"virtualColumns":[{"type":"expression","name":"vc","expression":"isnull(\"cstring1\")","outputType":"FLOAT"},{"type":"expression","name":"vc0","expression":"notnull(\"cint\")","outputType":"FLOAT"}],"columns":["vc","vc0"],"resultFormat":"compactedList"}
druid.query.type scan
Select Operator
expressions: vc (type: boolean), vc0 (type: boolean)