|
27 | 27 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SET_READONLY;
|
28 | 28 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SET_READ_ONLY_STALENESS;
|
29 | 29 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SET_RETRY_ABORTS_INTERNALLY;
|
| 30 | +import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SET_RETURN_COMMIT_STATS; |
30 | 31 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SET_STATEMENT_TIMEOUT;
|
31 | 32 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SET_TRANSACTION_MODE;
|
32 | 33 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_AUTOCOMMIT;
|
33 | 34 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_AUTOCOMMIT_DML_MODE;
|
| 35 | +import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_COMMIT_RESPONSE; |
34 | 36 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_COMMIT_TIMESTAMP;
|
35 | 37 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_OPTIMIZER_VERSION;
|
36 | 38 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_READONLY;
|
37 | 39 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_READ_ONLY_STALENESS;
|
38 | 40 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_READ_TIMESTAMP;
|
39 | 41 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_RETRY_ABORTS_INTERNALLY;
|
| 42 | +import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_RETURN_COMMIT_STATS; |
40 | 43 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.SHOW_STATEMENT_TIMEOUT;
|
41 | 44 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.START_BATCH_DDL;
|
42 | 45 | import static com.google.cloud.spanner.connection.StatementResult.ClientSideStatementType.START_BATCH_DML;
|
43 | 46 | import static com.google.cloud.spanner.connection.StatementResultImpl.noResult;
|
44 | 47 | import static com.google.cloud.spanner.connection.StatementResultImpl.resultSet;
|
45 | 48 |
|
| 49 | +import com.google.cloud.spanner.CommitResponse; |
| 50 | +import com.google.cloud.spanner.CommitStats; |
| 51 | +import com.google.cloud.spanner.ResultSet; |
| 52 | +import com.google.cloud.spanner.ResultSets; |
| 53 | +import com.google.cloud.spanner.Struct; |
46 | 54 | import com.google.cloud.spanner.TimestampBound;
|
| 55 | +import com.google.cloud.spanner.Type; |
| 56 | +import com.google.cloud.spanner.Type.StructField; |
47 | 57 | import com.google.cloud.spanner.connection.ReadOnlyStalenessUtil.DurationValueGetter;
|
48 | 58 | import com.google.common.base.Preconditions;
|
49 | 59 | import com.google.protobuf.Duration;
|
| 60 | +import java.util.Arrays; |
50 | 61 | import java.util.concurrent.TimeUnit;
|
51 | 62 |
|
52 | 63 | /**
|
@@ -170,6 +181,28 @@ public StatementResult statementShowCommitTimestamp() {
|
170 | 181 | "COMMIT_TIMESTAMP", getConnection().getCommitTimestampOrNull(), SHOW_COMMIT_TIMESTAMP);
|
171 | 182 | }
|
172 | 183 |
|
| 184 | + @Override |
| 185 | + public StatementResult statementShowCommitResponse() { |
| 186 | + CommitResponse response = getConnection().getCommitResponseOrNull(); |
| 187 | + CommitStats stats = null; |
| 188 | + if (response != null && response.hasCommitStats()) { |
| 189 | + stats = response.getCommitStats(); |
| 190 | + } |
| 191 | + ResultSet resultSet = |
| 192 | + ResultSets.forRows( |
| 193 | + Type.struct( |
| 194 | + StructField.of("COMMIT_TIMESTAMP", Type.timestamp()), |
| 195 | + StructField.of("MUTATION_COUNT", Type.int64())), |
| 196 | + Arrays.asList( |
| 197 | + Struct.newBuilder() |
| 198 | + .set("COMMIT_TIMESTAMP") |
| 199 | + .to(response == null ? null : response.getCommitTimestamp()) |
| 200 | + .set("MUTATION_COUNT") |
| 201 | + .to(stats == null ? null : stats.getMutationCount()) |
| 202 | + .build())); |
| 203 | + return StatementResultImpl.of(resultSet, SHOW_COMMIT_RESPONSE); |
| 204 | + } |
| 205 | + |
173 | 206 | @Override
|
174 | 207 | public StatementResult statementSetReadOnlyStaleness(TimestampBound staleness) {
|
175 | 208 | getConnection().setReadOnlyStaleness(staleness);
|
@@ -197,6 +230,18 @@ public StatementResult statementShowOptimizerVersion() {
|
197 | 230 | "OPTIMIZER_VERSION", getConnection().getOptimizerVersion(), SHOW_OPTIMIZER_VERSION);
|
198 | 231 | }
|
199 | 232 |
|
| 233 | + @Override |
| 234 | + public StatementResult statementSetReturnCommitStats(Boolean returnCommitStats) { |
| 235 | + getConnection().setReturnCommitStats(returnCommitStats); |
| 236 | + return noResult(SET_RETURN_COMMIT_STATS); |
| 237 | + } |
| 238 | + |
| 239 | + @Override |
| 240 | + public StatementResult statementShowReturnCommitStats() { |
| 241 | + return resultSet( |
| 242 | + "RETURN_COMMIT_STATS", getConnection().isReturnCommitStats(), SHOW_RETURN_COMMIT_STATS); |
| 243 | + } |
| 244 | + |
200 | 245 | @Override
|
201 | 246 | public StatementResult statementBeginTransaction() {
|
202 | 247 | getConnection().beginTransaction();
|
|
0 commit comments