[CONJ-403] Nullpointer-Exception in Select-Statement Created: 2016-12-27  Updated: 2017-01-12  Resolved: 2017-01-12

Status: Closed
Project: MariaDB Connector/J
Component/s: Other
Affects Version/s: 1.5.6
Fix Version/s: 1.5.7

Type: Bug Priority: Major
Reporter: Andreas Gottardi Assignee: Diego Dupin
Resolution: Fixed Votes: 3
Labels: None
Environment:

Windows 10 version 10.0 running on amd64; Cp1252; en_US (nb)
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
NetBeans IDE 8.2 (Build 201609300101)


Attachments: PNG File netbeans64_2016-12-27_09-38-42.png    
Issue Links:
Problem/Incident
causes CONJ-408 Connector/J 1.5.6 throws HibernateExc... Closed

 Description   

The following statement on a remote database throws the shown exception:

use s12db1;
select * from machines;

Exception shown in Netbeans Notifications:

java.lang.NullPointerException
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.close(MariaSelectResultSet.java:483)
at org.netbeans.modules.db.dataview.util.DataViewUtils.closeResources(DataViewUtils.java:195)
at org.netbeans.modules.db.dataview.meta.DBMetaDataFactory.getForeignKeys(DBMetaDataFactory.java:179)
at org.netbeans.modules.db.dataview.meta.DBMetaDataFactory.checkForeignKeys(DBMetaDataFactory.java:408)
at org.netbeans.modules.db.dataview.meta.DBMetaDataFactory.postprocessTables(DBMetaDataFactory.java:320)
[catch] at org.netbeans.modules.db.dataview.output.SQLExecutionHelper$1Loader.run(SQLExecutionHelper.java:174)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)

Error does not occur in version 1.5.5.



 Comments   
Comment by Chris Kistner [ 2017-01-10 ]

We're getting the NullPointerException at the same line with our webapp, but our stacktrace is quite different:

java.lang.NullPointerException
        at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.close(MariaSelectResultSet.java:483)
        at org.hibernate.engine.jdbc.internal.TypeInfoExtracter.extractTypeInfo(TypeInfoExtracter.java:85)
        at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:144)
        at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
        at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1827)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1785)
        at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900)
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:59)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
        at com.google.inject.persist.jpa.JpaPersistService.start(JpaPersistService.java:94)
        at com.company.di.GuiceBootstrap.contextInitialized(GuiceBootstrap.java:48)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1092)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1984)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

Our environment is as follow:

  • CentOS 6.6 x64
  • OpenJDK 1.7.0_75 (rhel-2.5.4.0.el6_6-x86_64 u75-b13)
  • Apache Tomcat 7.0.72
  • Webapp maven dependencies: guice-persist-3.0, hibernate-entitymanager-4.2.21.Final, hibernate-core-4.2.21.Final, hibernate-jpa-2.0-api-1.0.1.Final

Version 1.5.5 and 1.4.6 does not have this issue.

Comment by Richard Stanford [ 2017-01-11 ]

We are able to trigger this when using JDBI to return generated keys:

Caused by: java.lang.NullPointerException
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.close(MariaSelectResultSet.java:483)
at org.skife.jdbi.v2.Cleanables$ResultSetCleanable.cleanup(Cleanables.java:65)
at org.skife.jdbi.v2.BaseStatement$StatementCleaningCustomizer.cleanup(BaseStatement.java:126)
at org.skife.jdbi.v2.BaseStatement.cleanup(BaseStatement.java:101)
at org.skife.jdbi.v2.GeneratedKeys.first(GeneratedKeys.java:84)
.....

Tracing through, it appears that the generated keys are returned successfully, no exceptions are thrown, but packetFetcher is indeed null in:

Buffer buffer = packetFetcher.getReusableBuffer();

I can also confirm that this issue does not appear in 1.5.5

The particular datatype of the incremented key is a BIGINT(20) in case that makes a difference. Once the row is inserted, SELECTing the row works as expected even in 1.5.6.

Generated at Thu Feb 08 03:15:24 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.