From daf458a9376043af7d709041501b9870d8813078 Mon Sep 17 00:00:00 2001 From: Nishant Date: Fri, 29 Jun 2018 21:31:09 +0530 Subject: [PATCH] [BUG-20035] Serialize boolean as long for druid --- .../apache/hadoop/hive/druid/serde/DruidSerDe.java | 2 +- .../queries/clientpositive/druidmini_expressions.q | 7 +++-- .../druid/druidmini_expressions.q.out | 36 +++++++++++++++++++--- 3 files changed, 38 insertions(+), 7 deletions(-) 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 f0e12a22fe..82eee1f2ed 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 @@ -347,7 +347,7 @@ protected SegmentAnalysis submitMetadataRequest(String address, SegmentMetadataQ 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()); diff --git a/ql/src/test/queries/clientpositive/druidmini_expressions.q b/ql/src/test/queries/clientpositive/druidmini_expressions.q index fad8f73520..bedce7f958 100644 --- a/ql/src/test/queries/clientpositive/druidmini_expressions.q +++ b/ql/src/test/queries/clientpositive/druidmini_expressions.q @@ -126,12 +126,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; 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 fd77a915d9..d05b9f9c4d 100644 --- a/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out +++ b/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out @@ -1289,18 +1289,46 @@ 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":"STRING"}],"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 ### NULL 8 false 3140 -true 2957 +false 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 -- 2.15.1 (Apple Git-101)