[ 
https://issues.apache.org/jira/browse/PHOENIX-2658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15141927#comment-15141927
 ] 

Alicia Ying Shu commented on PHOENIX-2658:
------------------------------------------

[~jamestaylor] The use case was running QueryRunner on top of Phoenix.  The 
real issue was that when there was no binding variable, QueryRunner could not 
handle it since it did not check NULL in its codes for getParameterMetaData() 
of the preparedStatement. getParameterMetaData() would returns NULL for no 
binding variable. Thus, QueryRunner got NPE accessing the return result of 
getParameterMetaData(). If there were binding variables, QueryRunner would 
work. Both cases work for Phoenix without QueryRunner. 

> When using QueryRunner API UNION ALL queries fail with NPE
> ----------------------------------------------------------
>
>                 Key: PHOENIX-2658
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2658
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Alicia Ying Shu
>            Assignee: Alicia Ying Shu
>            Priority: Minor
>         Attachments: PHOENIX-2658-v1.patch, PHOENIX-2658.patch
>
>
> When using Apache Commons DBCP libs for executing the Phoenix Queries in web 
> application running via Tomcat. When a query contains UNION ALL, it fails in 
> the Query Runner with an NPE. 
> [org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$ReplicationMonitor@91d1bc6]
>  org.apache.hadoop.hdfs.server.blockmanagement.BlockManager(1444): BLOCK* 
> neededReplications = 0 pendingReplications = 0
> java.lang.NullPointerException
>       at 
> org.apache.commons.dbutils.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:226)
>       at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:346)
>       at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:289)
>       at 
> org.apache.phoenix.end2end.UnionAllIT.executeWithQueryRunner(UnionAllIT.java:702)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)



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

Reply via email to