diff --git a/src/main/java/org/mariadb/jdbc/BasePreparedStatement.java b/src/main/java/org/mariadb/jdbc/BasePreparedStatement.java index 9915f43ee..be431aa27 100644 --- a/src/main/java/org/mariadb/jdbc/BasePreparedStatement.java +++ b/src/main/java/org/mariadb/jdbc/BasePreparedStatement.java @@ -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. * diff --git a/src/test/java/org/mariadb/jdbc/integration/BatchTest.java b/src/test/java/org/mariadb/jdbc/integration/BatchTest.java index 5060564bf..78e086fcc 100644 --- a/src/test/java/org/mariadb/jdbc/integration/BatchTest.java +++ b/src/test/java/org/mariadb/jdbc/integration/BatchTest.java @@ -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();