You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Chinmay Kulkarni (Jira)" <ji...@apache.org> on 2020/08/25 21:37:00 UTC

[jira] [Updated] (PHOENIX-5960) Creating a view on a non-existent table throws the wrong exception

     [ https://issues.apache.org/jira/browse/PHOENIX-5960?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chinmay Kulkarni updated PHOENIX-5960:
--------------------------------------
    Fix Version/s: 4.16.0

> 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
>            Assignee: Xinyi Yan
>            Priority: Minor
>              Labels: beginner, newbie, phoenix-hardening, quality-improvement
>             Fix For: 4.16.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> 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)