diff --git a/data/files/grad.avsc b/data/files/grad.avsc new file mode 100644 index 0000000000000000000000000000000000000000..0f12e60a906b41d09e31072593062bb66261565a --- /dev/null +++ b/data/files/grad.avsc @@ -0,0 +1,12 @@ +{"namespace": "devmode", +"type": "record", +"name": "gradinfo", +"fields": [ +{"name": "col1", "type": "string"}, +{"name": "col2", "type": "string"}, +{"name": "col3", "type": "double"}, +{"name": "col4", "type": "string"}, +{"name": "col5", "type": "string"}, +{"name": "col6", "type": "int"} +] +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index 3fdcc5319a1d1609996ce95b3a0baa6796aeba60..05f7187642572e7f9b67c8144e4a9c9a0c47c197 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -657,7 +657,7 @@ public void createTable(Table tbl, boolean ifNotExists) throws HiveException { if (tbl.getDbName() == null || "".equals(tbl.getDbName().trim())) { tbl.setDbName(SessionState.get().getCurrentDatabase()); } - if (tbl.getCols().size() == 0) { + if (tbl.getCols().size() == 0 || tbl.getSd().getColsSize() == 0) { tbl.setFields(MetaStoreUtils.getFieldsFromDeserializer(tbl.getTableName(), tbl.getDeserializer())); } diff --git a/ql/src/test/queries/clientpositive/compustat_avro.q b/ql/src/test/queries/clientpositive/compustat_avro.q new file mode 100644 index 0000000000000000000000000000000000000000..4d1b60472d7a8098026a27a4aeff3528db594fa2 --- /dev/null +++ b/ql/src/test/queries/clientpositive/compustat_avro.q @@ -0,0 +1,15 @@ +drop table if exists testAvro; +create table testAvro + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' + STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' + OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' + TBLPROPERTIES ('avro.schema.url'='file://${system:hive.root}data/files/grad.avsc'); + +describe formatted testAvro.col1; + +analyze table testAvro compute statistics for columns col1,col3; + +describe formatted testAvro.col1; diff --git a/ql/src/test/results/clientpositive/compustat_avro.q.out b/ql/src/test/results/clientpositive/compustat_avro.q.out new file mode 100644 index 0000000000000000000000000000000000000000..8422108aba101c473fe43a917bf6a16e1a7ec4a8 --- /dev/null +++ b/ql/src/test/results/clientpositive/compustat_avro.q.out @@ -0,0 +1,52 @@ +PREHOOK: query: drop table if exists testAvro +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists testAvro +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table testAvro + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' + STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' + OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +#### A masked pattern was here #### +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@testAvro +POSTHOOK: query: create table testAvro + ROW FORMAT SERDE + 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' + STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' + OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' +#### A masked pattern was here #### +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@testAvro +PREHOOK: query: describe formatted testAvro.col1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@testavro +POSTHOOK: query: describe formatted testAvro.col1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@testavro +# col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment + +col1 string from deserializer +PREHOOK: query: analyze table testAvro compute statistics for columns col1,col3 +PREHOOK: type: QUERY +PREHOOK: Input: default@testavro +#### A masked pattern was here #### +POSTHOOK: query: analyze table testAvro compute statistics for columns col1,col3 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@testavro +#### A masked pattern was here #### +PREHOOK: query: describe formatted testAvro.col1 +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@testavro +POSTHOOK: query: describe formatted testAvro.col1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@testavro +# col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment + +col1 string 0 0 0.0 0 from deserializer