diff --git ql/src/java/org/apache/hadoop/hive/ql/metadata/Partition.java ql/src/java/org/apache/hadoop/hive/ql/metadata/Partition.java index f1bb368..1360e74 100644 --- ql/src/java/org/apache/hadoop/hive/ql/metadata/Partition.java +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/Partition.java @@ -198,7 +198,7 @@ public class Partition implements Serializable { } } // set default if columns are not set - if (tPartition.getSd().getCols() == null) { + if (tPartition.getSd().getCols() == null || tPartition.getSd().getCols().size() == 0) { if (table.getCols() != null) { tPartition.getSd().setCols(table.getCols()); } diff --git ql/src/test/queries/clientpositive/serde_reported_schema.q ql/src/test/queries/clientpositive/serde_reported_schema.q new file mode 100644 index 0000000..e20dfae --- /dev/null +++ ql/src/test/queries/clientpositive/serde_reported_schema.q @@ -0,0 +1,9 @@ +create table int_string + partitioned by (b string) + row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer" + with serdeproperties ( + "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.IntString", + "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol"); +describe int_string; +alter table int_string add partition (b='part1'); +describe int_string partition (b='part1'); \ No newline at end of file diff --git ql/src/test/results/clientpositive/serde_reported_schema.q.out ql/src/test/results/clientpositive/serde_reported_schema.q.out new file mode 100644 index 0000000..6fac935 --- /dev/null +++ ql/src/test/results/clientpositive/serde_reported_schema.q.out @@ -0,0 +1,38 @@ +PREHOOK: query: create table int_string + partitioned by (b string) + row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer" + with serdeproperties ( + "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.IntString", + "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol") +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table int_string + partitioned by (b string) + row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer" + with serdeproperties ( + "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.IntString", + "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@int_string +PREHOOK: query: describe int_string +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe int_string +POSTHOOK: type: DESCTABLE +myint int from deserializer +mystring string from deserializer +underscore_int int from deserializer +b string +PREHOOK: query: alter table int_string add partition (b='part1') +PREHOOK: type: ALTERTABLE_ADDPARTS +PREHOOK: Input: default@int_string +POSTHOOK: query: alter table int_string add partition (b='part1') +POSTHOOK: type: ALTERTABLE_ADDPARTS +POSTHOOK: Input: default@int_string +POSTHOOK: Output: default@int_string@b=part1 +PREHOOK: query: describe int_string partition (b='part1') +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe int_string partition (b='part1') +POSTHOOK: type: DESCTABLE +myint int from deserializer +mystring string from deserializer +underscore_int int from deserializer +b string