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

Jinfeng Ni commented on DRILL-2422:
-----------------------------------

If we are creating the same name (either create view or CTAS) under the same 
schema, then we should block the create VIEW / CTAS, saying that a table / view 
with same name exists.

For instance, on postgre, if we try to create a view with identical  name as a 
base table, such DDL will fail:
{code}
create view dept as select * from dept;
ERROR:  relation "dept" already exists
{code}

So, sounds like we should block such view's creation in the first place, in 
stead of throw error when encountering ambiguity in query processing.



> Querying views having the same name as their datasource fails
> -------------------------------------------------------------
>
>                 Key: DRILL-2422
>                 URL: https://issues.apache.org/jira/browse/DRILL-2422
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning & Optimization
>    Affects Versions: 0.8.0
>            Reporter: Abhishek Girish
>            Assignee: Jinfeng Ni
>            Priority: Critical
>             Fix For: 0.9.0
>
>         Attachments: drillbit_views.log
>
>
> Git.Commit.ID: f658a3c (Mar 9 2015)
> *Convert a simply text file to Parquet:*
> {code:sql}
> > select * from `abc.dat` limit 1;
> +------------+
> |  columns   |
> +------------+
> | ["hi","abc"] |
> +------------+
> 1 row selected (0.574 seconds)
> > create table abc_1 as select cast(columns[0] as varchar(10)) as a from 
> > `abc.dat`;
> +------------+---------------------------+
> |  Fragment  | Number of records written |
> +------------+---------------------------+
> | 0_0        | 1                         |
> +------------+---------------------------+
> 1 row selected (0.626 seconds)
> > select * from abc_1 limit 1;
> +------------+
> |     a      |
> +------------+
> | hi         |
> +------------+
> 1 row selected (0.135 seconds)
> {code}
> *Create a view on top of the Parquet table:*
> {code:sql}
> > create view abc_1 as select cast(a as varchar(10)) as b from abc_1;
> +------------+------------+
> |     ok     |  summary   |
> +------------+------------+
> | true       | View 'abc_1' created successfully in 'dfs.tmp' schema |
> +------------+------------+
> 1 row selected (0.072 seconds)
> > select * from abc_1 limit 1;
> Query failed: SqlValidatorException: Column 'a' not found in any table
> Error: exception while executing query: Failure while executing query. 
> (state=,code=0)
> OR 
> > create view abc_1 as select cast(a as varchar(10)) as b from 
> > dfs.`/tmp/abc_1`;
> +------------+------------+
> |     ok     |  summary   |
> +------------+------------+
> | true       | View 'abc_1' created successfully in 'dfs.tmp' schema |
> +------------+------------+
> 1 row selected (0.047 seconds)
> > select * from abc_1 limit 1;
> Query failed: SqlValidatorException: Column 'a' not found in any table
> Error: exception while executing query: Failure while executing query. 
> (state=,code=0)
> OR 
> > create view abc_1 as select a from dfs.`/tmp/abc_1`;
> +------------+------------+
> |     ok     |  summary   |
> +------------+------------+
> | true       | View 'abc_1' created successfully in 'dfs.tmp' schema |
> +------------+------------+
> 1 row selected (0.046 seconds)
> > select * from abc_1 limit 1;
> +--+
> |  |
> +--+
> +--+
> No rows selected (11.856 seconds)
> {code}
> In the third case, queries do not return and need to be cancelled. 
> For example:
> {code:sql}
> > use dfs.tpcds1;
> +--+
> |  |
> +--+
> +--+
> No rows selected (2.854 seconds)
> {code}
> Sqlline needs to be suspended, killed and restarted to be able to query 
> again. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to