Skip to content

Commit 04f0062

Browse files
author
diego Dupin
committed
[misc] prepareStatement.addBatch must initialize with previous set
1 parent 55365a0 commit 04f0062

File tree

4 files changed

+6
-9
lines changed

4 files changed

+6
-9
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public void addBatch() throws SQLException {
319319
validParameters();
320320
if (batchParameters == null) batchParameters = new ArrayList<>();
321321
batchParameters.add(parameters);
322-
parameters = new ParameterList();
322+
parameters = parameters.clone();
323323
}
324324

325325
protected void validParameters() throws SQLException {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ public void addBatch() throws SQLException {
461461
validParameters();
462462
if (batchParameters == null) batchParameters = new ArrayList<>();
463463
batchParameters.add(parameters);
464-
parameters = new ParameterList(parameters.size());
464+
parameters = parameters.clone();
465465
}
466466

467467
protected void validParameters() throws SQLException {

src/main/java/org/mariadb/jdbc/util/ParameterList.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public boolean containsKey(int index) {
3636
}
3737

3838
public void set(int index, Parameter element) {
39-
if (elementData.length < index + 1) grow(index + 1);
39+
if (elementData.length <= index) grow(index + 1);
4040
elementData[index] = element;
41-
if (index + 1 > length) length = index + 1;
41+
if (index >= length) length = index + 1;
4242
}
4343

4444
public int size() {
@@ -54,7 +54,7 @@ private void grow(int minLength) {
5454
@Override
5555
public ParameterList clone() {
5656
ParameterList param = new ParameterList(length);
57-
if (length >= 0) System.arraycopy(elementData, 0, param.elementData, 0, length);
57+
if (length > 0) System.arraycopy(elementData, 0, param.elementData, 0, length);
5858
param.length = length;
5959
return param;
6060
}

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,7 @@ public void wrongParameter(Connection con) throws SQLException {
6868
prep.setString(2, "ok");
6969
prep.addBatch();
7070
prep.setString(2, "without position 1");
71-
Common.assertThrowsContains(
72-
SQLTransientConnectionException.class,
73-
prep::addBatch,
74-
"Parameter at " + "position 1 is not set");
71+
prep.addBatch();
7572
}
7673
}
7774

0 commit comments

Comments
 (0)