|
36 | 36 | import com.google.protobuf.Value;
|
37 | 37 | import com.google.rpc.Code;
|
38 | 38 | import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
|
| 39 | +import com.google.spanner.v1.CommitRequest; |
| 40 | +import com.google.spanner.v1.ExecuteBatchDmlRequest; |
39 | 41 | import com.google.spanner.v1.ResultSetMetadata;
|
40 | 42 | import com.google.spanner.v1.ResultSetStats;
|
41 | 43 | import com.google.spanner.v1.StructType;
|
@@ -844,4 +846,28 @@ public void testInvalidExecuteUpdate_shouldNotLeakSession() throws SQLException
|
844 | 846 | }
|
845 | 847 | }
|
846 | 848 | }
|
| 849 | + |
| 850 | + private String getExtension() { |
| 851 | + return dialect == Dialect.POSTGRESQL ? "spanner." : ""; |
| 852 | + } |
| 853 | + |
| 854 | + @Test |
| 855 | + public void testExecuteAutoBatchDml() throws SQLException { |
| 856 | + try (Connection connection = createJdbcConnection(); |
| 857 | + Statement statement = connection.createStatement()) { |
| 858 | + connection.setAutoCommit(false); |
| 859 | + |
| 860 | + assertFalse(statement.execute(String.format("set %sauto_batch_dml = true", getExtension()))); |
| 861 | + for (int i = 0; i < 3; i++) { |
| 862 | + assertFalse(statement.execute(dml)); |
| 863 | + assertEquals(1, statement.getUpdateCount()); |
| 864 | + } |
| 865 | + connection.commit(); |
| 866 | + } |
| 867 | + assertEquals(1, mockSpanner.countRequestsOfType(ExecuteBatchDmlRequest.class)); |
| 868 | + ExecuteBatchDmlRequest request = |
| 869 | + mockSpanner.getRequestsOfType(ExecuteBatchDmlRequest.class).get(0); |
| 870 | + assertEquals(3, request.getStatementsCount()); |
| 871 | + assertEquals(1, mockSpanner.countRequestsOfType(CommitRequest.class)); |
| 872 | + } |
847 | 873 | }
|
0 commit comments