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

Ashutosh Chauhan commented on HIVE-2941:
----------------------------------------

Good news : Your patch works. Bad news: Since now we have correct schema, 
following tests fail which were generating schema having class name as type. 
Can you update the patch with ant test -Dtestcase=TestCliDriver 
-Dqfile=case_sensitivity.q -Doverwrite=true and so on.
* case_sensitivity.q
* input17.q
* input5.q
* input_testxpath.q
* input_testxpath2.q
* inputddl8.q
* join_thrift.q

                
> Hive should expand nested structs when setting the table schema from thrift 
> structs
> -----------------------------------------------------------------------------------
>
>                 Key: HIVE-2941
>                 URL: https://issues.apache.org/jira/browse/HIVE-2941
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Travis Crawford
>            Assignee: Travis Crawford
>         Attachments: HIVE-2941.D2721.1.patch
>
>
> When setting a table serde, the deserializer is queried for its schema, which 
> is used to set the metastore table schema. The current implementation uses 
> the class name stored in the field as the field type.
> By storing the class name as the field type, users cannot see the contents of 
> a struct with "describe tblname". Applications that query HiveMetaStore for 
> the table schema (specifically HCatalog in this case) see an unknown field 
> type, rather than a struct containing known field types.
> Hive should store the expanded schema in the metastore so users browsing the 
> schema see expanded fields, and applications querying metastore see familiar 
> types.
> DETAILS
> Set the table serde to something like this. This serde uses the built-in 
> {{ThriftStructObjectInspector}}.
> {code}
> alter table foo_test
>   set serde "com.twitter.elephantbird.hive.serde.ThriftSerDe"
>   with serdeproperties ("serialization.class"="com.foo.Foo");
> {code}
> This causes a call to {{MetaStoreUtils.getFieldsFromDeserializer}} which 
> returns a list of fields and their schemas. However, currently it does not 
> handle nested structs, and if {{com.foo.Foo}} above contains a field 
> {{com.foo.Bar}}, the class name {{com.foo.Bar}} would appear as the field 
> type. Instead, nested structs should be expanded.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to