diff --git ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index d661f10..8e5c139 100644 --- ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -1729,6 +1729,8 @@ public Partition loadPartition(Path loadPath, Table tbl, } perfLogger.PerfLogEnd("MoveTask", "FileMoves"); Partition newTPart = oldPart != null ? oldPart : new Partition(tbl, partSpec, newPartPath); + newTPart.getTPartition().getSd().setCols(tbl.getCols()); + alterPartitionSpecInMemory(tbl, partSpec, newTPart.getTPartition(), inheritTableSpecs, newPartPath.toString()); validatePartition(newTPart); diff --git ql/src/test/queries/clientpositive/insert_overwrite_partition_with_added_columns.q ql/src/test/queries/clientpositive/insert_overwrite_partition_with_added_columns.q new file mode 100644 index 0000000..4b4336b --- /dev/null +++ ql/src/test/queries/clientpositive/insert_overwrite_partition_with_added_columns.q @@ -0,0 +1,14 @@ +create table src_table( + i int +) +PARTITIONED BY (`date` string); + +insert overwrite table src_table partition(`date`='20170905') values (3); + +select * from src_table where `date` = '20170905'; + +alter table src_table add columns (bi bigint); + +insert overwrite table src_table partition(`date`='20170905') values (3, 5); + +select * from src_table where `date` = '20170905'; diff --git ql/src/test/results/clientpositive/insert_overwrite_partition_with_added_columns.q.out ql/src/test/results/clientpositive/insert_overwrite_partition_with_added_columns.q.out new file mode 100644 index 0000000..6875cdd --- /dev/null +++ ql/src/test/results/clientpositive/insert_overwrite_partition_with_added_columns.q.out @@ -0,0 +1,59 @@ +PREHOOK: query: create table src_table( + i int +) +PARTITIONED BY (`date` string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@src_table +POSTHOOK: query: create table src_table( + i int +) +PARTITIONED BY (`date` string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@src_table +PREHOOK: query: insert overwrite table src_table partition(`date`='20170905') values (3) +PREHOOK: type: QUERY +PREHOOK: Output: default@src_table@date=20170905 +POSTHOOK: query: insert overwrite table src_table partition(`date`='20170905') values (3) +POSTHOOK: type: QUERY +POSTHOOK: Output: default@src_table@date=20170905 +POSTHOOK: Lineage: src_table PARTITION(date=20170905).i EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from src_table where `date` = '20170905' +PREHOOK: type: QUERY +PREHOOK: Input: default@src_table +PREHOOK: Input: default@src_table@date=20170905 +#### A masked pattern was here #### +POSTHOOK: query: select * from src_table where `date` = '20170905' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_table +POSTHOOK: Input: default@src_table@date=20170905 +#### A masked pattern was here #### +3 20170905 +PREHOOK: query: alter table src_table add columns (bi bigint) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@src_table +PREHOOK: Output: default@src_table +POSTHOOK: query: alter table src_table add columns (bi bigint) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@src_table +POSTHOOK: Output: default@src_table +PREHOOK: query: insert overwrite table src_table partition(`date`='20170905') values (3, 5) +PREHOOK: type: QUERY +PREHOOK: Output: default@src_table@date=20170905 +POSTHOOK: query: insert overwrite table src_table partition(`date`='20170905') values (3, 5) +POSTHOOK: type: QUERY +POSTHOOK: Output: default@src_table@date=20170905 +POSTHOOK: Lineage: src_table PARTITION(date=20170905).bi EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +POSTHOOK: Lineage: src_table PARTITION(date=20170905).i EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from src_table where `date` = '20170905' +PREHOOK: type: QUERY +PREHOOK: Input: default@src_table +PREHOOK: Input: default@src_table@date=20170905 +#### A masked pattern was here #### +POSTHOOK: query: select * from src_table where `date` = '20170905' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src_table +POSTHOOK: Input: default@src_table@date=20170905 +#### A masked pattern was here #### +3 5 20170905