[CONJ-516] Permit using updatable resultset when fetching Created: 2017-08-29  Updated: 2020-08-25  Resolved: 2017-08-29

Status: Closed
Project: MariaDB Connector/J
Component/s: metadata, Other
Affects Version/s: None
Fix Version/s: 2.1.1

Type: Bug Priority: Major
Reporter: Diego Dupin Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: None


 Description   

When updating a resultset with fetchsize, query to fetch metadata information will failed with NPE (Statement / PrepareStatement created with explicit ResultSet.CONCUR_UPDATABLE and setting setFetchSize to a value <> 0)

(ResultSet.CONCUR_UPDATABLE support was introduced in 2.1.0)
example :

PreparedStatement preparedStatement = connection.prepareStatement("SELECT id, data1 FROM test_table", ResultSet.FETCH_FORWARD, ResultSet.CONCUR_UPDATABLE);
            preparedStatement.setFetchSize(2);
            ResultSet rs = preparedStatement.executeQuery();
            while (rs.next()) {
                rs.updateString(2, "another String ");
                rs.updateRow();
            }

 
java.lang.NullPointerException
	at org.mariadb.jdbc.internal.com.read.dao.Results.loadFully(Results.java:316)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.cmdPrologue(AbstractQueryProtocol.java:1626)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:156)
	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.mariadb.jdbc.internal.logging.ProtocolLoggingProxy.invoke(ProtocolLoggingProxy.java:101)
	at com.sun.proxy.$Proxy10.executeQuery(Unknown Source)
	at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:341)
	at org.mariadb.jdbc.MariaDbStatement.executeQuery(MariaDbStatement.java:517)
	at org.mariadb.jdbc.internal.com.read.resultset.UpdatableResultSet.checkIfUpdatable(UpdatableResultSet.java:184)
	at org.mariadb.jdbc.internal.com.read.resultset.UpdatableResultSet.<init>(UpdatableResultSet.java:114)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readResultSet(AbstractQueryProtocol.java:1568)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1327)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1277)
	at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:218)



 Comments   
Comment by Diego Dupin [ 2017-08-29 ]

corrected with commit

CI results : https://travis-ci.org/MariaDB/mariadb-connector-j/builds/269517905

available through maven using snapshot :

<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
</repositories>
 
<dependencies>
    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>2.1.1-SNAPSHOT</version>
    </dependency>
</dependencies>

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