Chinmay Kulkarni created PHOENIX-5960:
-----------------------------------------

             Summary: Creating a view on a non-existent table throws the wrong 
exception
                 Key: PHOENIX-5960
                 URL: https://issues.apache.org/jira/browse/PHOENIX-5960
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.15.0
            Reporter: Chinmay Kulkarni


Ran across this by accident as a result of a typo in my create view statement:

# CREATE TABLE IF NOT EXISTS *T1* (A INTEGER PRIMARY KEY, B INTEGER);
# CREATE VIEW IF NOT EXISTS V (new_col INTEGER) AS SELECT * FROM *T2*;
View creation fails with the following:

{noformat}
Error: ERROR 509 (42888): The table does not have a primary key. 
(state=42888,code=509)
java.sql.SQLException: ERROR 509 (42888): The table does not have a primary key.
        at 
org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:575)
        at 
org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:195)
        at 
org.apache.phoenix.compile.CreateTableCompiler.compile(CreateTableCompiler.java:182)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableCreateTableStatement.compilePlan(PhoenixStatement.java:841)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableCreateTableStatement.compilePlan(PhoenixStatement.java:830)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:407)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:397)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:396)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:384)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1886)
        at sqlline.Commands.execute(Commands.java:814)
        at sqlline.Commands.sql(Commands.java:754)
        at sqlline.SqlLine.dispatch(SqlLine.java:646)
        at sqlline.SqlLine.begin(SqlLine.java:510)
        at sqlline.SqlLine.start(SqlLine.java:233)
        at sqlline.SqlLine.main(SqlLine.java:175)
{noformat}

Ideally, this should throw a TableNotFoundException. 




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to