-
Notifications
You must be signed in to change notification settings - Fork 0
Description
I am trying to implement the suggested pattern for iterating through results using getMoreResults(), but I am observing misaligned results when batching multiple statements. This looks like a bug.
PreparedStatement ps = conn.prepareStatement( "delete from TestTable; " + "INSERT INTO TestTable (c1,c2) VALUES (?, ?);" + "INSERT INTO TestTable (c1,c2) VALUES (?, ?);" + "update TestTable set C1=1;" + "INSERT INTO TestTable (c1,c2) VALUES (?, ?);" + "select * from TestTable" ); boolean hasResults; do { hasResults = ps.getMoreResults(); System.out.println("update count: " + ps.getUpdateCount() + ", has result: " + hasResults); } while (hasResults || ps.getUpdateCount() != -1);
Observed behavior:
With old JDBC driver (v12.8):
update count: 3, has result: false
update count: 1, has result: false
update count: 1, has result: false
update count: 2, has result: false
update count: 1, has result: false
update count: -1, has result: true
With new JDBC driver (v12.10):
update count: 3, has result: false
update count: 2, has result: false
update count: 1, has result: false
update count: -1, has result: true
Expected behavior:
The behavior should remain consistent across driver versions. Based on v12.8, I expect each update/insert/delete statement to return the correct update count, followed by the final SELECT returning a result set.
Environment:
JDBC Driver: 12.8 vs 12.10
SQL Server version: [please fill in]
JDK version: [please fill in]
Additional context:
It seems like some update counts are being skipped or collapsed in v12.10. This regression makes it hard to correctly process batched statements.