Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
1.5.8
-
None
-
MariaDB 10.1.21/Windows/JDBC 1.5.8/JDK 1.8.121
Description
After updating to 1.5.8 from 1.5.8 I get too many results from a ResultSet.
This code should return 20 rows, but it returns 50.
Connection connection = DriverManager.getConnection(
|
"jdbc:mariadb://localhost:3310/test?createDatabaseIfNotExist=true",
|
"root", "");
|
connection.createStatement().executeQuery("drop table if exists testtable ");
|
connection.createStatement().executeQuery("create table testtable(s1 varchar(20))");
|
for (int r = 0; r < 20; r++)
|
{
|
connection.createStatement().executeUpdate("insert into testtable values('V" + r + "')");
|
}
|
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
|
ResultSet.CONCUR_READ_ONLY);
|
stmt.setFetchSize(10);
|
 |
ResultSet rs = stmt.executeQuery("select * from testtable");
|
int count = 0;
|
while (rs.next())
|
{
|
System.out.println(rs.getString(1));
|
count++;
|
}
|
System.out.println("COUNT:" + count);
|
This seems to be related to CONJ-418 and commit:
(https://github.com/MariaDB/mariadb-connector-j/commit/2f99de9d5346418747768bd788e11969bc0fee27#diff-eb416079e8728af2ebd351e80090441aR371)
MariaSelectResultSet.java:371 only conditionally clears the resultSet
if (resultSetScrollType == TYPE_FORWARD_ONLY) resultSet.clear();
|
but always resets the rowPointer in MariaSelectResultSet.java:574
rowPointer = 0;
|