[ 
https://issues.apache.org/jira/browse/HIVE-15995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16414623#comment-16414623
 ] 

Vihang Karajgaonkar commented on HIVE-15995:
--------------------------------------------

HI [~szita] Thanks for making the changes. Is the q.out file correct? Eg: I see 
the following sequence of statements in the qfile

{noformat}
--case: partial partition spec
86      ALTER TABLE avro_extschema_url_parted SET
87       TBLPROPERTIES ('avro.schema.url'='${system:test.tmp.dir}/grad2.avsc');
88      ALTER TABLE avro_extschema_url_parted PARTITION (p1=2018) UPDATE 
COLUMNS;
89      ALTER TABLE avro_extschema_url_parted UNSET TBLPROPERTIES 
('avro.schema.url');
90      
91      DESCRIBE avro_extschema_url_parted;
92      DESCRIBE avro_extschema_url_parted PARTITION (p1=2017, p2=11);
93      DESCRIBE avro_extschema_url_parted PARTITION (p1=2018, p2=2);
94      DESCRIBE avro_extschema_url_parted PARTITION (p1=2018, p2=3);
{noformat}


Shouldn't the describe command return schema based on grad2.avsc for (p1=2018, 
p2=2) and (p1=2018, p2=3) case? Am I misunderstanding something? Sorry for the 
back and forth but just wanted to confirm if the q.out is the expected behavior

> 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.5.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)

Reply via email to