Skip to content

Commit

Permalink
[CONJ-1109] Regression in clearBatch() for parameterized statements
Browse files Browse the repository at this point in the history
  • Loading branch information
rusher committed Nov 24, 2023
1 parent 1562038 commit cbb930b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/main/java/org/mariadb/jdbc/BasePreparedStatement.java
Expand Up @@ -601,6 +601,12 @@ public void clearParameters() throws SQLException {
parameters = new ParameterList();
}

@Override
public void clearBatch() throws SQLException {
batchParameters = new ArrayList<>();
super.clearBatch();
}

/**
* Sets the value of the designated parameter with the given object.
*
Expand Down
37 changes: 37 additions & 0 deletions src/test/java/org/mariadb/jdbc/integration/BatchTest.java
Expand Up @@ -31,6 +31,43 @@ public static void after2() throws SQLException {
stmt.execute("DROP TABLE IF EXISTS BatchTest");
}

@Test
public void batchClear() throws SQLException {
Statement stmt = sharedConn.createStatement();
stmt.execute("DROP TABLE IF EXISTS batchClear");
stmt.execute("CREATE TABLE batchClear(c0 VARCHAR(16))");
try (PreparedStatement prep = sharedConn.prepareStatement("INSERT INTO batchClear VALUES (?)")) {
prep.setString(1, "1");
prep.addBatch();

prep.setString(1, "2");
prep.addBatch();

prep.setString(1, "3");
prep.addBatch();

prep.executeBatch();

prep.setString(1, "4");
prep.addBatch();
prep.clearBatch();

prep.setString(1, "5");
prep.addBatch();

prep.executeBatch();
}
ResultSet rs = stmt.executeQuery("SELECT * FROM batchClear");
Assertions.assertTrue(rs.next());
assertEquals("1", rs.getString(1));
Assertions.assertTrue(rs.next());
assertEquals("2", rs.getString(1));
Assertions.assertTrue(rs.next());
assertEquals("3", rs.getString(1));
Assertions.assertTrue(rs.next());
assertEquals("5", rs.getString(1));
}

@Test
public void batchError() throws SQLException {
Statement stmt = sharedConn.createStatement();
Expand Down

0 comments on commit cbb930b

Please sign in to comment.