Repository: hive Updated Branches: refs/heads/master 542641d0f -> 59a9511a4
HIVE-14435: Vectorization: missed vectorization for const varchar() (Gopal Vijayaraghavan, reviewed by Sergey Shelukhin) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/59a9511a Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/59a9511a Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/59a9511a Branch: refs/heads/master Commit: 59a9511a4258d9e9c3a20ca3e487a3f1dddcc7e8 Parents: 542641d Author: Gopal Vijayaraghavan <[email protected]> Authored: Fri Aug 19 15:49:57 2016 -0700 Committer: Matt McCline <[email protected]> Committed: Fri Aug 19 15:49:57 2016 -0700 ---------------------------------------------------------------------- .../ql/exec/vector/VectorizationContext.java | 4 +- .../expressions/ConstantVectorExpression.java | 8 +-- .../test/queries/clientpositive/vector_const.q | 13 ++++ .../results/clientpositive/vector_const.q.out | 62 ++++++++++++++++++++ 4 files changed, 81 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/59a9511a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index fca844a..3f71fa8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -1082,9 +1082,9 @@ public class VectorizationContext { case STRING: return new ConstantVectorExpression(outCol, ((String) constantValue).getBytes()); case CHAR: - return new ConstantVectorExpression(outCol, ((HiveChar) constantValue)); + return new ConstantVectorExpression(outCol, ((HiveChar) constantValue), typeName); case VARCHAR: - return new ConstantVectorExpression(outCol, ((HiveVarchar) constantValue)); + return new ConstantVectorExpression(outCol, ((HiveVarchar) constantValue), typeName); default: throw new HiveException("Unsupported constant type: " + typeName + ", object class " + constantValue.getClass().getSimpleName()); } http://git-wip-us.apache.org/repos/asf/hive/blob/59a9511a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java index 8a743f6..72749b7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/ConstantVectorExpression.java @@ -72,13 +72,13 @@ public class ConstantVectorExpression extends VectorExpression { setBytesValue(value); } - public ConstantVectorExpression(int outputColumn, HiveChar value) { - this(outputColumn, "char"); + public ConstantVectorExpression(int outputColumn, HiveChar value, String typeName) { + this(outputColumn, typeName); setBytesValue(value.getStrippedValue().getBytes()); } - public ConstantVectorExpression(int outputColumn, HiveVarchar value) { - this(outputColumn, "varchar"); + public ConstantVectorExpression(int outputColumn, HiveVarchar value, String typeName) { + this(outputColumn, typeName); setBytesValue(value.getValue().getBytes()); } http://git-wip-us.apache.org/repos/asf/hive/blob/59a9511a/ql/src/test/queries/clientpositive/vector_const.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/vector_const.q b/ql/src/test/queries/clientpositive/vector_const.q new file mode 100644 index 0000000..1c7d35c --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_const.q @@ -0,0 +1,13 @@ + +SET hive.vectorized.execution.enabled=true; +SET hive.fetch.task.conversion=none; + +CREATE TEMPORARY TABLE varchar_const_1 (c1 int) STORED AS ORC; + +INSERT INTO varchar_const_1 values(42); + +EXPLAIN +SELECT CONCAT(CAST('F' AS CHAR(2)), CAST('F' AS VARCHAR(2))) FROM VARCHAR_CONST_1; + +SELECT CONCAT(CAST('F' AS CHAR(2)), CAST('F' AS VARCHAR(2))) FROM VARCHAR_CONST_1; + http://git-wip-us.apache.org/repos/asf/hive/blob/59a9511a/ql/src/test/results/clientpositive/vector_const.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/vector_const.q.out b/ql/src/test/results/clientpositive/vector_const.q.out new file mode 100644 index 0000000..cdb86fa --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_const.q.out @@ -0,0 +1,62 @@ +PREHOOK: query: CREATE TEMPORARY TABLE varchar_const_1 (c1 int) STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@varchar_const_1 +POSTHOOK: query: CREATE TEMPORARY TABLE varchar_const_1 (c1 int) STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@varchar_const_1 +PREHOOK: query: INSERT INTO varchar_const_1 values(42) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@varchar_const_1 +POSTHOOK: query: INSERT INTO varchar_const_1 values(42) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@varchar_const_1 +POSTHOOK: Lineage: varchar_const_1.c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: EXPLAIN +SELECT CONCAT(CAST('F' AS CHAR(2)), CAST('F' AS VARCHAR(2))) FROM VARCHAR_CONST_1 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +SELECT CONCAT(CAST('F' AS CHAR(2)), CAST('F' AS VARCHAR(2))) FROM VARCHAR_CONST_1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: varchar_const_1 + Statistics: Num rows: 1 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 'FF' (type: varchar(4)) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 86 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 86 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + Execution mode: vectorized + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT CONCAT(CAST('F' AS CHAR(2)), CAST('F' AS VARCHAR(2))) FROM VARCHAR_CONST_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@varchar_const_1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT CONCAT(CAST('F' AS CHAR(2)), CAST('F' AS VARCHAR(2))) FROM VARCHAR_CONST_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@varchar_const_1 +#### A masked pattern was here #### +FF
