[
https://issues.apache.org/jira/browse/PHOENIX-1001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14021047#comment-14021047
]
Hudson commented on PHOENIX-1001:
---------------------------------
SUCCESS: Integrated in Phoenix | Master | Hadoop1 #243 (See
[https://builds.apache.org/job/Phoenix-master-hadoop1/243/])
PHOENIX-1001 Using NEXT VALUE FOR 'sequence' as an input to a function cause a
NPE (Thomas D'Silva) (jtaylor: rev 3fd64258a75701203f8848b294eb778e958796e4)
* phoenix-core/src/main/java/org/apache/phoenix/expression/InListExpression.java
*
phoenix-core/src/main/java/org/apache/phoenix/expression/LiteralExpression.java
* phoenix-core/src/it/java/org/apache/phoenix/end2end/SequenceIT.java
*
phoenix-core/src/main/java/org/apache/phoenix/expression/BaseCompoundExpression.java
*
phoenix-core/src/main/java/org/apache/phoenix/expression/ComparisonExpression.java
* phoenix-core/src/main/java/org/apache/phoenix/util/ExpressionUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/expression/IsNullExpression.java
*
phoenix-core/src/main/java/org/apache/phoenix/expression/function/FunctionExpression.java
* phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java
> Using NEXT VALUE FOR 'sequence' as an input to a function cause a NPE
> ---------------------------------------------------------------------
>
> Key: PHOENIX-1001
> URL: https://issues.apache.org/jira/browse/PHOENIX-1001
> Project: Phoenix
> Issue Type: Bug
> Reporter: Thomas D'Silva
> Assignee: Thomas D'Silva
> Attachments: PHOENIX-1001-3.0.patch, PHOENIX-1001.patch
>
>
> I get a NPE while trying to write a test that uses NEXT VALUE of a sequence
> as an input to a function.
>
> For example
> {code:sql}
> CREATE SEQUENCE foo.bar START WITH 0 INCREMENT BY 62
> SELECT INVERT(NEXT VALUE FOR foo.bar) FROM SYSTEM."SEQUENCE"
> {code}
> causes an exception
> java.lang.NullPointerException
> at
> org.apache.phoenix.compile.SequenceManager$SequenceValueExpression.evaluate(SequenceManager.java:189)
> at
> org.apache.phoenix.expression.function.InvertFunction.evaluate(InvertFunction.java:47)
> at
> org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:288)
> at
> org.apache.phoenix.compile.ProjectionCompiler$SelectClauseVisitor.visitLeave(ProjectionCompiler.java:560)
> at
> org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:1)
> at
> org.apache.phoenix.parse.FunctionParseNode.accept(FunctionParseNode.java:79)
> at
> org.apache.phoenix.compile.ProjectionCompiler.compile(ProjectionCompiler.java:325)
> at
> org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:325)
> at
> org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:130)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:291)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:1)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:206)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:1)
> at
> org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:54)
> at
> org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:202)
> at
> org.apache.phoenix.jdbc.PhoenixPreparedStatement.executeQuery(PhoenixPreparedStatement.java:157)
> at org.apache.phoenix.end2end.SequenceIT.test123(SequenceIT.java:596)
>
>
> I was able to fix this error by changing isStateless() to return false for
> SequenceValueParseNode and SeuenceValueExpression, however this caused tests
> to fail in SequenceIT when it tries to use NEXT VALUE in an UPSERT
> java.sql.SQLException: ERROR 204 (22008): Values in UPSERT must evaluate to a
> constant.
> at
> org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:309)
> at
> org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:133)
> at
> org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:652)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:435)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:1)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$3.call(PhoenixStatement.java:244)
> at
> org.apache.phoenix.jdbc.PhoenixStatement$3.call(PhoenixStatement.java:1)
> at
> org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:54)
> at
> org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:235)
> at
> org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:946)
> at
> org.apache.phoenix.end2end.SequenceIT.testInsertNextValueFor(SequenceIT.java:191)
>
--
This message was sent by Atlassian JIRA
(v6.2#6252)