[ https://issues.apache.org/jira/browse/HIVE-3279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13420721#comment-13420721 ]
Travis Crawford commented on HIVE-3279: --------------------------------------- I believe the issue happens with serde-reported columns; it works correctly as you pointed out when explicit columns are sued. Consider the following. I believe the correct behavior is for part1 to inherit the table columns. Here we see part1 only has the partition key. {code} hive> create external 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"); OK Time taken: 0.203 seconds hive> describe int_string; OK myint int from deserializer mystring string from deserializer underscore_int int from deserializer b string Time taken: 0.098 seconds hive> alter table int_string add partition (b='part1'); OK Time taken: 0.154 seconds hive> describe int_string partition (b='part1'); OK b string Time taken: 0.072 seconds hive> {code} > Table schema not being copied to Partitions with no columns > ----------------------------------------------------------- > > Key: HIVE-3279 > URL: https://issues.apache.org/jira/browse/HIVE-3279 > Project: Hive > Issue Type: Bug > Reporter: Travis Crawford > Assignee: Travis Crawford > > Hive has a feature where {{Partition}}'s without any defined columns use the > {{Table}} schema. This happens in > {{[Partition.initialize|https://github.com/apache/hive/blob/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Partition.java#L167]}} > {code} > // set default if columns are not set > if (tPartition.getSd().getCols() == null) { > if (table.getCols() != null) { > tPartition.getSd().setCols(table.getCols()); > } > } > {code} > There's an issue though, because > {{[Table.getEmptyTable|https://github.com/apache/hive/blob/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java#L121]}} > initializes cols to an empty array, which of course is not null, causing the > above feature to not work as expected. > I'm not sure of the fix - is there a case where cols can indeed be null? I > think the best thing to do here is: > {code} > - if (tPartition.getSd().getCols() == null) { > + if (tPartition.getSd().getCols() == null || > tPartition.getSd().getCols().size() == 0) { > {code} > Thoughts? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira