diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java index bbf8862aa0751b1ca8663668b097eb38a981926c..1613a5bdf74e691c0d02a69ca016719a2c047eb6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorExpressionWriterFactory.java @@ -1212,7 +1212,8 @@ public static void processVectorInspector( ArrayList columnNames = new ArrayList(); int i = 0; for(StructField field : fields) { - ObjectInspector fieldObjInsp = field.getFieldObjectInspector(); + ObjectInspector fieldObjInsp = TypeInfoUtils.getStandardWritableObjectInspectorFromTypeInfo( + TypeInfoUtils.getTypeInfoFromTypeString(field.getFieldObjectInspector().getTypeName())); writers[i] = VectorExpressionWriterFactory. genVectorExpressionWritable(fieldObjInsp); columnNames.add(field.getFieldName()); diff --git a/ql/src/test/queries/clientpositive/vector_join.q b/ql/src/test/queries/clientpositive/vector_join.q new file mode 100644 index 0000000000000000000000000000000000000000..9238a6eb79cc5b2f41e96ce47bfa0ef38521182f --- /dev/null +++ b/ql/src/test/queries/clientpositive/vector_join.q @@ -0,0 +1,43 @@ +DROP TABLE IF EXISTS test1_vc; +DROP TABLE IF EXISTS test2_vc; +CREATE TABLE test1_vc + ( + id string) + PARTITIONED BY ( + cr_year bigint, + cr_month bigint) + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +TBLPROPERTIES ( + 'serialization.null.format'='' ); +CREATE TABLE test2_vc( + id string + ) + PARTITIONED BY ( + cr_year bigint, + cr_month bigint) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +TBLPROPERTIES ( + 'serialization.null.format'='' + ); +set hive.auto.convert.join=false; +set hive.vectorized.execution.enabled = true; +set hive.mapred.mode=nonstrict; +SELECT cr.id1 , +cr.id2 +FROM +(SELECT t1.id id1, + t2.id id2 + from + (select * from test1_vc ) t1 + left outer join test2_vc t2 + on t1.id=t2.id) cr; diff --git a/ql/src/test/results/clientpositive/vector_join.q.out b/ql/src/test/results/clientpositive/vector_join.q.out new file mode 100644 index 0000000000000000000000000000000000000000..94c0290222e0495c93e10cd78ba3b7bf03bf9ade --- /dev/null +++ b/ql/src/test/results/clientpositive/vector_join.q.out @@ -0,0 +1,104 @@ +PREHOOK: query: DROP TABLE IF EXISTS test1_vc +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS test1_vc +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS test2_vc +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS test2_vc +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE test1_vc + ( + id string) + PARTITIONED BY ( + cr_year bigint, + cr_month bigint) + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +TBLPROPERTIES ( + 'serialization.null.format'='' ) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test1_vc +POSTHOOK: query: CREATE TABLE test1_vc + ( + id string) + PARTITIONED BY ( + cr_year bigint, + cr_month bigint) + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +TBLPROPERTIES ( + 'serialization.null.format'='' ) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test1_vc +PREHOOK: query: CREATE TABLE test2_vc( + id string + ) + PARTITIONED BY ( + cr_year bigint, + cr_month bigint) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +TBLPROPERTIES ( + 'serialization.null.format'='' + ) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test2_vc +POSTHOOK: query: CREATE TABLE test2_vc( + id string + ) + PARTITIONED BY ( + cr_year bigint, + cr_month bigint) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' +TBLPROPERTIES ( + 'serialization.null.format'='' + ) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test2_vc +PREHOOK: query: SELECT cr.id1 , +cr.id2 +FROM +(SELECT t1.id id1, + t2.id id2 + from + (select * from test1_vc ) t1 + left outer join test2_vc t2 + on t1.id=t2.id) cr +PREHOOK: type: QUERY +PREHOOK: Input: default@test1_vc +PREHOOK: Input: default@test2_vc +#### A masked pattern was here #### +POSTHOOK: query: SELECT cr.id1 , +cr.id2 +FROM +(SELECT t1.id id1, + t2.id id2 + from + (select * from test1_vc ) t1 + left outer join test2_vc t2 + on t1.id=t2.id) cr +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test1_vc +POSTHOOK: Input: default@test2_vc +#### A masked pattern was here ####