You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by GitBox <gi...@apache.org> on 2021/02/06 03:09:02 UTC

[GitHub] [shardingsphere] huosenyuan opened a new issue #9356: PyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

huosenyuan opened a new issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356


   
   ~~~
   Hibernate: select job0_.id as id1_0_, job0_.birthday as birthday2_0_, job0_.status as status3_0_ from t_job job0_
   11:03:41.112  INFO 31856 --- [           main] ShardingSphere-SQL                       : Logic SQL: select job0_.id as id1_0_, job0_.birthday as birthday2_0_, job0_.status as status3_0_ from t_job job0_
   11:03:41.112  INFO 31856 --- [           main] ShardingSphere-SQL                       : SQLStatement: HsqlDBSelectStatement(limit=Optional.empty, lock=Optional.empty)
   11:03:41.113  INFO 31856 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds0 ::: select job0_.id as id1_0_, job0_.birthday as birthday2_0_, job0_.status as status3_0_ from t_job0 job0_
   11:03:41.113  INFO 31856 --- [           main] ShardingSphere-SQL                       : Actual SQL: ds0 ::: select job0_.id as id1_0_, job0_.birthday as birthday2_0_, job0_.status as status3_0_ from t_job1 job0_
   
   java.lang.NullPointerException
   	at org.apache.shardingsphere.driver.jdbc.core.resultset.ShardingSphereResultSet.<init>(ShardingSphereResultSet.java:66)
   	at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)
   	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
   	at org.hibernate.loader.Loader.getResultSet(Loader.java:2292)
   	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2050)
   	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2012)
   	at org.hibernate.loader.Loader.doQuery(Loader.java:953)
   	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354)
   	at org.hibernate.loader.Loader.doList(Loader.java:2815)
   	at org.hibernate.loader.Loader.doList(Loader.java:2797)
   	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2629)
   	at org.hibernate.loader.Loader.list(Loader.java:2624)
   	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:506)
   	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:396)
   	at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219)
   	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1396)
   	at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1558)
   	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1526)
   	at org.hibernate.query.Query.getResultList(Query.java:165)
   	at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:76)
   	at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:355)
   	at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:78)
   	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   	at java.lang.reflect.Method.invoke(Method.java:498)
   	at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371)
   	at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204)
   	at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621)
   	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)
   	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
   	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
   	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
   	at com.sun.proxy.$Proxy203.findAll(Unknown Source)
   	at com.dd.edu.ShardingJdbcHsqlApplicationTests.selectTest(ShardingJdbcHsqlApplicationTests.java:51)
   	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   	at java.lang.reflect.Method.invoke(Method.java:498)
   	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)
   	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
   	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125)
   	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:132)
   	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:124)
   	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:74)
   	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
   	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
   	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104)
   	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62)
   	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43)
   	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35)
   	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
   	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
   	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198)
   	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)
   	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
   	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
   	at java.util.ArrayList.forEach(ArrayList.java:1249)
   	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
   	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
   	at java.util.ArrayList.forEach(ArrayList.java:1249)
   	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
   	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
   	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
   	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
   	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
   	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
   	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
   	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229)
   	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:197)
   	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)
   	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)
   	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
   	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
   	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
   	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
   	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
   ~~~
   
   org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement#executeQuery
   ~~~
   	@Override
       public ResultSet executeQuery() throws SQLException {
           ResultSet result;
           try {
               clearPrevious();
               executionContext = createExecutionContext();
               List<QueryResult> queryResults = executeQuery0();
               MergedResult mergedResult = mergeQuery(queryResults);
               result = new ShardingSphereResultSet(getResultSetsForShardingSphereResultSet(), mergedResult, this, executionContext);
           } finally {
               clearBatch();
           }
           currentResultSet = result;
           return result;
       }
   	
   	private List<ResultSet> getResultSetsForShardingSphereResultSet() throws SQLException {
           if (null != calciteExecutor) {
               return Collections.singletonList(calciteExecutor.getResultSet());
           }
           return statements.stream().map(this::getResultSet).collect(Collectors.toList());
       }
   	private ResultSet getResultSet(final Statement statement) {
           try {
               return statement.getResultSet(); // this is bug; result is null 
           } catch (final SQLException ex) {
               throw new ShardingSphereException(ex);
           }
       }
   ~~~
   ~~~
   	<dependency>
   		<groupId>org.apache.shardingsphere</groupId>
   		<artifactId>shardingsphere-jdbc-core</artifactId>
   		<version>5.0.0-alpha</version>
   	</dependency>
   	<dependency>
   		<groupId>org.hsqldb</groupId>
   		<artifactId>hsqldb</artifactId>
   		<version>2.5.1</version>
   	</dependency>
   	
   	driverClassName: org.hsqldb.jdbc.JDBCDriver
       url: jdbc:hsqldb:file:/opt/db/testdb
       username: SA
       password:
   ~~~
   	


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] terrymanu commented on issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
terrymanu commented on issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356#issuecomment-785636707


   NullPointerException thrown is not expected behaviour, it is better to throw correct exception


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] tristaZero commented on issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
tristaZero commented on issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356#issuecomment-774588750


   Hi @huosenyuan ,
   
   Thanks for debugging.
   Is there any data in `t_job0` and `t_job1`? Looks like we need to figure out why we get null from `statement.getResultSet()`.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] terrymanu commented on issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
terrymanu commented on issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356#issuecomment-785638006


   Can you provide the code to reproduce it?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] tristaZero commented on issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
tristaZero commented on issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356#issuecomment-774868520


   Hi @huosenyuan ,
   
   > List<QueryResult> queryResults = executeQuery0(); has result; after The result set in statement has been cleared;
   
   Thanks for feedback.
   Who did clear this `List<QueryResult>`? I just wanna figure out this SS's bug or not.
   
   > Can not support hsqldb
   
   I suppose so, but I am a little confused that why this exception came there.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] terrymanu commented on issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
terrymanu commented on issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356#issuecomment-774603060


   Can not support hsqldb


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] huosenyuan commented on issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
huosenyuan commented on issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356#issuecomment-774608457


   `t_job0` and `t_job1` has data; 
   `List<QueryResult> queryResults = executeQuery0(); ` has result;  after The result set in statement has been cleared;
   so
   `statement.getResultSet() ` statement does not query results
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [shardingsphere] huosenyuan closed issue #9356: HyperSql: 5.0.0-alpha: NullPointerException: ShardingSpherePreparedStatement.executeQuery(ShardingSpherePreparedStatement.java:180)

Posted by GitBox <gi...@apache.org>.
huosenyuan closed issue #9356:
URL: https://github.com/apache/shardingsphere/issues/9356


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org