From 3d87ec41b1f0f01e300e6165f23482111c44fab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Sat, 12 Oct 2024 10:01:02 +0200 Subject: [PATCH] test: add test for auto_batch_dml --- .../spanner/jdbc/ExecuteMockServerTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/java/com/google/cloud/spanner/jdbc/ExecuteMockServerTest.java b/src/test/java/com/google/cloud/spanner/jdbc/ExecuteMockServerTest.java index f3c22d03..d7d72f76 100644 --- a/src/test/java/com/google/cloud/spanner/jdbc/ExecuteMockServerTest.java +++ b/src/test/java/com/google/cloud/spanner/jdbc/ExecuteMockServerTest.java @@ -36,6 +36,8 @@ import com.google.protobuf.Value; import com.google.rpc.Code; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; +import com.google.spanner.v1.CommitRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; import com.google.spanner.v1.ResultSetMetadata; import com.google.spanner.v1.ResultSetStats; import com.google.spanner.v1.StructType; @@ -844,4 +846,28 @@ public void testInvalidExecuteUpdate_shouldNotLeakSession() throws SQLException } } } + + private String getExtension() { + return dialect == Dialect.POSTGRESQL ? "spanner." : ""; + } + + @Test + public void testExecuteAutoBatchDml() throws SQLException { + try (Connection connection = createJdbcConnection(); + Statement statement = connection.createStatement()) { + connection.setAutoCommit(false); + + assertFalse(statement.execute(String.format("set %sauto_batch_dml = true", getExtension()))); + for (int i = 0; i < 3; i++) { + assertFalse(statement.execute(dml)); + assertEquals(1, statement.getUpdateCount()); + } + connection.commit(); + } + assertEquals(1, mockSpanner.countRequestsOfType(ExecuteBatchDmlRequest.class)); + ExecuteBatchDmlRequest request = + mockSpanner.getRequestsOfType(ExecuteBatchDmlRequest.class).get(0); + assertEquals(3, request.getStatementsCount()); + assertEquals(1, mockSpanner.countRequestsOfType(CommitRequest.class)); + } }