[CONJ-271] ResultSet.first() - SQLDataException: Current position is before the first row Created: 2016-03-30  Updated: 2016-04-07  Resolved: 2016-03-30

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

Type: Bug Priority: Critical
Reporter: sfahren Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: Current, ResultSet, first(),, position,
Environment:

eclipse mars, mariaDB 10.1.13, Con/J 1.3.7 and 1.4.0 beta 1


Attachments: Zip Archive ResultSetFirst.zip    

 Description   

In the 1.4er Version it give a SQLDataException when calling ResultSet.first() to a executeQuery if the database (excepted the table) has no entries.

The description in the javadocs says:
Moves the cursor to the first row in this ResultSet object.
Returns:true if the cursor is on a valid row; false if there are no rows in the result set

in 1.4.0 beta 1 it returns also true, if no entry available.

java.sql.SQLDataException: Current position is before the first row
at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:115)
at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:69)
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.throwError(MariaSelectResultSet.java:467)
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.getValueObject(MariaSelectResultSet.java:454)
at org.mariadb.jdbc.internall.queryresults.resultset.AbstractSelectResultSet.getLong(AbstractSelectResultSet.java:306)
at org.mariadb.jdbc.internal.queryresults.resultset.AbstractSelectResultSet.getLong(AbstractSelectResulttSet.java:302)



 Comments   
Comment by Diego Dupin [ 2016-03-30 ]

Resolved with commit : https://github.com/MariaDB/mariadb-connector-j/commit/318ca2483f34df6e2f9a81188e49c1256ebecf65

Thanks for reporting it.

Comment by Greg Huber [ 2016-04-07 ]

Hello,

I am using quartz scheduler and get this error when upgrading to 1.4. (1.3.7 works OK). Any ideas?

2016-04-07 14:38:40,946 ERROR org.quartz.core.ErrorLogger ErrorLogger:schedulerError - An error occurred while scanning for the next triggers to fire.
org.quartz.JobPersistenceException: Couldn't acquire next trigger: Current position is before the first row
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2860) ~[quartz-2.2.2.jar:?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSupport.java:2759) ~[quartz-2.2.2.jar:?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSupport.java:2757) ~[quartz-2.2.2.jar:?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3799) ~[quartz-2.2.2.jar:?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTriggers(JobStoreSupport.java:2756) ~[quartz-2.2.2.jar:?]
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:272) [quartz-2.2.2.jar:?]
Caused by: java.sql.SQLDataException: Current position is before the first row
at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:115) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:69) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.throwError(MariaSelectResultSet.java:553) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.checkObjectRange(MariaSelectResultSet.java:536) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.getString(MariaSelectResultSet.java:811) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.getString(MariaSelectResultSet.java:819) ~[mariadb-java-client-1.4.0.jar:?]
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263) ~[commons-dbcp-1.4.jar:1.4]
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTriggerToAcquire(StdJDBCDelegate.java:2616) ~[quartz-2.2.2.jar:?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2800) ~[quartz-2.2.2.jar:?]
... 5 more
Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Current position is before the first row
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.throwError(MariaSelectResultSet.java:553) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.checkObjectRange(MariaSelectResultSet.java:536) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.getString(MariaSelectResultSet.java:811) ~[mariadb-java-client-1.4.0.jar:?]
at org.mariadb.jdbc.internal.queryresults.resultset.MariaSelectResultSet.getString(MariaSelectResultSet.java:819) ~[mariadb-java-client-1.4.0.jar:?]
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263) ~[commons-dbcp-1.4.jar:1.4]
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTriggerToAcquire(StdJDBCDelegate.java:2616) ~[quartz-2.2.2.jar:?]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2800) ~[quartz-2.2.2.jar:?]
... 5 more

Comment by Diego Dupin [ 2016-04-07 ]

Hi Greg Huber , i've created the CONJ-275 for your comment, since the current position problem has been solved.

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