[
https://issues.apache.org/jira/browse/HIVE-1287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12851075#action_12851075
]
Zheng Shao commented on HIVE-1287:
----------------------------------
I think we should support the following query:
{code}
insert overwrite table sink select CAST(foo AS struct<y: string>) from source;
{code}
This is better than directly converting them, because there can be confusions
(There are 2 ways to convert from struct<x: string, y: string> and struct<y:
string, x: string>, and Hive is taking one of them).
> Struct datatype should not use field names for type equivalence.
> ----------------------------------------------------------------
>
> Key: HIVE-1287
> URL: https://issues.apache.org/jira/browse/HIVE-1287
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Query Processor
> Environment: Mac OS X (10.6.2) Java SE 6 ( 1.6.0_17)
> Reporter: Arvind Prabhakar
>
> The field names for {{Struct}} types are currently being matched for testing
> type equivalence. This is readily seen by running the following example:
> {noformat}
> hive> create table source ( foo struct < x : string > );
> OK
> Time taken: 3.094 seconds
> hive> load data local inpath '/path/to/sample/data.txt' overwrite into table
> source;
> Copying data from file:/path/to/sample/data.txt
> Loading data to table source
> OK
> Time taken: 0.593 seconds
> hive> create table sink ( bar struct < y : string >);
> OK
> Time taken: 0.11 seconds
> hive> insert overwrite table sink select foo from source;
> FAILED: Error in semantic analysis: line 1:23 Cannot insert into target table
> because column number/types are different sink: Cannot convert column 0
> from struct<x:string> to struct<y:string>.
> {noformat}
> Since both {{soruce.foo}} and {{sink.bar}} are similar in definition with
> only field names being different, data movement between these two should be
> allowed.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.