HIVE-20035: write booleans as long when serializing to druid (Nishant Bangarwa, reviewed by Jesus Camacho Rodriguez)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c191ea5e Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c191ea5e Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c191ea5e Branch: refs/heads/branch-3 Commit: c191ea5e94e5e54f3191bdaf4c2a549665d94230 Parents: c3bdc8b Author: Nishant Bangarwa <[email protected]> Authored: Mon Jul 23 22:50:46 2018 -0700 Committer: Jesus Camacho Rodriguez <[email protected]> Committed: Sat Jul 28 08:48:35 2018 -0700 ---------------------------------------------------------------------- .../hadoop/hive/druid/serde/DruidSerDe.java | 2 +- .../clientpositive/druidmini_expressions.q | 7 ++-- .../druid/druidmini_expressions.q.out | 37 +++++++++++++++++--- 3 files changed, 39 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/c191ea5e/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java ---------------------------------------------------------------------- diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java index fcde538..47924a6 100644 --- a/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java +++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/serde/DruidSerDe.java @@ -346,7 +346,7 @@ import static org.joda.time.format.ISODateTimeFormat.dateOptionalTimeParser; break; case BOOLEAN: res = ((BooleanObjectInspector) fields.get(i).getFieldObjectInspector()) - .get(values.get(i)); + .get(values.get(i)) ? 1L : 0L; break; default: throw new SerDeException("Unsupported type: " + types[i].getPrimitiveCategory()); http://git-wip-us.apache.org/repos/asf/hive/blob/c191ea5e/ql/src/test/queries/clientpositive/druidmini_expressions.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/druidmini_expressions.q b/ql/src/test/queries/clientpositive/druidmini_expressions.q index 7857973..273c803 100644 --- a/ql/src/test/queries/clientpositive/druidmini_expressions.q +++ b/ql/src/test/queries/clientpositive/druidmini_expressions.q @@ -127,12 +127,15 @@ explain SELECT DATE_ADD(cast(`__time` as date), CAST((cdouble / 1000) AS INT)) a SELECT DATE_ADD(cast(`__time` as date), CAST((cdouble / 1000) AS INT)) as date_1, DATE_SUB(cast(`__time` as date), CAST((cdouble / 1000) AS INT)) as date_2 from druid_table_n0 order by date_1, date_2 limit 3; -- Boolean Values +-- Expected results of this query are wrong due to https://issues.apache.org/jira/browse/CALCITE-2319 +-- It should get fixed once we upgrade calcite + EXPLAIN SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2; SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2; - + -- Expected results of this query are wrong due to https://issues.apache.org/jira/browse/CALCITE-2319 -- It should get fixed once we upgrade calcite SELECT ctinyint > 2, count(*) from druid_table_n0 GROUP BY ctinyint > 2; - + EXPLAIN SELECT ctinyint > 2, count(*) from druid_table_n0 GROUP BY ctinyint > 2; DROP TABLE druid_table_n0; http://git-wip-us.apache.org/repos/asf/hive/blob/c191ea5e/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out b/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out index d6ea990..51470a4 100644 --- a/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out +++ b/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out @@ -1292,16 +1292,45 @@ POSTHOOK: Output: hdfs://### HDFS PATH ### 1969-03-19 1970-10-14 1969-11-13 1970-02-17 PREHOOK: query: -- Boolean Values - SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2 + + + EXPLAIN SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2 +PREHOOK: type: QUERY +POSTHOOK: query: -- Boolean Values + + + EXPLAIN SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: druid_table_n0 + properties: + druid.fieldNames cboolean2,$f1 + druid.fieldTypes boolean,bigint + druid.query.json {"queryType":"groupBy","dataSource":"default.druid_table_n0","granularity":"all","dimensions":[{"type":"default","dimension":"cboolean2","outputName":"cboolean2","outputType":"LONG"}],"limitSpec":{"type":"default"},"aggregations":[{"type":"count","name":"$f1"}],"intervals":["1900-01-01T00:00:00.000Z/3000-01-01T00:00:00.000Z"]} + druid.query.type groupBy + Select Operator + expressions: cboolean2 (type: boolean), $f1 (type: bigint) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2 PREHOOK: type: QUERY PREHOOK: Input: default@druid_table_n0 PREHOOK: Output: hdfs://### HDFS PATH ### -POSTHOOK: query: -- Boolean Values - SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2 +POSTHOOK: query: SELECT cboolean2, count(*) from druid_table_n0 GROUP BY cboolean2 POSTHOOK: type: QUERY POSTHOOK: Input: default@druid_table_n0 POSTHOOK: Output: hdfs://### HDFS PATH ### -false 6105 +false 3148 +true 2957 PREHOOK: query: -- Expected results of this query are wrong due to https://issues.apache.org/jira/browse/CALCITE-2319 -- It should get fixed once we upgrade calcite SELECT ctinyint > 2, count(*) from druid_table_n0 GROUP BY ctinyint > 2
