diff --git ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java index f4a26abb95..3fd93cad9a 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedParquetRecordReader.java @@ -499,8 +499,15 @@ private PrimitiveType getElementType(Type type) { throw new RuntimeException( "Current Parquet Vectorization reader doesn't support nested type"); } - return type.asGroupType().getFields().get(0).asGroupType().getFields().get(0) - .asPrimitiveType(); + + Type childType = type.asGroupType().getFields().get(0); + + // Parquet file generated using thrift may have child type as PrimitiveType + if (childType.isPrimitive()) { + return childType.asPrimitiveType(); + } else { + return childType.asGroupType().getFields().get(0).asPrimitiveType(); + } } // Build VectorizedParquetColumnReader via Hive typeInfo and Parquet schema diff --git ql/src/test/queries/clientpositive/parquet_thrift_array_of_primitives.q ql/src/test/queries/clientpositive/parquet_thrift_array_of_primitives.q index edf3c85033..02f9ef78f6 100644 --- ql/src/test/queries/clientpositive/parquet_thrift_array_of_primitives.q +++ ql/src/test/queries/clientpositive/parquet_thrift_array_of_primitives.q @@ -1,4 +1,4 @@ -set hive.vectorized.execution.enabled=false; +set hive.vectorized.execution.enabled=true; -- this test creates a Parquet table with an array of structs @@ -11,4 +11,10 @@ OVERWRITE INTO TABLE parquet_thrift_array_of_primitives; SELECT * FROM parquet_thrift_array_of_primitives; +CREATE TEMPORARY TABLE temp_parquet_thrift_array_of_primitives as SELECT * FROM parquet_thrift_array_of_primitives; + +SELECT * FROM temp_parquet_thrift_array_of_primitives; + +DROP TABLE temp_parquet_thrift_array_of_primitives; + DROP TABLE parquet_thrift_array_of_primitives; diff --git ql/src/test/results/clientpositive/parquet_thrift_array_of_primitives.q.out ql/src/test/results/clientpositive/parquet_thrift_array_of_primitives.q.out index e97de66dc6..46afcef34b 100644 --- ql/src/test/results/clientpositive/parquet_thrift_array_of_primitives.q.out +++ ql/src/test/results/clientpositive/parquet_thrift_array_of_primitives.q.out @@ -29,6 +29,33 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@parquet_thrift_array_of_primitives #### A masked pattern was here #### [34,35,36] +PREHOOK: query: CREATE TEMPORARY TABLE temp_parquet_thrift_array_of_primitives as SELECT * FROM parquet_thrift_array_of_primitives +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@parquet_thrift_array_of_primitives +PREHOOK: Output: database:default +PREHOOK: Output: default@temp_parquet_thrift_array_of_primitives +POSTHOOK: query: CREATE TEMPORARY TABLE temp_parquet_thrift_array_of_primitives as SELECT * FROM parquet_thrift_array_of_primitives +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@parquet_thrift_array_of_primitives +POSTHOOK: Output: database:default +POSTHOOK: Output: default@temp_parquet_thrift_array_of_primitives +PREHOOK: query: SELECT * FROM temp_parquet_thrift_array_of_primitives +PREHOOK: type: QUERY +PREHOOK: Input: default@temp_parquet_thrift_array_of_primitives +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM temp_parquet_thrift_array_of_primitives +POSTHOOK: type: QUERY +POSTHOOK: Input: default@temp_parquet_thrift_array_of_primitives +#### A masked pattern was here #### +[34,35,36] +PREHOOK: query: DROP TABLE temp_parquet_thrift_array_of_primitives +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@temp_parquet_thrift_array_of_primitives +PREHOOK: Output: default@temp_parquet_thrift_array_of_primitives +POSTHOOK: query: DROP TABLE temp_parquet_thrift_array_of_primitives +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@temp_parquet_thrift_array_of_primitives +POSTHOOK: Output: default@temp_parquet_thrift_array_of_primitives PREHOOK: query: DROP TABLE parquet_thrift_array_of_primitives PREHOOK: type: DROPTABLE PREHOOK: Input: default@parquet_thrift_array_of_primitives