[ 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)