Skip to content

Commit

Permalink
HIVE-27994: Optimize renaming the partitioned table (#4995) (Zhihua D…
Browse files Browse the repository at this point in the history
…eng, reviewed by Butao Zhang, Sai Hemanth Gantasala)
  • Loading branch information
dengzhhu653 committed Jan 20, 2024
1 parent d06fb43 commit 72fd26d
Show file tree
Hide file tree
Showing 5 changed files with 519 additions and 59 deletions.
40 changes: 40 additions & 0 deletions ql/src/test/queries/clientpositive/rename_table.q
@@ -0,0 +1,40 @@
--! qt:dataset:src
--! qt:dataset:part
-- This test verifies that if the table after rename can still fetch the column statistics
set hive.stats.kll.enable=true;
set metastore.stats.fetch.bitvector=true;
set metastore.stats.fetch.kll=true;
set hive.stats.autogather=true;
set hive.stats.column.autogather=true;

CREATE TABLE rename_partition_table0 (key STRING, value STRING) PARTITIONED BY (part STRING)
STORED AS ORC;

INSERT OVERWRITE TABLE rename_partition_table0 PARTITION (part = '1') SELECT * FROM src where rand(1) < 0.5;
ALTER TABLE rename_partition_table0 ADD COLUMNS (new_col INT);
INSERT OVERWRITE TABLE rename_partition_table0 PARTITION (part = '2') SELECT src.*, 1 FROM src;

ALTER TABLE rename_partition_table0 RENAME TO rename_partition_table1;
DESCRIBE FORMATTED rename_partition_table1;
DESCRIBE FORMATTED rename_partition_table1 PARTITION (part='1') key;
DESCRIBE FORMATTED rename_partition_table1 PARTITION (part='1') value;
DESCRIBE FORMATTED rename_partition_table1 PARTITION (part='2') key;
DESCRIBE FORMATTED rename_partition_table1 PARTITION (part='2') value;
DESCRIBE FORMATTED rename_partition_table1 PARTITION (part='2') new_col;

CREATE EXTERNAL TABLE rename_partition_table_ext0 (key STRING, value STRING) PARTITIONED BY (part STRING)
STORED AS ORC;

INSERT OVERWRITE TABLE rename_partition_table_ext0 PARTITION (part = '1') SELECT * FROM src where rand(1) < 0.5;
ALTER TABLE rename_partition_table_ext0 CHANGE COLUMN value val STRING CASCADE;
INSERT OVERWRITE TABLE rename_partition_table_ext0 PARTITION (part = '2') SELECT * FROM src;

ALTER TABLE rename_partition_table_ext0 RENAME TO rename_partition_table_ext1;
DESCRIBE FORMATTED rename_partition_table_ext1;
DESCRIBE FORMATTED rename_partition_table_ext1 PARTITION (part='1') key;
DESCRIBE FORMATTED rename_partition_table_ext1 PARTITION (part='1') val;
DESCRIBE FORMATTED rename_partition_table_ext1 PARTITION (part='2') key;
DESCRIBE FORMATTED rename_partition_table_ext1 PARTITION (part='2') val;

DROP TABLE rename_partition_table1;
DROP TABLE rename_partition_table_ext1;

0 comments on commit 72fd26d

Please sign in to comment.