[
https://issues.apache.org/jira/browse/HIVE-15995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16389925#comment-16389925
]
Vihang Karajgaonkar commented on HIVE-15995:
--------------------------------------------
Hi [~szita] thanks for the updated patch. I was looking at the other queries
which take in {{cascade}} option and I noticed that they have a partition spec
in the query syntax. Eg: add/rename column is under
alterTblPartitionStatementSuffix in HiveParser.g I think it has to do with the
option of adding partition spec to the command. Do you think it makes sense to
add a optional partition spec as well similar to add/replace columns query? I
think column descriptors are also at partition level. Eg. you can do a
{{describe table foo partition (p1=10);}} and hive will show the column
information for that partition. So users can potentially update the columns at
a partition level as well. The current patch is either just the table no
partitions or table with all partitions. There is no way to update columns for
a subset of partitions.
Also, in the qtest can you add a test for a partitioned table? Include describe
table .. partition .. syntax to confirm that partition columns are also getting
updated.
> Syncing metastore table with serde schema
> -----------------------------------------
>
> Key: HIVE-15995
> URL: https://issues.apache.org/jira/browse/HIVE-15995
> Project: Hive
> Issue Type: Bug
> Components: Metastore
> Affects Versions: 1.2.1, 2.1.0, 3.0.0
> Reporter: Michal Ferlinski
> Assignee: Adam Szita
> Priority: Major
> Attachments: HIVE-15995.1.patch, HIVE-15995.2.patch,
> HIVE-15995.3.patch, HIVE-15995.4.patch, HIVE-15995.patch, cx1.avsc, cx2.avsc
>
>
> Hive enables table schema evolution via properties. For avro e.g. we can
> alter the 'avro.schema.url' property to update table schema to the next
> version. Updating properties however doesn't affect column list stored in
> metastore DB so the table is not in the newest version when returned from
> metastore API. This is problem for tools working with metastore (e.g. Presto).
> To solve this issue I suggest to introduce new DDL statement syncing
> metastore columns with those from serde:
> {code}
> ALTER TABLE user_test1 UPDATE COLUMNS
> {code}
> Note that this is format independent solution.
> To reproduce, follow the instructions below:
> - Create table based on avro schema version 1 (cxv1.avsc)
> {code}
> CREATE EXTERNAL TABLE user_test1
> PARTITIONED BY (dt string)
> ROW FORMAT SERDE
> 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
> STORED AS INPUTFORMAT
> 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
> OUTPUTFORMAT
> 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
> LOCATION
> '/tmp/schema-evolution/user_test1'
> TBLPROPERTIES ('avro.schema.url'='/tmp/schema-evolution/cx1.avsc');
> {code}
> - Update schema to version 2 (cx2.avsc)
> {code}
> ALTER TABLE user_test1 SET TBLPROPERTIES ('avro.schema.url' =
> '/tmp/schema-evolution/cx2.avsc');
> {code}
> - Print serde columns (top info) and metastore columns (Detailed Table
> Information):
> {code}
> DESCRIBE EXTENDED user_test1
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)