Skip to content

Commit cbb930b

Browse files
committed
[CONJ-1109] Regression in clearBatch() for parameterized statements
1 parent 1562038 commit cbb930b

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

src/main/java/org/mariadb/jdbc/BasePreparedStatement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,12 @@ public void clearParameters() throws SQLException {
601601
parameters = new ParameterList();
602602
}
603603

604+
@Override
605+
public void clearBatch() throws SQLException {
606+
batchParameters = new ArrayList<>();
607+
super.clearBatch();
608+
}
609+
604610
/**
605611
* Sets the value of the designated parameter with the given object.
606612
*

src/test/java/org/mariadb/jdbc/integration/BatchTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,43 @@ public static void after2() throws SQLException {
3131
stmt.execute("DROP TABLE IF EXISTS BatchTest");
3232
}
3333

34+
@Test
35+
public void batchClear() throws SQLException {
36+
Statement stmt = sharedConn.createStatement();
37+
stmt.execute("DROP TABLE IF EXISTS batchClear");
38+
stmt.execute("CREATE TABLE batchClear(c0 VARCHAR(16))");
39+
try (PreparedStatement prep = sharedConn.prepareStatement("INSERT INTO batchClear VALUES (?)")) {
40+
prep.setString(1, "1");
41+
prep.addBatch();
42+
43+
prep.setString(1, "2");
44+
prep.addBatch();
45+
46+
prep.setString(1, "3");
47+
prep.addBatch();
48+
49+
prep.executeBatch();
50+
51+
prep.setString(1, "4");
52+
prep.addBatch();
53+
prep.clearBatch();
54+
55+
prep.setString(1, "5");
56+
prep.addBatch();
57+
58+
prep.executeBatch();
59+
}
60+
ResultSet rs = stmt.executeQuery("SELECT * FROM batchClear");
61+
Assertions.assertTrue(rs.next());
62+
assertEquals("1", rs.getString(1));
63+
Assertions.assertTrue(rs.next());
64+
assertEquals("2", rs.getString(1));
65+
Assertions.assertTrue(rs.next());
66+
assertEquals("3", rs.getString(1));
67+
Assertions.assertTrue(rs.next());
68+
assertEquals("5", rs.getString(1));
69+
}
70+
3471
@Test
3572
public void batchError() throws SQLException {
3673
Statement stmt = sharedConn.createStatement();

0 commit comments

Comments
 (0)