[ 
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)

Reply via email to