|
31 | 31 | import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
|
32 | 32 | import java.sql.Connection;
|
33 | 33 | import java.sql.DriverManager;
|
| 34 | +import java.sql.PreparedStatement; |
34 | 35 | import java.sql.SQLException;
|
35 | 36 | import org.junit.Test;
|
36 | 37 | import org.junit.runner.RunWith;
|
@@ -98,4 +99,45 @@ public void testDdlInAutoCommitIsFalse_failsWithActiveTransaction() throws SQLEx
|
98 | 99 | assertEquals(Code.FAILED_PRECONDITION, jdbcSqlException.getCode());
|
99 | 100 | }
|
100 | 101 | }
|
| 102 | + |
| 103 | + @Test |
| 104 | + public void testDdlUsingStatementAndExecuteUpdate() throws SQLException { |
| 105 | + for (boolean autoCommit : new boolean[] {true, false}) { |
| 106 | + mockDatabaseAdmin.addResponse( |
| 107 | + Operation.newBuilder() |
| 108 | + .setDone(true) |
| 109 | + .setResponse(Any.pack(Empty.getDefaultInstance())) |
| 110 | + .setMetadata(Any.pack(UpdateDatabaseDdlMetadata.getDefaultInstance())) |
| 111 | + .build()); |
| 112 | + |
| 113 | + try (Connection connection = createConnection(autoCommit)) { |
| 114 | + try (java.sql.Statement statement = connection.createStatement()) { |
| 115 | + assertEquals(0, statement.executeUpdate("create table foo (id int64) primary key (id)")); |
| 116 | + } |
| 117 | + } |
| 118 | + assertEquals(1, mockDatabaseAdmin.getRequests().size()); |
| 119 | + mockDatabaseAdmin.getRequests().clear(); |
| 120 | + } |
| 121 | + } |
| 122 | + |
| 123 | + @Test |
| 124 | + public void testDdlUsingPreparedStatementAndExecuteUpdate() throws SQLException { |
| 125 | + for (boolean autoCommit : new boolean[] {true, false}) { |
| 126 | + mockDatabaseAdmin.addResponse( |
| 127 | + Operation.newBuilder() |
| 128 | + .setDone(true) |
| 129 | + .setResponse(Any.pack(Empty.getDefaultInstance())) |
| 130 | + .setMetadata(Any.pack(UpdateDatabaseDdlMetadata.getDefaultInstance())) |
| 131 | + .build()); |
| 132 | + |
| 133 | + try (Connection connection = createConnection(autoCommit)) { |
| 134 | + try (PreparedStatement preparedStatement = |
| 135 | + connection.prepareStatement("create table foo (id int64) primary key (id)")) { |
| 136 | + assertEquals(0, preparedStatement.executeUpdate()); |
| 137 | + } |
| 138 | + } |
| 139 | + assertEquals(1, mockDatabaseAdmin.getRequests().size()); |
| 140 | + mockDatabaseAdmin.getRequests().clear(); |
| 141 | + } |
| 142 | + } |
101 | 143 | }
|
0 commit comments