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