Skip to content

Commit 6e11fa6

Browse files
authored
Merge pull request #110 from datafuselabs/fix/examples-test
fix: executeUpdate bug
2 parents 0d2ab46 + 8bf12fb commit 6e11fa6

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

databend-jdbc/src/main/java/com/databend/jdbc/DatabendPreparedStatement.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,23 +363,33 @@ private List<StatementInfoWrapper> prepareSQL(@NonNull Map<Integer, String> para
363363
@Override
364364
public boolean execute()
365365
throws SQLException {
366-
return this.execute(prepareSQL(batchInsertUtils.get().getProvideParams())).isPresent();
366+
Boolean r;
367+
try {
368+
r = this.execute(prepareSQL(batchInsertUtils.get().getProvideParams())).isPresent();
369+
} catch (Exception e) {
370+
throw new SQLException(e);
371+
} finally {
372+
clearBatch();
373+
}
374+
return r;
367375
}
368376

369377
protected Optional<ResultSet> execute(List<StatementInfoWrapper> statements) throws SQLException {
370-
Optional<ResultSet> resultSet = Optional.empty();
378+
Optional<ResultSet> optionalResultSet = Optional.empty();
379+
ResultSet r;
371380
try {
372381
for (int i = 0; i < statements.size(); i++) {
373-
if (i == 0) {
374-
internalExecute(statements.get(i).getSql(), null);
375-
resultSet = Optional.ofNullable(getResultSet());
376-
} else {
377-
internalExecute(statements.get(i).getSql(), null);
382+
internalExecute(statements.get(i).getSql(), null);
383+
r = getResultSet();
384+
optionalResultSet = Optional.ofNullable(r);
385+
while (r != null && r.next()) {
378386
}
379387
}
388+
} catch (Exception e) {
389+
throw new SQLException(e);
380390
} finally {
381391
}
382-
return resultSet;
392+
return optionalResultSet;
383393
}
384394

385395
@Override

databend-jdbc/src/test/java/com/databend/jdbc/TestPrepareStatement.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.sql.Connection;
99
import java.sql.Date;
1010
import java.sql.DriverManager;
11-
import java.sql.PreparedStatement;
11+
import java.sql.*;
1212
import java.sql.ResultSet;
1313
import java.sql.SQLException;
1414
import java.sql.Statement;
@@ -297,6 +297,15 @@ public void testPrepareStatementExecute() throws SQLException {
297297
Assertions.assertEquals(1, r.getLong("number"));
298298
System.out.println(r.getLong("number"));
299299
}
300+
try {
301+
Statement statement = conn.createStatement();
302+
ResultSet rs = statement.executeQuery("show processlist");
303+
while (rs.next()) {
304+
System.out.println(rs.getString("id"));
305+
}
306+
} catch (Exception e) {
307+
e.printStackTrace();
308+
}
300309
}
301310

302311
@Test
@@ -339,7 +348,7 @@ public void testAllPreparedStatement() throws SQLException {
339348
String deleteSQL = "delete from test_prepare_statement where a = ?";
340349
try (PreparedStatement statement = conn.prepareStatement(deleteSQL)) {
341350
statement.setInt(1, 1);
342-
int result = statement.executeUpdate();
351+
boolean result = statement.execute();
343352
System.out.println(result);
344353
}
345354

0 commit comments

Comments
 (0)