[ 
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)

Reply via email to