You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Dudu Markovitz (JIRA)" <ji...@apache.org> on 2017/04/21 06:10:04 UTC

[jira] [Created] (HIVE-16496) Enhance asterisk expression (as in "select *") with EXCLUDE clause

Dudu Markovitz created HIVE-16496:
-------------------------------------

             Summary: Enhance asterisk expression (as in "select *") with EXCLUDE clause
                 Key: HIVE-16496
                 URL: https://issues.apache.org/jira/browse/HIVE-16496
             Project: Hive
          Issue Type: Wish
          Components: Parser
            Reporter: Dudu Markovitz


support the following syntax:

> select * exclude (a,b,e) from t

which for a table t with columns a,b,c,d,e would be equal to:

> select c,d from t

A common use case would be:

> select t1.* exclude (x), t2.* from t1 join t2 on t1.x=t2.x;

This supplies a very clean way to select all columns without getting "Ambiguous column reference" and without the need to specify all the columns of at least one of the tables.
 
Currently, without this enhancement, the query would look something like this:

> select a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,y,z,t2.* from t1 join t2 on t1.x=t2.x;

An extension to this enhancement would be supporting positional column notation, e.g.:

> select * exclude ($1,$2,$5) from t    -- exclude columns 1, 2 and 5
> select * exclude (-$1,-$2)   from t    -- exclude last 2 columns
> select * exclude ($1-3)       from t    -- exclude first 3 columns 
> select * exclude (-$1-3)      from t    -- exclude last 3 columns

A complex example would look like:

> select * exclude ($1-2,x,y,-$1-3)      from t  

exclude:
- first 2 columns
- x and y 
- last 3 columns




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