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

Dudu Markovitz edited comment on HIVE-10120 at 5/7/17 9:00 AM:
---------------------------------------------------------------

1. 
I'm truly puzzled here.
Why put a limitation on the *create* statement instead of removing the 
limitation from the *select* statement?
There seems to be no logical reason to prohibit queries such as *select 
`a.b.c`*.

2.
A)
*CTAS* was not handled and it still possible to create tables that could not be 
queried

{code}
hive> create table t as select 1 as `a.b.c`;
OK
hive> desc t;
OK
col_name    data_type   comment
a.b.c                   int                                         
Time taken: 0.441 seconds, Fetched: 1 row(s)
hive> select * from t;
FAILED: RuntimeException java.lang.RuntimeException: cannot find field a from 
[0:a.b.c]
{code}

B)
*alter table ... change column* was not handled and it still possible to rename 
a column such that the table could not be queried

{code}
create table t (i int);
alter table t change column i `a.b.c` int
select * from t;

Error while compiling statement: FAILED: RuntimeException 
java.lang.RuntimeException: cannot find field a from [0:a.b.c]
{code}


was (Author: dmarkovitz):
1. 
I'm truly puzzled here.
Why put a limitation on the *create* statement instead of removing the 
limitation from the *select* statement?
There seems to be no logical reason to prohibit queries such as *select 
`a.b.c`*.

2.
A)
*CTAS* was not handled and it still possible to create tables that cannot be 
queried

{code}
hive> create table t as select 1 as `a.b.c`;
OK
hive> desc t;
OK
col_name    data_type   comment
a.b.c                   int                                         
Time taken: 0.441 seconds, Fetched: 1 row(s)
hive> select * from t;
FAILED: RuntimeException java.lang.RuntimeException: cannot find field a from 
[0:a.b.c]
{code}

B)
*alter table ... change column* was not handled and it still possible to rename 
a column to unqueryable name.

{code}
create table t (i int);
alter table t change column i `a.b.c` int
select * from t;

Error while compiling statement: FAILED: RuntimeException 
java.lang.RuntimeException: cannot find field a from [0:a.b.c]
{code}

> Disallow create table with dot/colon in column name
> ---------------------------------------------------
>
>                 Key: HIVE-10120
>                 URL: https://issues.apache.org/jira/browse/HIVE-10120
>             Project: Hive
>          Issue Type: Improvement
>          Components: Parser
>            Reporter: Pengcheng Xiong
>            Assignee: Pengcheng Xiong
>              Labels: TODOC1.2
>             Fix For: 1.2.0
>
>         Attachments: HIVE-10120.01.patch, HIVE-10120.02.patch
>
>
> Since we don't allow users to query column names with dot in the middle such 
> as emp.no, don't allow users to create tables with such columns that cannot 
> be queried. Fix the documentation to reflect this fix.
> Here is an example. Consider this table:
> {code}
> CREATE TABLE a (`emp.no` string);
> select `emp.no` from a; fails with this message:
> FAILED: RuntimeException java.lang.RuntimeException: cannot find field emp 
> from [0:emp.no]
> {code}
> The hive documentation needs to be fixed:
> {code}
>  (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL) seems 
> to  indicate that any Unicode character can go between the backticks in the 
> select statement, but it doesn’t like the dot/colon or even select * when 
> there is a column that has a dot/colon. 
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to