Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[CONJ-1016] avoid splitting BULK command into multiple commands in ca…
…se of prepareStatement.setNull() use
  • Loading branch information
rusher committed Sep 30, 2022
1 parent 11e224e commit 27cb815
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
Expand Up @@ -162,7 +162,8 @@ public int encode(Writer writer, Context context, Prepare newPrepareResult)
// ensure type has not changed
for (int i = 0; i < parameterCount; i++) {
if (parameterHeaderType[i].getBinaryEncodeType()
!= parameters.get(i).getBinaryEncodeType()) {
!= parameters.get(i).getBinaryEncodeType()
&& !parameters.get(i).isNull()) {
writer.flush();
// reset header type
for (int j = 0; j < parameterCount; j++) {
Expand Down
19 changes: 16 additions & 3 deletions src/test/java/org/mariadb/jdbc/integration/BatchTest.java
Expand Up @@ -122,10 +122,20 @@ public void differentParameterType(Connection con, boolean expectSuccessUnknown)
prep.setInt(1, 2);
prep.setInt(2, 2);
prep.addBatch();
prep.setInt(1, 3);
prep.setNull(2, Types.INTEGER);
prep.addBatch();
int[] res = prep.executeBatch();
assertEquals(2, res.length);
assertEquals(1, res[0]);
assertEquals(1, res[1]);
assertEquals(3, res.length);
if (expectSuccessUnknown) {
assertEquals(Statement.SUCCESS_NO_INFO, res[0]);
assertEquals(Statement.SUCCESS_NO_INFO, res[1]);
assertEquals(Statement.SUCCESS_NO_INFO, res[2]);
} else {
assertEquals(1, res[0]);
assertEquals(1, res[1]);
assertEquals(1, res[2]);
}
}
ResultSet rs = stmt.executeQuery("SELECT * FROM BatchTest");
assertTrue(rs.next());
Expand All @@ -134,6 +144,9 @@ public void differentParameterType(Connection con, boolean expectSuccessUnknown)
assertTrue(rs.next());
assertEquals(2, rs.getInt(1));
assertEquals("2", rs.getString(2));
assertTrue(rs.next());
assertEquals(3, rs.getInt(1));
assertNull(rs.getString(2));
assertFalse(rs.next());
stmt.execute("TRUNCATE BatchTest");

Expand Down

0 comments on commit 27cb815

Please sign in to comment.