[
https://issues.apache.org/jira/browse/HIVE-27728?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Naveen Gangam reassigned HIVE-27728:
------------------------------------
Assignee: Zhihua Deng
> Changed behavior for alter table rename partition from legacy tables
> --------------------------------------------------------------------
>
> Key: HIVE-27728
> URL: https://issues.apache.org/jira/browse/HIVE-27728
> Project: Hive
> Issue Type: Bug
> Reporter: Naveen Gangam
> Assignee: Zhihua Deng
> Priority: Major
>
> set hive.create.as.external.legacy=true;
> CREATE TABLE default.metadata_test1(
> emp_number int,
> emp_name string,
> city string)
> PARTITIONED BY(state string)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ‘,’;
> INSERT INTO default.metadata_test1 PARTITION(state=‘A’) VALUES (11, ‘ABC’,
> ‘AA’);
> INSERT INTO default.metadata_test1 PARTITION(state=‘B’) VALUES (12, ‘XYZ’,
> ‘BX’);
> INSERT INTO default.metadata_test1 PARTITION(state=‘B’) VALUES (13, ‘UVW’,
> ‘BU’);
> from hdfs
> $ hdfs dfs -ls /warehouse/tablespace/external/hive/metadata_test1
> Found 2 items
> drwxr-xr-x - hive hive 0 2023-08-11 14:24
> /warehouse/tablespace/external/hive/metadata_test1/state=A
> drwxr-xr-x - hive hive 0 2023-08-11 14:25
> /warehouse/tablespace/external/hive/metadata_test1/state=B
> Now when we alter the partition.
> ALTER TABLE default.metadata_test1 PARTITION (state=‘A’) RENAME TO PARTITION
> (state=‘C’);
> select * from default.metadata_test1;
> +----------------------------+--------------------------+----------------------+-----------------------+
> | metadata_test1.emp_number | metadata_test1.emp_name | metadata_test1.city |
> metadata_test1.state |
> +----------------------------+--------------------------+----------------------+-----------------------+
> | 12 | XYZ | BX | B |
> | 13 | UVW | BU | B |
> | 11 | ABC | AA | C |
> +----------------------------+--------------------------+----------------------+-----------------------+
> show partitions default.metadata_test1;
> +------------+
> | partition |
> +------------+
> | state=B |
> | state=C |
> +------------+
> But from HDFS
> hdfs dfs -ls /warehouse/tablespace/external/hive/metadata_test1
> Found 2 items
> drwxr-xr-x - hive hive 0 2023-08-11 14:24
> /warehouse/tablespace/external/hive/metadata_test1/state=A
> drwxr-xr-x - hive hive 0 2023-08-11 14:25
> /warehouse/tablespace/external/hive/metadata_test1/state=B
> Hive only relocates/renames the partition locations to match the new
> partition value if it is a MANAGED table. For external tables, we assume that
> ETL pipelines are writing to the old location and thus will not rename the
> dir.
> But for legacy tables, (create table) that would have created non-acid
> managed tables, we convert this tables to EXTERNAL_TABLE but with auto-purge
> enabled. For such tables, we should take the liberty to managed these
> locations as well to match the legacy MANAGED table behavior.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)