Chaitanya Kulkarni created HIVE-11728:
-----------------------------------------

             Summary: WITH clause uses regular table instead of intermidiate 
relation when regular table exits with same name as of intermidiate relation.
                 Key: HIVE-11728
                 URL: https://issues.apache.org/jira/browse/HIVE-11728
             Project: Hive
          Issue Type: Bug
          Components: HiveServer2, Parser
    Affects Versions: 0.14.0, 0.13.0
         Environment: Linux, Hive 0.13 or 0.14, CDH or HDP cluster.
            Reporter: Chaitanya Kulkarni


If a table of name 'tab1' exists in a database, and within a SQL statement, a 
CTE (with clause) is used with intermediate relation having same as 'tab1' then 
Hive uses 'tab1' regular table in query rather than using intermediate relation.
Steps to recreate the issue:
1. Create a table with name 'tab1'.
2. Load some sample data in table 'tab1'.
3. Write a hive query to use some CTE with intermediate relation name as 
'tab1', and execute the query.
e.g. with tab1 as (select * from orders),
select count(tab1.*) from tab1;
If we have a table with same name like 'tab1', and CTE is also using 'tab1' as 
relation name, then query engine refers to 'tab1' which is a regular table. 
This is not as per implementation in other database systems, like PostgreSQL.

complete test script:

create table test 
( id int, 
 name varchar(100));
 
 insert into test values (1, 'abc');
 insert into test values (2, 'xyz');
 
 select * from test;
 
 with test as (
 select * from other_table)
 select * from test;



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

Reply via email to