You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "James Taylor (JIRA)" <ji...@apache.org> on 2016/01/23 04:09:39 UTC

[jira] [Updated] (PHOENIX-2241) NPE in UPSERT SELECT in sqlline when there are extraneous parentheses

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

James Taylor updated PHOENIX-2241:
----------------------------------
    Fix Version/s: 4.8.0

> NPE in UPSERT SELECT in sqlline when there are extraneous parentheses
> ---------------------------------------------------------------------
>
>                 Key: PHOENIX-2241
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2241
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.3.0
>         Environment: CDH5
>            Reporter: James Heather
>            Priority: Minor
>             Fix For: 4.8.0
>
>
> I tried to add some new rows into a table using an {{upsert select}}. The rows I was adding weren't in fact based on the existing rows, but I needed the {{select}} to come from somewhere.
> I put extra parentheses in by mistake, and got a NPE:
> {code}
> 0: jdbc:phoenix:172.31.31.143> upsert into linktab (id, first_val, second_val) select (next value for linktab_next_id, round(rand()*1000000000000), round(rand()*1000000000000)) from linktab;
> java.lang.NullPointerException
> 	at org.apache.phoenix.compile.SequenceValueExpression.evaluate(SequenceValueExpression.java:49)
> 	at org.apache.phoenix.expression.RowValueConstructorExpression.evaluate(RowValueConstructorExpression.java:140)
> 	at org.apache.phoenix.expression.RowValueConstructorExpression.init(RowValueConstructorExpression.java:99)
> 	at org.apache.phoenix.expression.RowValueConstructorExpression.<init>(RowValueConstructorExpression.java:57)
> 	at org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:1180)
> 	at org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:134)
> 	at org.apache.phoenix.parse.RowValueConstructorParseNode.accept(RowValueConstructorParseNode.java:45)
> 	at org.apache.phoenix.compile.ProjectionCompiler.compile(ProjectionCompiler.java:370)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:490)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:447)
> 	at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:154)
> 	at org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:423)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:487)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:478)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:279)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:272)
> 	at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
> 	at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:271)
> 	at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1063)
> 	at sqlline.Commands.execute(Commands.java:822)
> 	at sqlline.Commands.sql(Commands.java:732)
> 	at sqlline.SqlLine.dispatch(SqlLine.java:808)
> 	at sqlline.SqlLine.begin(SqlLine.java:681)
> 	at sqlline.SqlLine.start(SqlLine.java:398)
> 	at sqlline.SqlLine.main(SqlLine.java:292)
> 0: jdbc:phoenix:172.31.31.143>
> {code}
> Note that the {{select}} part is of the form {{select (a, b, c) from...}} rather than {{select a, b, c from...}}.
> Removing the extra parentheses made the query complete fine, but it still shouldn't throw a NPE.



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