Skip to content

Regression: getMoreResults() Behavior Differs in Batched Statements #27

@Ananya2

Description

@Ananya2

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions