diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b2b187f4ac5..8717db17ae5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -52,9 +52,25 @@ jobs: - run: .kokoro/build.sh env: JOB_TYPE: test - GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: true GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS: true GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW: true + units-with-regular-session: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + java: [ 11, 17, 21 ] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: ${{matrix.java}} + - run: java -version + - run: .kokoro/build.sh + env: + JOB_TYPE: test + GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: false units-java8: # Building using Java 17 and run the tests with Java 8 runtime name: "units (8)" @@ -96,6 +112,26 @@ jobs: GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: true GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS: true GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW: true + units-with-regular-session8: + # Building using Java 17 and run the tests with Java 8 runtime + name: "units-with-regular-session (8)" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v3 + with: + java-version: 8 + distribution: temurin + - run: echo "SUREFIRE_JVM_OPT=-Djvm=${JAVA_HOME}/bin/java" >> $GITHUB_ENV + shell: bash + - uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: temurin + - run: .kokoro/build.sh + env: + JOB_TYPE: test + GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: false windows: runs-on: windows-latest steps: diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 6b856abdef3..c01f3faec3a 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -37,7 +37,7 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - uses: googleapis/sdk-platform-java/.github/scripts@v2.56.2 + - uses: googleapis/sdk-platform-java/.github/scripts@v2.59.0 if: env.SHOULD_RUN == 'true' with: base_ref: ${{ github.base_ref }} diff --git a/.github/workflows/integration-tests-against-emulator-with-multiplexed-session.yaml b/.github/workflows/integration-tests-against-emulator-with-regular-session.yaml similarity index 94% rename from .github/workflows/integration-tests-against-emulator-with-multiplexed-session.yaml rename to .github/workflows/integration-tests-against-emulator-with-regular-session.yaml index 6dda467b64e..06e7e416d92 100644 --- a/.github/workflows/integration-tests-against-emulator-with-multiplexed-session.yaml +++ b/.github/workflows/integration-tests-against-emulator-with-regular-session.yaml @@ -39,4 +39,4 @@ jobs: env: JOB_TYPE: test SPANNER_EMULATOR_HOST: localhost:9010 - GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: true \ No newline at end of file + GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: false \ No newline at end of file diff --git a/.github/workflows/samples.yaml b/.github/workflows/samples.yaml index 36e725f6aa2..37e2b4054f9 100644 --- a/.github/workflows/samples.yaml +++ b/.github/workflows/samples.yaml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v1 with: - java-version: 8 + java-version: 11 - name: Run checkstyle run: mvn -P lint --quiet --batch-mode checkstyle:check working-directory: samples/snippets diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index eaf32470034..4e0c2b4a0f5 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -17,6 +17,6 @@ jobs: # repository .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.46.2 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.50.0 with: bom-path: google-cloud-spanner-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg index d0c29521333..5cc939cf909 100644 --- a/.kokoro/presubmit/graalvm-native-a.cfg +++ b/.kokoro/presubmit/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.46.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.49.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg index 962c305ff7f..fd00159184a 100644 --- a/.kokoro/presubmit/graalvm-native-b.cfg +++ b/.kokoro/presubmit/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.46.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.49.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg index 87b5dff65a3..424494b02e0 100644 --- a/.kokoro/presubmit/graalvm-native-c.cfg +++ b/.kokoro/presubmit/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.46.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.49.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/integration-regular-sessions-enabled.cfg b/.kokoro/presubmit/integration-regular-sessions-enabled.cfg new file mode 100644 index 00000000000..c845c470ebc --- /dev/null +++ b/.kokoro/presubmit/integration-regular-sessions-enabled.cfg @@ -0,0 +1,38 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/java8" +} + +env_vars: { + key: "JOB_TYPE" + value: "integration" +} + +# TODO: remove this after we've migrated all tests and scripts +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_CLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "secret_manager/java-it-service-account" +} + +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" +} + +env_vars: { + key: "GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS" + value: "false" +} \ No newline at end of file diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg new file mode 100644 index 00000000000..2cabe201bcd --- /dev/null +++ b/.kokoro/presubmit/samples.cfg @@ -0,0 +1,38 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/java8" +} + +env_vars: { + key: "JOB_TYPE" + value: "samples" +} + +# TODO: remove this after we've migrated all tests and scripts +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_CLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "secret_manager/java-it-service-account" +} + +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" +} + +env_vars: { + key: "ENABLE_BUILD_COP" + value: "true" +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 05eee459cb8..849a6a8b339 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,109 @@ # Changelog +## [6.96.1](https://github.com/googleapis/java-spanner/compare/v6.96.0...v6.96.1) (2025-06-30) + + +### Bug Fixes + +* **deps:** Update the Java code generator (gapic-generator-java) to 2.59.0 ([2836042](https://github.com/googleapis/java-spanner/commit/2836042217fe29bb967fe892bd6b492391ded95c)) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.0 ([#3925](https://github.com/googleapis/java-spanner/issues/3925)) ([1372bbd](https://github.com/googleapis/java-spanner/commit/1372bbd82b7828629cbc407b78878469bc477977)) + +## [6.96.0](https://github.com/googleapis/java-spanner/compare/v6.95.1...v6.96.0) (2025-06-27) + + +### Features + +* Allow JDBC to configure directpath for connection ([#3929](https://github.com/googleapis/java-spanner/issues/3929)) ([d754f1f](https://github.com/googleapis/java-spanner/commit/d754f1f99294d86ec881583f217fa09f291a3d7a)) +* Support getOrNull and getOrDefault in Struct ([#3914](https://github.com/googleapis/java-spanner/issues/3914)) ([1dc5a3e](https://github.com/googleapis/java-spanner/commit/1dc5a3ec0ca9ea530e8691df5c2734c0a1ece559)) +* Use multiplexed sessions for read-only transactions ([#3917](https://github.com/googleapis/java-spanner/issues/3917)) ([37fdc27](https://github.com/googleapis/java-spanner/commit/37fdc27aab4e71ac141c2a2c979f864e97395a97)) + + +### Bug Fixes + +* Allow zero durations to be set for connections ([#3916](https://github.com/googleapis/java-spanner/issues/3916)) ([43ea4fa](https://github.com/googleapis/java-spanner/commit/43ea4fa68eac00801beb8e58c1eb09e9f32e5ce5)) + + +### Documentation + +* Add snippet for Repeatable Read configuration at client and transaction ([#3908](https://github.com/googleapis/java-spanner/issues/3908)) ([ff3d212](https://github.com/googleapis/java-spanner/commit/ff3d212c98276c4084f44619916d0444c9652803)) +* Update SpannerSample.java to align with best practices ([#3625](https://github.com/googleapis/java-spanner/issues/3625)) ([7bfc62d](https://github.com/googleapis/java-spanner/commit/7bfc62d3d9e57242e0dfddea090208f8c65f0f8e)) + +## [6.95.1](https://github.com/googleapis/java-spanner/compare/v6.95.0...v6.95.1) (2025-06-06) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.49.0 ([#3909](https://github.com/googleapis/java-spanner/issues/3909)) ([3de8502](https://github.com/googleapis/java-spanner/commit/3de8502b98ebb90526fc2339e279f9b710816b3b)) +* Update googleapis/sdk-platform-java action to v2.59.0 ([#3910](https://github.com/googleapis/java-spanner/issues/3910)) ([aed8bd6](https://github.com/googleapis/java-spanner/commit/aed8bd6d5a0b1e0dfab345e0de68f285e8b8aedb)) + +## [6.95.0](https://github.com/googleapis/java-spanner/compare/v6.94.0...v6.95.0) (2025-06-05) + + +### Features + +* Enable ALTS hard bound token in DirectPath ([#3904](https://github.com/googleapis/java-spanner/issues/3904)) ([2b0f2ff](https://github.com/googleapis/java-spanner/commit/2b0f2ff214f4b68dd5957bc4280edb713b77a763)) +* Enable grpc and afe metrics ([#3896](https://github.com/googleapis/java-spanner/issues/3896)) ([706f794](https://github.com/googleapis/java-spanner/commit/706f794f044c2cb1112cfdae6f379e5f2bc3f26f)) +* Last statement sample ([#3830](https://github.com/googleapis/java-spanner/issues/3830)) ([2f62816](https://github.com/googleapis/java-spanner/commit/2f62816b0af9aced1b73e25525f60f8e3e923454)) +* **spanner:** Add new change_stream.proto ([f385698](https://github.com/googleapis/java-spanner/commit/f38569865de7465ae9a37b844a9dd983571d3688)) + + +### Bug Fixes + +* Directpath_enabled attribute ([#3897](https://github.com/googleapis/java-spanner/issues/3897)) ([53bc510](https://github.com/googleapis/java-spanner/commit/53bc510145921d00bc3df04aa4cf407179ed8d8e)) + + +### Dependencies + +* Update dependency io.opentelemetry:opentelemetry-bom to v1.50.0 ([#3887](https://github.com/googleapis/java-spanner/issues/3887)) ([94b879c](https://github.com/googleapis/java-spanner/commit/94b879c8c1848fa0b14dbe8cda8390cfe9e8fce6)) + +## [6.94.0](https://github.com/googleapis/java-spanner/compare/v6.93.0...v6.94.0) (2025-05-21) + + +### Features + +* Add throughput_mode to UpdateDatabaseDdlRequest to be used by Spanner Migration Tool. See https://github.com/GoogleCloudPlatform/spanner-migration-tool ([3070f1d](https://github.com/googleapis/java-spanner/commit/3070f1db97788c2a55c553ab8a4de3419d1ccf5c)) + + +### Bug Fixes + +* **deps:** Update the Java code generator (gapic-generator-java) to 2.58.0 ([3070f1d](https://github.com/googleapis/java-spanner/commit/3070f1db97788c2a55c553ab8a4de3419d1ccf5c)) +* Remove trailing semicolons in DDL ([#3879](https://github.com/googleapis/java-spanner/issues/3879)) ([ca3a67d](https://github.com/googleapis/java-spanner/commit/ca3a67db715f398943382df1f8a9979905811ff8)) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.48.0 ([#3869](https://github.com/googleapis/java-spanner/issues/3869)) ([afa17f7](https://github.com/googleapis/java-spanner/commit/afa17f73beab80639467916bc73b5c96305093aa)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.48.0 ([#3880](https://github.com/googleapis/java-spanner/issues/3880)) ([f3b00b6](https://github.com/googleapis/java-spanner/commit/f3b00b663aa897fda1bc21222d29726e6be630cb)) +* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.34.0 ([#3861](https://github.com/googleapis/java-spanner/issues/3861)) ([676b14f](https://github.com/googleapis/java-spanner/commit/676b14f916dea783b40ddec4061bd7af157b5d98)) +* Update dependency commons-io:commons-io to v2.19.0 ([#3863](https://github.com/googleapis/java-spanner/issues/3863)) ([80a6af8](https://github.com/googleapis/java-spanner/commit/80a6af836ca29ec196a2f509831e1d36c557168f)) +* Update dependency io.opentelemetry:opentelemetry-bom to v1.50.0 ([#3865](https://github.com/googleapis/java-spanner/issues/3865)) ([ae63050](https://github.com/googleapis/java-spanner/commit/ae6305089b394be0c1eaf8ff7e188711288d87ad)) +* Update googleapis/sdk-platform-java action to v2.58.0 ([#3870](https://github.com/googleapis/java-spanner/issues/3870)) ([d1e45fa](https://github.com/googleapis/java-spanner/commit/d1e45fa88bb005529bcfb2a6ff2df44065be0fd2)) +* Update opentelemetry.version to v1.50.0 ([#3866](https://github.com/googleapis/java-spanner/issues/3866)) ([f7e09b8](https://github.com/googleapis/java-spanner/commit/f7e09b8148c0e51503255694bd3347c637724b34)) + + +### Documentation + +* Add samples for unnamed (positional) parameters ([#3849](https://github.com/googleapis/java-spanner/issues/3849)) ([035cadd](https://github.com/googleapis/java-spanner/commit/035cadd5bb77a8f9f6fb25ac8c8e5a3e186d9a22)) + +## [6.93.0](https://github.com/googleapis/java-spanner/compare/v6.92.0...v6.93.0) (2025-05-09) + + +### Features + +* Enable AFE and gRPC metrics for DP ([#3852](https://github.com/googleapis/java-spanner/issues/3852)) ([203baae](https://github.com/googleapis/java-spanner/commit/203baae3996378435095cb90e3b2c7ee71a643cd)) + + +### Bug Fixes + +* Change server timing duration attribute to float as per w3c ([#3851](https://github.com/googleapis/java-spanner/issues/3851)) ([da8dd8d](https://github.com/googleapis/java-spanner/commit/da8dd8da3171a073d7b450d4413936351a4c1060)) +* **deps:** Update the Java code generator (gapic-generator-java) to 2.57.0 ([23b985c](https://github.com/googleapis/java-spanner/commit/23b985c9a04837b0b38f2cfc5d96469e1d664d67)) +* Non-ASCII Unicode characters in code ([#3844](https://github.com/googleapis/java-spanner/issues/3844)) ([85a0820](https://github.com/googleapis/java-spanner/commit/85a0820505889ae6482a9e4f845cd53430dd6b44)) +* Only close and return sessions once ([#3846](https://github.com/googleapis/java-spanner/issues/3846)) ([32b2373](https://github.com/googleapis/java-spanner/commit/32b2373d62cac3047d9686c56af278c706d7c488)) + ## [6.92.0](https://github.com/googleapis/java-spanner/compare/v6.91.1...v6.92.0) (2025-04-29) diff --git a/README.md b/README.md index 1bcd0fcc4e6..47fe59a6bdf 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.57.0 + 26.62.0 pom import @@ -41,7 +41,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-spanner - 6.89.0 + 6.93.0 ``` @@ -49,20 +49,20 @@ If you are using Maven without the BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:26.59.0') +implementation platform('com.google.cloud:libraries-bom:26.61.0') implementation 'com.google.cloud:google-cloud-spanner' ``` If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-spanner:6.92.0' +implementation 'com.google.cloud:google-cloud-spanner:6.96.1' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.92.0" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.96.1" ``` ## Authentication @@ -538,6 +538,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/ | Get Database Ddl Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java) | | Get Instance Config Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java) | | Insert Using Dml Returning Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java) | +| Last Statement Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java) | | List Backup Schedules Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/ListBackupSchedulesSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/ListBackupSchedulesSample.java) | | List Database Roles | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java) | | List Databases Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/ListDatabasesSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/ListDatabasesSample.java) | @@ -554,6 +555,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/ | Pg Drop Sequence Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgDropSequenceSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgDropSequenceSample.java) | | Pg Insert Using Dml Returning Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgInsertUsingDmlReturningSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgInsertUsingDmlReturningSample.java) | | Pg Interleaved Table Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgInterleavedTableSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgInterleavedTableSample.java) | +| Pg Last Statement Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgLastStatementSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgLastStatementSample.java) | | Pg Partitioned Dml Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgPartitionedDmlSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgPartitionedDmlSample.java) | | Pg Query With Numeric Parameter Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgQueryWithNumericParameterSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgQueryWithNumericParameterSample.java) | | Pg Spanner Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/PgSpannerSample.java) | @@ -575,6 +577,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/ | Tag Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/TagSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/TagSample.java) | | Tracing Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/TracingSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/TracingSample.java) | | Transaction Timeout Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/TransactionTimeoutExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/TransactionTimeoutExample.java) | +| Unnamed Parameters Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java) | | Update Backup Schedule Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateBackupScheduleSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateBackupScheduleSample.java) | | Update Database Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java) | | Update Database With Default Leader Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java) | @@ -728,7 +731,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-spanner/java11.html [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.92.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.96.1 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 61a13d2ff5f..640cb5b50c3 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -24,7 +24,7 @@ com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 @@ -34,7 +34,7 @@ UTF-8 UTF-8 2.10.1 - 1.45.0 + 1.47.0 @@ -56,6 +56,11 @@ exporter-metrics 0.33.0 + + com.google.cloud + google-cloud-monitoring + 3.63.0 + io.opentelemetry @@ -85,19 +90,14 @@ io.opentelemetry opentelemetry-bom - 1.46.0 + 1.50.0 pom import com.google.cloud google-cloud-spanner - 6.89.0 - - - commons-cli - commons-cli - 1.9.0 + 6.93.0 com.google.auto.value @@ -140,8 +140,9 @@ - com.coveo + com.spotify.fmt fmt-maven-plugin + 2.27 diff --git a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/AbstractRunner.java b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/AbstractRunner.java index 76460891299..b233cedaf22 100644 --- a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/AbstractRunner.java +++ b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/AbstractRunner.java @@ -18,46 +18,80 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import java.util.concurrent.atomic.AtomicInteger; abstract class AbstractRunner implements BenchmarkRunner { - static final int TOTAL_RECORDS = 1000000; - static final String SELECT_QUERY = "SELECT ID FROM FOO WHERE ID = @id"; - static final String UPDATE_QUERY = "UPDATE FOO SET BAR=1 WHERE ID = @id"; + static final int TOTAL_RECORDS = 100000; + static final String TABLE_NAME = "Employees"; + static final String SELECT_QUERY = String.format("SELECT ID FROM %s WHERE ID = @id", TABLE_NAME); + static final String UPDATE_QUERY = + String.format("UPDATE %s SET Name=Google WHERE ID = @id", TABLE_NAME); static final String ID_COLUMN_NAME = "id"; - static final String SERVER_URL = "https://staging-wrenchworks.sandbox.googleapis.com"; + static final Map SERVER_URL_MAPPING = new HashMap<>(); - private final AtomicInteger operationCounter = new AtomicInteger(); + static { + SERVER_URL_MAPPING.put( + Environment.CLOUD_DEVEL, "https://staging-wrenchworks.sandbox.googleapis.com"); + SERVER_URL_MAPPING.put(Environment.PROD, "https://spanner.googleapis.com"); + } + + Map timerConfigurations = new HashMap<>(); + private final Set completedClients = new HashSet<>(); + private final Set finishedClients = new HashSet<>(); + + protected void initiateTimer(int clientId, String message, Instant endTime) { + TimerConfiguration timerConfiguration = + timerConfigurations.getOrDefault(clientId, new TimerConfiguration()); + timerConfiguration.setMessage(message); + timerConfiguration.setEndTime(endTime); + timerConfigurations.put(clientId, timerConfiguration); + } - protected void incOperations() { - operationCounter.incrementAndGet(); + protected void setBenchmarkingCompleted(int clientId) { + this.completedClients.add(clientId); } protected List collectResults( ExecutorService service, List>> results, - int numClients, - int numOperations) + BenchmarkingConfiguration configuration) throws Exception { - int totalOperations = numClients * numOperations; + while (!(finishedClients.size() == configuration.getNumOfClients())) + for (int i = 0; i < configuration.getNumOfClients(); i++) { + TimerConfiguration timerConfiguration = + timerConfigurations.getOrDefault(i, new TimerConfiguration()); + long totalSeconds = + ChronoUnit.SECONDS.between(Instant.now(), timerConfiguration.getEndTime()); + if (completedClients.contains(i)) { + if (!finishedClients.contains(i)) { + System.out.printf("Client %s: Completed", i); + finishedClients.add(i); + } + } else { + System.out.printf( + "Client %s: %s %s Minutes %s Seconds\r", + i + 1, timerConfiguration.getMessage(), totalSeconds / 60, totalSeconds % 60); + } + //noinspection BusyWait + Thread.sleep(1000L); + } service.shutdown(); - while (!service.isTerminated()) { - //noinspection BusyWait - Thread.sleep(1000L); - System.out.printf("\r%d/%d", operationCounter.get(), totalOperations); - } - System.out.println(); if (!service.awaitTermination(60L, TimeUnit.MINUTES)) { throw new TimeoutException(); } - List allResults = new ArrayList<>(numClients * numOperations); + List allResults = new ArrayList<>(); for (Future> result : results) { allResults.addAll(result.get()); } @@ -77,4 +111,25 @@ protected String generateRandomString() { ThreadLocalRandom.current().nextBytes(bytes); return new String(bytes, StandardCharsets.UTF_8); } + + static class TimerConfiguration { + private Instant endTime = Instant.now(); + private String message = "Waiting for benchmarks to start..."; + + Instant getEndTime() { + return endTime; + } + + void setEndTime(Instant endTime) { + this.endTime = endTime; + } + + String getMessage() { + return message; + } + + void setMessage(String message) { + this.message = message; + } + } } diff --git a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkRunner.java b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkRunner.java index 7a731887a86..4f8a77c3a1d 100644 --- a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkRunner.java +++ b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkRunner.java @@ -19,17 +19,18 @@ import java.time.Duration; import java.util.List; -public interface BenchmarkRunner { +interface BenchmarkRunner { enum TransactionType { - READ_ONLY_SINGLE_USE, + READ_ONLY_SINGLE_USE_READ, + READ_ONLY_SINGLE_USE_QUERY, READ_ONLY_MULTI_USE, READ_WRITE } - List execute( - TransactionType transactionType, - int numClients, - int numOperations, - int waitMillis, - boolean useMultiplexedSession); + enum Environment { + PROD, + CLOUD_DEVEL + } + + List execute(BenchmarkingConfiguration configuration); } diff --git a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkingConfiguration.java b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkingConfiguration.java new file mode 100644 index 00000000000..e3003cf58a1 --- /dev/null +++ b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/BenchmarkingConfiguration.java @@ -0,0 +1,115 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.spanner.benchmark; + +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.benchmark.BenchmarkRunner.Environment; +import com.google.cloud.spanner.benchmark.BenchmarkRunner.TransactionType; + +class BenchmarkingConfiguration { + + private DatabaseId databaseId; + private int numOfClients; + private int staleness; + private int warmupTime; + private int executionTime; + private int waitBetweenRequests; + private boolean useMultiplexSession; + private TransactionType transactionType; + private Environment environment; + + int getExecutionTime() { + return executionTime; + } + + BenchmarkingConfiguration setExecutionTime(int executionTime) { + this.executionTime = executionTime; + return this; + } + + DatabaseId getDatabaseId() { + return databaseId; + } + + BenchmarkingConfiguration setDatabaseId(DatabaseId databaseId) { + this.databaseId = databaseId; + return this; + } + + int getNumOfClients() { + return numOfClients; + } + + BenchmarkingConfiguration setNumOfClients(int numOfClients) { + this.numOfClients = numOfClients; + return this; + } + + int getStaleness() { + return staleness; + } + + BenchmarkingConfiguration setStaleness(int staleness) { + this.staleness = staleness; + return this; + } + + int getWarmupTime() { + return warmupTime; + } + + BenchmarkingConfiguration setWarmupTime(int warmupTime) { + this.warmupTime = warmupTime; + return this; + } + + int getWaitBetweenRequests() { + return waitBetweenRequests; + } + + BenchmarkingConfiguration setWaitBetweenRequests(int waitBetweenRequests) { + this.waitBetweenRequests = waitBetweenRequests; + return this; + } + + boolean isUseMultiplexSession() { + return useMultiplexSession; + } + + BenchmarkingConfiguration setUseMultiplexSession(boolean useMultiplexSession) { + this.useMultiplexSession = useMultiplexSession; + return this; + } + + TransactionType getTransactionType() { + return transactionType; + } + + BenchmarkingConfiguration setTransactionType(TransactionType transactionType) { + this.transactionType = transactionType; + return this; + } + + Environment getEnvironment() { + return environment; + } + + BenchmarkingConfiguration setEnvironment(Environment environment) { + this.environment = environment; + return this; + } +} diff --git a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/JavaClientRunner.java b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/JavaClientRunner.java index 6fc0842f376..ebe8f3bbaab 100644 --- a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/JavaClientRunner.java +++ b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/JavaClientRunner.java @@ -20,6 +20,8 @@ import com.google.cloud.opentelemetry.trace.TraceExporter; import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Key; +import com.google.cloud.spanner.KeySet; import com.google.cloud.spanner.ReadOnlyTransaction; import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.SessionPoolOptions; @@ -28,12 +30,11 @@ import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.TimestampBound; import com.google.common.base.Stopwatch; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.metrics.DoubleHistogram; -import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.export.MetricExporter; @@ -44,12 +45,14 @@ import io.opentelemetry.sdk.trace.export.SpanExporter; import io.opentelemetry.sdk.trace.samplers.Sampler; import java.time.Duration; +import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; class JavaClientRunner extends AbstractRunner { private final DatabaseId databaseId; @@ -61,12 +64,7 @@ class JavaClientRunner extends AbstractRunner { } @Override - public List execute( - TransactionType transactionType, - int numClients, - int numOperations, - int waitMillis, - boolean useMultiplexedSession) { + public List execute(BenchmarkingConfiguration configuration) { // setup open telemetry metrics and traces // setup open telemetry metrics and traces SpanExporter traceExporter = TraceExporter.createWithDefaultConfiguration(); @@ -93,7 +91,7 @@ public List execute( .build(); SessionPoolOptions sessionPoolOptions = SessionPoolOptionsHelper.setUseMultiplexedSession( - SessionPoolOptions.newBuilder(), useMultiplexedSession) + SessionPoolOptions.newBuilder(), configuration.isUseMultiplexSession()) .build(); SpannerOptions.enableOpenTelemetryMetrics(); SpannerOptions.enableOpenTelemetryTraces(); @@ -102,67 +100,71 @@ public List execute( .setOpenTelemetry(openTelemetry) .setProjectId(databaseId.getInstanceId().getProject()) .setSessionPoolOption(sessionPoolOptions) - .setHost(SERVER_URL) - .build(); - // Register query stats metric. - // This should be done once before start recording the data. - Meter meter = openTelemetry.getMeter("cloud.google.com/java"); - DoubleHistogram endToEndLatencies = - meter - .histogramBuilder("spanner/end_end_elapsed") - .setDescription("The execution of end to end latency") - .setUnit("ms") + .setHost(SERVER_URL_MAPPING.get(configuration.getEnvironment())) .build(); try (Spanner spanner = options.getService()) { DatabaseClient databaseClient = spanner.getDatabaseClient(databaseId); - List>> results = new ArrayList<>(numClients); - ExecutorService service = Executors.newFixedThreadPool(numClients); - for (int client = 0; client < numClients; client++) { - results.add( - service.submit( - () -> - runBenchmark( - databaseClient, - transactionType, - numOperations, - waitMillis, - endToEndLatencies))); + List>> results = new ArrayList<>(configuration.getNumOfClients()); + ExecutorService service = Executors.newFixedThreadPool(configuration.getNumOfClients()); + for (int client = 0; client < configuration.getNumOfClients(); client++) { + int clientId = client; + results.add(service.submit(() -> runBenchmark(databaseClient, clientId, configuration))); } - return collectResults(service, results, numClients, numOperations); + return collectResults(service, results, configuration); } catch (Throwable t) { throw SpannerExceptionFactory.asSpannerException(t); } } private List runBenchmark( - DatabaseClient databaseClient, - TransactionType transactionType, - int numOperations, - int waitMillis, - DoubleHistogram endToEndLatencies) { - List results = new ArrayList<>(numOperations); + DatabaseClient databaseClient, int clientId, BenchmarkingConfiguration configuration) { + List results = new ArrayList<>(); // Execute one query to make sure everything has been warmed up. - executeTransaction(databaseClient, transactionType, endToEndLatencies); + warmUp(databaseClient, clientId, configuration); + runBenchmark(databaseClient, clientId, configuration, results); + setBenchmarkingCompleted(clientId); + return results; + } - for (int i = 0; i < numOperations; i++) { + private void runBenchmark( + DatabaseClient databaseClient, + int clientId, + BenchmarkingConfiguration configuration, + List results) { + Instant endTime = Instant.now().plus(Duration.ofMinutes(configuration.getExecutionTime())); + initiateTimer(clientId, "Remaining execution time", endTime); + while (endTime.isAfter(Instant.now())) { try { - randomWait(waitMillis); - results.add(executeTransaction(databaseClient, transactionType, endToEndLatencies)); - incOperations(); + randomWait(configuration.getWaitBetweenRequests()); + results.add( + executeTransaction( + databaseClient, configuration.getTransactionType(), configuration.getStaleness())); } catch (InterruptedException interruptedException) { throw SpannerExceptionFactory.propagateInterrupt(interruptedException); } } - return results; + } + + private void warmUp( + DatabaseClient databaseClient, int clientId, BenchmarkingConfiguration configuration) { + Instant endTime = Instant.now().plus(Duration.ofMinutes(configuration.getWarmupTime())); + initiateTimer(clientId, "Remaining warmup time", endTime); + while (endTime.isAfter(Instant.now())) { + executeTransaction( + databaseClient, configuration.getTransactionType(), configuration.getStaleness()); + } } private Duration executeTransaction( - DatabaseClient client, TransactionType transactionType, DoubleHistogram endToEndLatencies) { + DatabaseClient client, TransactionType transactionType, int staleness) { Stopwatch watch = Stopwatch.createStarted(); switch (transactionType) { - case READ_ONLY_SINGLE_USE: - executeSingleUseReadOnlyTransaction(client); + case READ_ONLY_SINGLE_USE_READ: + executeSingleUseReadOnlyTransactionWithRead(client, staleness); + break; + case READ_ONLY_SINGLE_USE_QUERY: + executeSingleUseReadOnlyTransactionWithQuery(client, staleness); break; case READ_ONLY_MULTI_USE: executeMultiUseReadOnlyTransaction(client); @@ -171,13 +173,34 @@ private Duration executeTransaction( executeReadWriteTransaction(client); break; } - Duration elapsedTime = watch.elapsed(); - endToEndLatencies.record(elapsedTime.toMillis()); - return elapsedTime; + return watch.elapsed(); + } + + private void executeSingleUseReadOnlyTransactionWithRead(DatabaseClient client, int staleness) { + List columns = new ArrayList<>(); + int key = getRandomKey(); + columns.add("ID"); + try (ResultSet resultSet = + client + .singleUse(TimestampBound.ofExactStaleness(staleness, TimeUnit.SECONDS)) + .read(TABLE_NAME, KeySet.singleKey(Key.of(key)), columns)) { + while (resultSet.next()) { + for (int i = 0; i < resultSet.getColumnCount(); i++) { + if (resultSet.isNull(i)) { + numNullValues++; + } else { + numNonNullValues++; + } + } + } + } } - private void executeSingleUseReadOnlyTransaction(DatabaseClient client) { - try (ResultSet resultSet = client.singleUse().executeQuery(getRandomisedReadStatement())) { + private void executeSingleUseReadOnlyTransactionWithQuery(DatabaseClient client, int staleness) { + try (ResultSet resultSet = + client + .singleUse(TimestampBound.ofExactStaleness(staleness, TimeUnit.SECONDS)) + .executeQuery(getRandomisedReadStatement())) { while (resultSet.next()) { for (int i = 0; i < resultSet.getColumnCount(); i++) { if (resultSet.isNull(i)) { @@ -225,12 +248,14 @@ private void executeReadWriteTransaction(DatabaseClient client) { } static Statement getRandomisedReadStatement() { - int randomKey = ThreadLocalRandom.current().nextInt(TOTAL_RECORDS); - return Statement.newBuilder(SELECT_QUERY).bind(ID_COLUMN_NAME).to(randomKey).build(); + return Statement.newBuilder(SELECT_QUERY).bind(ID_COLUMN_NAME).to(getRandomKey()).build(); } static Statement getRandomisedUpdateStatement() { - int randomKey = ThreadLocalRandom.current().nextInt(TOTAL_RECORDS); - return Statement.newBuilder(UPDATE_QUERY).bind(ID_COLUMN_NAME).to(randomKey).build(); + return Statement.newBuilder(UPDATE_QUERY).bind(ID_COLUMN_NAME).to(getRandomKey()).build(); + } + + static int getRandomKey() { + return ThreadLocalRandom.current().nextInt(TOTAL_RECORDS); } } diff --git a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/LatencyBenchmark.java b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/LatencyBenchmark.java index 46083f1fee0..d3c2d71e955 100644 --- a/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/LatencyBenchmark.java +++ b/benchmarks/src/main/java/com/google/cloud/spanner/benchmark/LatencyBenchmark.java @@ -18,6 +18,7 @@ import com.google.api.core.InternalApi; import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.benchmark.BenchmarkRunner.Environment; import com.google.cloud.spanner.benchmark.BenchmarkRunner.TransactionType; import com.google.common.annotations.VisibleForTesting; import java.time.Duration; @@ -65,10 +66,17 @@ private static CommandLine parseCommandLine(String[] args) throws ParseException options.addOption( "c", "clients", true, "The number of clients that will be executing queries in parallel."); options.addOption( - "o", - "operations", + "wu", + "warmupTime", true, - "The number of operations that each client will execute. Defaults to 1000."); + "Total warm up time before running actual benchmarking. Defaults to 7 minutes."); + options.addOption( + "et", + "executionTime", + true, + "Total execution time of the benchmarking. Defaults to 30 minutes."); + options.addOption( + "st", "staleness", true, "Total Staleness for Reads and Queries. Defaults to 15 seconds."); options.addOption( "w", "wait", @@ -78,12 +86,16 @@ private static CommandLine parseCommandLine(String[] args) throws ParseException + " second."); options.addOption( "t", - "transaction", + "transactionType", true, "The type of transaction to execute. Must be either READ_ONLY or READ_WRITE. Defaults to" + " READ_ONLY."); - options.addOption("m", "multiplexed", true, "Use multiplexed sessions. Defaults to false."); - options.addOption("w", "wait", true, "Wait time in millis. Defaults to zero."); + options.addOption( + "e", + "environment", + true, + "Spanner Environment. Must be either PROD or CLOUD_DEVEL. Default to CLOUD_DEVEL"); + options.addOption("m", "multiplexed", true, "Use multiplexed sessions. Defaults to true."); options.addOption("name", true, "Name of this test run"); CommandLineParser parser = new DefaultParser(); return parser.parse(options, args); @@ -97,34 +109,54 @@ private static CommandLine parseCommandLine(String[] args) throws ParseException public void run(CommandLine commandLine) { int clients = - commandLine.hasOption('c') ? Integer.parseInt(commandLine.getOptionValue('c')) : 16; - int operations = - commandLine.hasOption('o') ? Integer.parseInt(commandLine.getOptionValue('o')) : 1000; + commandLine.hasOption('c') ? Integer.parseInt(commandLine.getOptionValue('c')) : 1; + int executionTime = + commandLine.hasOption("et") ? Integer.parseInt(commandLine.getOptionValue("et")) : 30; + int warmUpTime = + commandLine.hasOption("wu") ? Integer.parseInt(commandLine.getOptionValue("wu")) : 7; int waitMillis = commandLine.hasOption('w') ? Integer.parseInt(commandLine.getOptionValue('w')) : 0; + int staleness = + commandLine.hasOption("st") ? Integer.parseInt(commandLine.getOptionValue("st")) : 15; TransactionType transactionType = commandLine.hasOption('t') ? TransactionType.valueOf(commandLine.getOptionValue('t').toUpperCase(Locale.ENGLISH)) - : TransactionType.READ_ONLY_SINGLE_USE; + : TransactionType.READ_ONLY_SINGLE_USE_QUERY; boolean useMultiplexedSession = - commandLine.hasOption('m') ? Boolean.parseBoolean(commandLine.getOptionValue('m')) : false; + !commandLine.hasOption('m') || Boolean.parseBoolean(commandLine.getOptionValue('m')); + Environment environment = + commandLine.hasOption('e') + ? Environment.valueOf(commandLine.getOptionValue('e').toUpperCase(Locale.ENGLISH)) + : Environment.CLOUD_DEVEL; + + BenchmarkingConfiguration configuration = + new BenchmarkingConfiguration() + .setDatabaseId(databaseId) + .setNumOfClients(clients) + .setExecutionTime(executionTime) + .setWarmupTime(warmUpTime) + .setStaleness(staleness) + .setTransactionType(transactionType) + .setUseMultiplexSession(useMultiplexedSession) + .setWaitBetweenRequests(waitMillis) + .setEnvironment(environment); System.out.println(); System.out.println("Running benchmark with the following options"); - System.out.printf("Database: %s\n", databaseId); - System.out.printf("Clients: %d\n", clients); - System.out.printf("Operations: %d\n", operations); - System.out.printf("Transaction type: %s\n", transactionType); - System.out.printf("Use Multiplexed Sessions: %s\n", useMultiplexedSession); - System.out.printf("Wait between queries: %dms\n", waitMillis); + System.out.printf("Database: %s\n", configuration.getDatabaseId()); + System.out.printf("Clients: %d\n", configuration.getNumOfClients()); + System.out.printf("Total Warm up Time: %d mins\n", configuration.getWarmupTime()); + System.out.printf("Total Execution Time: %d mins\n", configuration.getExecutionTime()); + System.out.printf("Staleness: %d secs\n", configuration.getStaleness()); + System.out.printf("Transaction type: %s\n", configuration.getTransactionType()); + System.out.printf("Use Multiplexed Sessions: %s\n", configuration.isUseMultiplexSession()); + System.out.printf("Wait between requests: %dms\n", configuration.getWaitBetweenRequests()); List javaClientResults = null; System.out.println(); System.out.println("Running benchmark for Java Client Library"); - JavaClientRunner javaClientRunner = new JavaClientRunner(databaseId); - javaClientResults = - javaClientRunner.execute( - transactionType, clients, operations, waitMillis, useMultiplexedSession); + JavaClientRunner javaClientRunner = new JavaClientRunner(configuration.getDatabaseId()); + javaClientResults = javaClientRunner.execute(configuration); printResults("Java Client Library", javaClientResults); } diff --git a/generation_config.yaml b/generation_config.yaml index 287eba4ba07..c0218444aaf 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ -gapic_generator_version: 2.56.2 -googleapis_commitish: 2eec62dc7ed836c8d9f73fb313afb8f48c361bef -libraries_bom_version: 26.59.0 +gapic_generator_version: 2.59.0 +googleapis_commitish: 74826619fc927a93e61cd96d5c96db0ca1b3bb1a +libraries_bom_version: 26.61.0 libraries: - api_shortname: spanner name_pretty: Cloud Spanner diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 356aa51b9d8..850809800ce 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -3,12 +3,12 @@ 4.0.0 com.google.cloud google-cloud-spanner-bom - 6.92.1-SNAPSHOT + 6.96.1 pom com.google.cloud sdk-platform-java-config - 3.46.2 + 3.50.0 Google Cloud Spanner BOM @@ -53,43 +53,43 @@ com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.96.1 com.google.cloud google-cloud-spanner test-jar - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.96.1 @@ -100,7 +100,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.13.0 + 3.14.0 1.8 1.8 diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 9f25a583a4f..7e6607bbb06 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -5,14 +5,14 @@ 4.0.0 com.google.cloud google-cloud-spanner-executor - 6.92.1-SNAPSHOT + 6.96.1 jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 @@ -64,7 +64,7 @@ com.google.cloud google-cloud-trace - 2.53.0 + 2.62.0 io.grpc @@ -137,7 +137,7 @@ com.google.api.grpc proto-google-cloud-trace-v1 - 2.53.0 + 2.62.0 com.google.api.grpc @@ -175,7 +175,7 @@ commons-io commons-io - 2.18.0 + 2.19.0 @@ -202,7 +202,7 @@ org.apache.maven.surefire surefire-junit4 - 3.5.2 + 3.5.3 test @@ -267,7 +267,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 diff --git a/google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java b/google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java index f7fa02a9958..999c54a83e3 100644 --- a/google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java +++ b/google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java @@ -47,6 +47,7 @@ import com.google.cloud.spanner.InstanceConfigInfo; import com.google.cloud.spanner.InstanceId; import com.google.cloud.spanner.InstanceInfo; +import com.google.cloud.spanner.Interval; import com.google.cloud.spanner.Key; import com.google.cloud.spanner.KeyRange; import com.google.cloud.spanner.KeySet; @@ -176,6 +177,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; @@ -2898,6 +2900,12 @@ private com.google.spanner.executor.v1.ValueList buildStruct(StructReader struct case DATE: value.setDateDaysValue(daysFromDate(struct.getDate(i))); break; + case INTERVAL: + value.setStringValue(struct.getInterval(i).toISO8601()); + break; + case UUID: + value.setStringValue(struct.getUuid(i).toString()); + break; case NUMERIC: String ascii = struct.getBigDecimal(i).toPlainString(); value.setStringValue(ascii); @@ -3064,6 +3072,44 @@ private com.google.spanner.executor.v1.ValueList buildStruct(StructReader struct com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.TIMESTAMP).build()); } break; + case INTERVAL: + { + com.google.spanner.executor.v1.ValueList.Builder builder = + com.google.spanner.executor.v1.ValueList.newBuilder(); + List values = struct.getIntervalList(i); + for (Interval interval : values) { + com.google.spanner.executor.v1.Value.Builder valueProto = + com.google.spanner.executor.v1.Value.newBuilder(); + if (interval == null) { + builder.addValue(valueProto.setIsNull(true).build()); + } else { + builder.addValue(valueProto.setStringValue(interval.toISO8601()).build()); + } + } + value.setArrayValue(builder.build()); + value.setArrayType( + com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.INTERVAL).build()); + } + break; + case UUID: + { + com.google.spanner.executor.v1.ValueList.Builder builder = + com.google.spanner.executor.v1.ValueList.newBuilder(); + List values = struct.getUuidList(i); + for (UUID uuidValue : values) { + com.google.spanner.executor.v1.Value.Builder valueProto = + com.google.spanner.executor.v1.Value.newBuilder(); + if (uuidValue == null) { + builder.addValue(valueProto.setIsNull(true).build()); + } else { + builder.addValue(valueProto.setStringValue(uuidValue.toString()).build()); + } + } + value.setArrayValue(builder.build()); + value.setArrayType( + com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.UUID).build()); + } + break; case NUMERIC: { com.google.spanner.executor.v1.ValueList.Builder builder = @@ -3227,6 +3273,7 @@ private static com.google.cloud.spanner.Key keyProtoToCloudKey( case BYTES: case FLOAT64: case DATE: + case UUID: case TIMESTAMP: case NUMERIC: case JSON: @@ -3260,6 +3307,8 @@ private static com.google.cloud.spanner.Key keyProtoToCloudKey( if (type.getCode() == TypeCode.NUMERIC) { String ascii = part.getStringValue(); cloudKey.append(new BigDecimal(ascii)); + } else if (type.getCode() == TypeCode.UUID) { + cloudKey.append(UUID.fromString(part.getStringValue())); } else { cloudKey.append(part.getStringValue()); } @@ -3314,6 +3363,12 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue( case DATE: return com.google.cloud.spanner.Value.date( value.hasIsNull() ? null : dateFromDays(value.getDateDaysValue())); + case INTERVAL: + return com.google.cloud.spanner.Value.interval( + value.hasIsNull() ? null : Interval.parseFromString(value.getStringValue())); + case UUID: + return com.google.cloud.spanner.Value.uuid( + value.hasIsNull() ? null : UUID.fromString(value.getStringValue())); case NUMERIC: { if (value.hasIsNull()) { @@ -3438,6 +3493,34 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue( .collect(Collectors.toList()), CloudClientExecutor::dateFromDays)); } + case INTERVAL: + if (value.hasIsNull()) { + return com.google.cloud.spanner.Value.intervalArray(null); + } else { + return com.google.cloud.spanner.Value.intervalArray( + unmarshallValueList( + value.getArrayValue().getValueList().stream() + .map(com.google.spanner.executor.v1.Value::getIsNull) + .collect(Collectors.toList()), + value.getArrayValue().getValueList().stream() + .map(com.google.spanner.executor.v1.Value::getStringValue) + .collect(Collectors.toList()), + Interval::parseFromString)); + } + case UUID: + if (value.hasIsNull()) { + return com.google.cloud.spanner.Value.uuidArray(null); + } else { + return com.google.cloud.spanner.Value.uuidArray( + unmarshallValueList( + value.getArrayValue().getValueList().stream() + .map(com.google.spanner.executor.v1.Value::getIsNull) + .collect(Collectors.toList()), + value.getArrayValue().getValueList().stream() + .map(com.google.spanner.executor.v1.Value::getStringValue) + .collect(Collectors.toList()), + UUID::fromString)); + } case NUMERIC: { if (value.hasIsNull()) { @@ -3605,6 +3688,10 @@ private static com.google.cloud.spanner.Type typeProtoToCloudType( return com.google.cloud.spanner.Type.date(); case TIMESTAMP: return com.google.cloud.spanner.Type.timestamp(); + case INTERVAL: + return com.google.cloud.spanner.Type.interval(); + case UUID: + return com.google.cloud.spanner.Type.uuid(); case NUMERIC: if (typeProto.getTypeAnnotation().equals(TypeAnnotationCode.PG_NUMERIC)) { return com.google.cloud.spanner.Type.pgNumeric(); @@ -3659,6 +3746,10 @@ private static com.google.spanner.v1.Type cloudTypeToTypeProto(@Nonnull Type clo return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.TIMESTAMP).build(); case DATE: return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.DATE).build(); + case INTERVAL: + return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.INTERVAL).build(); + case UUID: + return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.UUID).build(); case NUMERIC: return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.NUMERIC).build(); case PG_NUMERIC: diff --git a/google-cloud-spanner/clirr-ignored-differences.xml b/google-cloud-spanner/clirr-ignored-differences.xml index 94bb5870f81..12657dd15b1 100644 --- a/google-cloud-spanner/clirr-ignored-differences.xml +++ b/google-cloud-spanner/clirr-ignored-differences.xml @@ -1008,4 +1008,29 @@ com/google/cloud/spanner/TransactionManager com.google.cloud.spanner.TransactionContext begin(com.google.cloud.spanner.AbortedException) + + 7012 + com/google/cloud/spanner/StructReader + java.lang.Object getOrNull(int, java.util.function.BiFunction) + + + 7012 + com/google/cloud/spanner/StructReader + java.lang.Object getOrNull(java.lang.String, java.util.function.BiFunction) + + + 7012 + com/google/cloud/spanner/StructReader + java.lang.Object getOrDefault(int, java.util.function.BiFunction, java.lang.Object) + + + 7012 + com/google/cloud/spanner/StructReader + java.lang.Object getOrDefault(java.lang.String, java.util.function.BiFunction, java.lang.Object) + + + 7012 + com/google/cloud/spanner/SpannerOptions$SpannerEnvironment + boolean isEnableDirectAccess() + diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 15911018d49..a066eeb5758 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.96.1 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 google-cloud-spanner @@ -28,7 +28,7 @@ org.jacoco jacoco-maven-plugin - 0.8.12 + 0.8.13 @@ -269,12 +269,12 @@ com.google.cloud google-cloud-monitoring - 3.54.0 + 3.63.0 com.google.api.grpc proto-google-cloud-monitoring-v3 - 3.57.0 + 3.63.0 com.google.auth @@ -355,13 +355,6 @@ grpc-rls runtime - - - org.graalvm.sdk - graal-sdk - ${graal-sdk.version} - provided - org.graalvm.sdk nativeimage @@ -421,7 +414,7 @@ org.json json - 20240303 + 20250107 test @@ -468,13 +461,13 @@ com.google.cloud google-cloud-trace - 2.51.0 + 2.62.0 test com.google.api.grpc proto-google-cloud-trace-v1 - 2.51.0 + 2.62.0 test @@ -592,7 +585,7 @@ com.google.cloud.spanner.GceTestEnvConfig projects/directpath-prod-manual-testing/instances/spanner-testing directpath-prod-manual-testing - true + true ipv4 3000 diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractReadContext.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractReadContext.java index 6ea4510d3db..6816001a9fa 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractReadContext.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractReadContext.java @@ -457,22 +457,30 @@ void initTransaction() { } private void initTransactionInternal(BeginTransactionRequest request) { + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); try { Transaction transaction = - rpc.beginTransaction(request, getTransactionChannelHint(), isRouteToLeader()); + rpc.beginTransaction( + request, reqId.withOptions(getTransactionChannelHint()), isRouteToLeader()); if (!transaction.hasReadTimestamp()) { throw SpannerExceptionFactory.newSpannerException( - ErrorCode.INTERNAL, "Missing expected transaction.read_timestamp metadata field"); + ErrorCode.INTERNAL, + "Missing expected transaction.read_timestamp metadata field", + reqId); } if (transaction.getId().isEmpty()) { throw SpannerExceptionFactory.newSpannerException( - ErrorCode.INTERNAL, "Missing expected transaction.id metadata field"); + ErrorCode.INTERNAL, "Missing expected transaction.id metadata field", reqId); } try { timestamp = Timestamp.fromProto(transaction.getReadTimestamp()); } catch (IllegalArgumentException e) { throw SpannerExceptionFactory.newSpannerException( - ErrorCode.INTERNAL, "Bad value in transaction.read_timestamp metadata field", e); + ErrorCode.INTERNAL, + "Bad value in transaction.read_timestamp metadata field", + e, + reqId); } transactionId = transaction.getId(); span.addAnnotation( @@ -803,7 +811,8 @@ ResultSet executeQueryInternalWithOptions( tracer.createStatementAttributes(statement, options), session.getErrorHandler(), rpc.getExecuteQueryRetrySettings(), - rpc.getExecuteQueryRetryableCodes()) { + rpc.getExecuteQueryRetryableCodes(), + session.getRequestIdCreator()) { @Override CloseableIterator startStream( @Nullable ByteString resumeToken, @@ -826,11 +835,12 @@ CloseableIterator startStream( if (selector != null) { request.setTransaction(selector); } + this.ensureNonNullXGoogRequestId(); SpannerRpc.StreamingCall call = rpc.executeQuery( request.build(), stream.consumer(), - getTransactionChannelHint(), + this.xGoogRequestId.withOptions(getTransactionChannelHint()), isRouteToLeader()); session.markUsed(clock.instant()); stream.setCall(call, request.getTransaction().hasBegin()); @@ -1008,7 +1018,8 @@ ResultSet readInternalWithOptions( tracer.createTableAttributes(table, readOptions), session.getErrorHandler(), rpc.getReadRetrySettings(), - rpc.getReadRetryableCodes()) { + rpc.getReadRetryableCodes(), + session.getRequestIdCreator()) { @Override CloseableIterator startStream( @Nullable ByteString resumeToken, @@ -1029,11 +1040,13 @@ CloseableIterator startStream( builder.setTransaction(selector); } builder.setRequestOptions(buildRequestOptions(readOptions)); + this.incrementXGoogRequestIdAttempt(); + this.xGoogRequestId.setChannelId(session.getChannel()); SpannerRpc.StreamingCall call = rpc.read( builder.build(), stream.consumer(), - getTransactionChannelHint(), + this.xGoogRequestId.withOptions(getTransactionChannelHint()), isRouteToLeader()); session.markUsed(clock.instant()); stream.setCall(call, /* withBeginTransaction= */ builder.getTransaction().hasBegin()); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BatchClientImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BatchClientImpl.java index 86aea9ef989..6e8340784bd 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BatchClientImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BatchClientImpl.java @@ -250,9 +250,11 @@ private List partitionReadUsingIndex( } builder.setPartitionOptions(pbuilder.build()); + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); final PartitionReadRequest request = builder.build(); try { - PartitionResponse response = rpc.partitionRead(request, options); + PartitionResponse response = rpc.partitionRead(request, reqId.withOptions(options)); ImmutableList.Builder partitions = ImmutableList.builder(); for (com.google.spanner.v1.Partition p : response.getPartitionsList()) { Partition partition = @@ -272,6 +274,7 @@ private List partitionReadUsingIndex( return partitionReadUsingIndex( partitionOptions, table, index, keys, columns, true, option); } + e.setRequestId(reqId); throw e; } } @@ -313,9 +316,11 @@ private List partitionQuery( } builder.setPartitionOptions(pbuilder.build()); + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); final PartitionQueryRequest request = builder.build(); try { - PartitionResponse response = rpc.partitionQuery(request, options); + PartitionResponse response = rpc.partitionQuery(request, reqId.withOptions(options)); ImmutableList.Builder partitions = ImmutableList.builder(); for (com.google.spanner.v1.Partition p : response.getPartitionsList()) { Partition partition = @@ -328,6 +333,7 @@ private List partitionQuery( if (!isFallback && maybeMarkUnimplementedForPartitionedOps(e)) { return partitionQuery(partitionOptions, statement, true, option); } + e.setRequestId(reqId); throw e; } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java index d8ee9fc416e..2eb7c8d2971 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java @@ -97,8 +97,8 @@ class BuiltInMetricsRecorder extends OpenTelemetryMetricsRecorder { * @param attributes Map of the attributes to store */ void recordServerTimingHeaderMetrics( - Long gfeLatency, - Long afeLatency, + Float gfeLatency, + Float afeLatency, Long gfeHeaderMissingCount, Long afeHeaderMissingCount, Map attributes) { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java index 488cf3890c3..f94af1160e4 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java @@ -37,8 +37,8 @@ class BuiltInMetricsTracer extends MetricsTracer implements ApiTracer { private final BuiltInMetricsRecorder builtInOpenTelemetryMetricsRecorder; // These are RPC specific attributes and pertain to a specific API Trace private final Map attributes = new HashMap<>(); - private Long gfeLatency = null; - private Long afeLatency = null; + private Float gfeLatency = null; + private Float afeLatency = null; private long gfeHeaderMissingCount = 0; private long afeHeaderMissingCount = 0; @@ -119,11 +119,11 @@ public void attemptPermanentFailure(Throwable error) { gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes); } - void recordGFELatency(Long gfeLatency) { + void recordGFELatency(Float gfeLatency) { this.gfeLatency = gfeLatency; } - void recordAFELatency(Long afeLatency) { + void recordAFELatency(Float afeLatency) { this.afeLatency = afeLatency; } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java index afc202342d8..5d3b416788f 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java @@ -194,7 +194,7 @@ public void addAttributes(Map attributes) { public void recordGFELatency(Long gfeLatency) { for (ApiTracer child : children) { if (child instanceof BuiltInMetricsTracer) { - ((BuiltInMetricsTracer) child).recordGFELatency(gfeLatency); + ((BuiltInMetricsTracer) child).recordGFELatency(Float.valueOf(gfeLatency)); } } } @@ -210,7 +210,7 @@ public void recordGfeHeaderMissingCount(Long value) { public void recordAFELatency(Long afeLatency) { for (ApiTracer child : children) { if (child instanceof BuiltInMetricsTracer) { - ((BuiltInMetricsTracer) child).recordAFELatency(afeLatency); + ((BuiltInMetricsTracer) child).recordAFELatency(Float.valueOf(afeLatency)); } } } @@ -222,4 +222,20 @@ public void recordAfeHeaderMissingCount(Long value) { } } } + + public void recordGFELatency(Float gfeLatency) { + for (ApiTracer child : children) { + if (child instanceof BuiltInMetricsTracer) { + ((BuiltInMetricsTracer) child).recordGFELatency(gfeLatency); + } + } + } + + public void recordAFELatency(Float afeLatency) { + for (ApiTracer child : children) { + if (child instanceof BuiltInMetricsTracer) { + ((BuiltInMetricsTracer) child).recordAFELatency(afeLatency); + } + } + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClientImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClientImpl.java index 624aba7547c..fdc51ea3f37 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClientImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClientImpl.java @@ -24,14 +24,17 @@ import com.google.cloud.spanner.SpannerImpl.ClosedException; import com.google.cloud.spanner.Statement.StatementFactory; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; import com.google.common.util.concurrent.ListenableFuture; import com.google.spanner.v1.BatchWriteResponse; import io.opentelemetry.api.common.Attributes; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiFunction; import javax.annotation.Nullable; class DatabaseClientImpl implements DatabaseClient { @@ -45,6 +48,9 @@ class DatabaseClientImpl implements DatabaseClient { @VisibleForTesting final MultiplexedSessionDatabaseClient multiplexedSessionDatabaseClient; @VisibleForTesting final boolean useMultiplexedSessionPartitionedOps; @VisibleForTesting final boolean useMultiplexedSessionForRW; + private final int dbId; + private final AtomicInteger nthRequest; + private final Map clientIdToOrdinalMap; final boolean useMultiplexedSessionBlindWrite; @@ -91,6 +97,20 @@ class DatabaseClientImpl implements DatabaseClient { this.tracer = tracer; this.useMultiplexedSessionForRW = useMultiplexedSessionForRW; this.commonAttributes = commonAttributes; + + this.clientIdToOrdinalMap = new HashMap(); + this.dbId = this.dbIdFromClientId(this.clientId); + this.nthRequest = new AtomicInteger(0); + } + + @VisibleForTesting + synchronized int dbIdFromClientId(String clientId) { + Integer id = this.clientIdToOrdinalMap.get(clientId); + if (id == null) { + id = this.clientIdToOrdinalMap.size() + 1; + this.clientIdToOrdinalMap.put(clientId, id); + } + return id; } @VisibleForTesting @@ -188,7 +208,11 @@ public CommitResponse writeWithOptions( if (canUseMultiplexedSessionsForRW() && getMultiplexedSessionDatabaseClient() != null) { return getMultiplexedSessionDatabaseClient().writeWithOptions(mutations, options); } - return runWithSessionRetry(session -> session.writeWithOptions(mutations, options)); + + return runWithSessionRetry( + (session, reqId) -> { + return session.writeWithOptions(mutations, withReqId(reqId, options)); + }); } catch (RuntimeException e) { span.setStatus(e); throw e; @@ -213,7 +237,8 @@ public CommitResponse writeAtLeastOnceWithOptions( .writeAtLeastOnceWithOptions(mutations, options); } return runWithSessionRetry( - session -> session.writeAtLeastOnceWithOptions(mutations, options)); + (session, reqId) -> + session.writeAtLeastOnceWithOptions(mutations, withReqId(reqId, options))); } catch (RuntimeException e) { span.setStatus(e); throw e; @@ -222,6 +247,15 @@ public CommitResponse writeAtLeastOnceWithOptions( } } + private int nextNthRequest() { + return this.nthRequest.incrementAndGet(); + } + + @VisibleForTesting + int getNthRequest() { + return this.nthRequest.get(); + } + @Override public ServerStream batchWriteAtLeastOnce( final Iterable mutationGroups, final TransactionOption... options) @@ -231,7 +265,9 @@ public ServerStream batchWriteAtLeastOnce( if (canUseMultiplexedSessionsForRW() && getMultiplexedSessionDatabaseClient() != null) { return getMultiplexedSessionDatabaseClient().batchWriteAtLeastOnce(mutationGroups, options); } - return runWithSessionRetry(session -> session.batchWriteAtLeastOnce(mutationGroups, options)); + return runWithSessionRetry( + (session, reqId) -> + session.batchWriteAtLeastOnce(mutationGroups, withReqId(reqId, options))); } catch (RuntimeException e) { span.setStatus(e); throw e; @@ -383,11 +419,42 @@ private Future getDialectAsync() { return pool.getDialectAsync(); } + private UpdateOption[] withReqId( + final XGoogSpannerRequestId reqId, final UpdateOption... options) { + if (reqId == null) { + return options; + } + if (options == null || options.length == 0) { + return new UpdateOption[] {new Options.RequestIdOption(reqId)}; + } + UpdateOption[] allOptions = new UpdateOption[options.length + 1]; + System.arraycopy(options, 0, allOptions, 0, options.length); + allOptions[options.length] = new Options.RequestIdOption(reqId); + return allOptions; + } + + private TransactionOption[] withReqId( + final XGoogSpannerRequestId reqId, final TransactionOption... options) { + if (reqId == null) { + return options; + } + if (options == null || options.length == 0) { + return new TransactionOption[] {new Options.RequestIdOption(reqId)}; + } + TransactionOption[] allOptions = new TransactionOption[options.length + 1]; + System.arraycopy(options, 0, allOptions, 0, options.length); + allOptions[options.length] = new Options.RequestIdOption(reqId); + return allOptions; + } + private long executePartitionedUpdateWithPooledSession( final Statement stmt, final UpdateOption... options) { ISpan span = tracer.spanBuilder(PARTITION_DML_TRANSACTION, commonAttributes); try (IScope s = tracer.withSpan(span)) { - return runWithSessionRetry(session -> session.executePartitionedUpdate(stmt, options)); + return runWithSessionRetry( + (session, reqId) -> { + return session.executePartitionedUpdate(stmt, withReqId(reqId, options)); + }); } catch (RuntimeException e) { span.setStatus(e); span.end(); @@ -395,15 +462,22 @@ private long executePartitionedUpdateWithPooledSession( } } - private T runWithSessionRetry(Function callable) { + @VisibleForTesting + T runWithSessionRetry(BiFunction callable) { PooledSessionFuture session = getSession(); + XGoogSpannerRequestId reqId = + XGoogSpannerRequestId.of( + this.dbId, Long.valueOf(session.getChannel()), this.nextNthRequest(), 1); while (true) { try { - return callable.apply(session); + return callable.apply(session, reqId); } catch (SessionNotFoundException e) { session = (PooledSessionFuture) pool.getPooledSessionReplacementHandler().replaceSession(e, session); + reqId = + XGoogSpannerRequestId.of( + this.dbId, Long.valueOf(session.getChannel()), this.nextNthRequest(), 1); } } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java index c36f1902648..c5952a38a5e 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java @@ -177,6 +177,10 @@ public static UpdateTransactionOption excludeTxnFromChangeStreams() { return EXCLUDE_TXN_FROM_CHANGE_STREAMS_OPTION; } + public static RequestIdOption requestId(XGoogSpannerRequestId reqId) { + return new RequestIdOption(reqId); + } + /** * Specifying this will cause the read to yield at most this many rows. This should be greater * than 0. @@ -535,6 +539,7 @@ void appendToOptions(Options options) { private RpcLockHint lockHint; private Boolean lastStatement; private IsolationLevel isolationLevel; + private XGoogSpannerRequestId reqId; // Construction is via factory methods below. private Options() {} @@ -599,6 +604,14 @@ String filter() { return filter; } + boolean hasReqId() { + return reqId != null; + } + + XGoogSpannerRequestId reqId() { + return reqId; + } + boolean hasPriority() { return priority != null; } @@ -756,6 +769,9 @@ public String toString() { if (isolationLevel != null) { b.append("isolationLevel: ").append(isolationLevel).append(' '); } + if (reqId != null) { + b.append("requestId: ").append(reqId.toString()); + } return b.toString(); } @@ -798,7 +814,8 @@ public boolean equals(Object o) { && Objects.equals(orderBy(), that.orderBy()) && Objects.equals(isLastStatement(), that.isLastStatement()) && Objects.equals(lockHint(), that.lockHint()) - && Objects.equals(isolationLevel(), that.isolationLevel()); + && Objects.equals(isolationLevel(), that.isolationLevel()) + && Objects.equals(reqId(), that.reqId()); } @Override @@ -867,6 +884,9 @@ public int hashCode() { if (isolationLevel != null) { result = 31 * result + isolationLevel.hashCode(); } + if (reqId != null) { + result = 31 * result + reqId.hashCode(); + } return result; } @@ -1052,4 +1072,36 @@ public boolean equals(Object o) { return o instanceof LastStatementUpdateOption; } } + + static final class RequestIdOption extends InternalOption + implements ReadOption, TransactionOption, UpdateOption { + private final XGoogSpannerRequestId reqId; + + RequestIdOption(XGoogSpannerRequestId reqId) { + this.reqId = reqId; + } + + @Override + void appendToOptions(Options options) { + options.reqId = this.reqId; + } + + @Override + public int hashCode() { + return this.reqId.hashCode(); + } + + @Override + public boolean equals(Object o) { + // instanceof for a null object returns false. + if (!(o instanceof RequestIdOption)) { + return false; + } + RequestIdOption other = (RequestIdOption) o; + if (this.reqId == null || other.reqId == null) { + return this.reqId == null && other.reqId == null; + } + return Objects.equals(this.reqId, other.reqId); + } + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/PartitionedDmlTransaction.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/PartitionedDmlTransaction.java index 93cebb6333c..5f0d497c74c 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/PartitionedDmlTransaction.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/PartitionedDmlTransaction.java @@ -79,7 +79,12 @@ long executeStreamingPartitionedUpdate( boolean foundStats = false; long updateCount = 0L; Stopwatch stopwatch = Stopwatch.createStarted(ticker); - Options options = Options.fromUpdateOptions(updateOptions); + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); + UpdateOption[] allOptions = new UpdateOption[updateOptions.length + 1]; + System.arraycopy(updateOptions, 0, allOptions, 0, updateOptions.length); + allOptions[allOptions.length - 1] = new Options.RequestIdOption(reqId); + Options options = Options.fromUpdateOptions(allOptions); try { ExecuteSqlRequest request = newTransactionRequestFrom(statement, options); @@ -89,7 +94,8 @@ long executeStreamingPartitionedUpdate( try { ServerStream stream = - rpc.executeStreamingPartitionedDml(request, session.getOptions(), remainingTimeout); + rpc.executeStreamingPartitionedDml( + request, reqId.withOptions(session.getOptions()), remainingTimeout); for (PartialResultSet rs : stream) { if (rs.getResumeToken() != null && !rs.getResumeToken().isEmpty()) { @@ -104,6 +110,7 @@ long executeStreamingPartitionedUpdate( } catch (UnavailableException e) { LOGGER.log( Level.FINER, "Retrying PartitionedDml transaction after UnavailableException", e); + reqId.incrementAttempt(); request = resumeOrRestartRequest(resumeToken, statement, request, options); } catch (InternalException e) { if (!isRetryableInternalErrorPredicate.apply(e)) { @@ -112,6 +119,7 @@ long executeStreamingPartitionedUpdate( LOGGER.log( Level.FINER, "Retrying PartitionedDml transaction after InternalException - EOS", e); + reqId.incrementAttempt(); request = resumeOrRestartRequest(resumeToken, statement, request, options); } catch (AbortedException e) { LOGGER.log(Level.FINER, "Retrying PartitionedDml transaction after AbortedException", e); @@ -119,17 +127,23 @@ long executeStreamingPartitionedUpdate( foundStats = false; updateCount = 0L; request = newTransactionRequestFrom(statement, options); + // Create a new xGoogSpannerRequestId. + reqId = session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); + } catch (SpannerException e) { + e.setRequestId(reqId); + throw e; } } if (!foundStats) { throw SpannerExceptionFactory.newSpannerException( ErrorCode.INVALID_ARGUMENT, - "Partitioned DML response missing stats possibly due to non-DML statement as input"); + "Partitioned DML response missing stats possibly due to non-DML statement as input", + reqId); } LOGGER.log(Level.FINER, "Finished PartitionedUpdate statement"); return updateCount; } catch (Exception e) { - throw SpannerExceptionFactory.newSpannerException(e); + throw SpannerExceptionFactory.newSpannerException(e, reqId); } } @@ -209,11 +223,14 @@ private ByteString initTransaction(final Options options) { .setExcludeTxnFromChangeStreams( options.withExcludeTxnFromChangeStreams() == Boolean.TRUE)) .build(); - Transaction tx = rpc.beginTransaction(request, session.getOptions(), true); + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); + Transaction tx = rpc.beginTransaction(request, reqId.withOptions(session.getOptions()), true); if (tx.getId().isEmpty()) { throw SpannerExceptionFactory.newSpannerException( ErrorCode.INTERNAL, - "Failed to init transaction, missing transaction id\n" + session.getName()); + "Failed to init transaction, missing transaction id\n" + session.getName(), + reqId); } return tx.getId(); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ResumableStreamIterator.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ResumableStreamIterator.java index 44a0b637f60..1240dd631ac 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ResumableStreamIterator.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ResumableStreamIterator.java @@ -71,6 +71,8 @@ abstract class ResumableStreamIterator extends AbstractIterator stream; private ByteString resumeToken; private boolean finished; + public XGoogSpannerRequestId xGoogRequestId; + private XGoogSpannerRequestId.RequestIdCreator xGoogRequestIdCreator; /** * Indicates whether it is currently safe to retry RPCs. This will be {@code false} if we have @@ -86,7 +88,8 @@ protected ResumableStreamIterator( TraceWrapper tracer, ErrorHandler errorHandler, RetrySettings streamingRetrySettings, - Set retryableCodes) { + Set retryableCodes, + XGoogSpannerRequestId.RequestIdCreator xGoogRequestIdCreator) { this( maxBufferSize, streamName, @@ -95,7 +98,8 @@ protected ResumableStreamIterator( Attributes.empty(), errorHandler, streamingRetrySettings, - retryableCodes); + retryableCodes, + xGoogRequestIdCreator); } protected ResumableStreamIterator( @@ -106,7 +110,8 @@ protected ResumableStreamIterator( Attributes attributes, ErrorHandler errorHandler, RetrySettings streamingRetrySettings, - Set retryableCodes) { + Set retryableCodes, + XGoogSpannerRequestId.RequestIdCreator xGoogRequestIdCreator) { checkArgument(maxBufferSize >= 0); this.maxBufferSize = maxBufferSize; this.tracer = tracer; @@ -114,6 +119,7 @@ protected ResumableStreamIterator( this.errorHandler = errorHandler; this.streamingRetrySettings = Preconditions.checkNotNull(streamingRetrySettings); this.retryableCodes = Preconditions.checkNotNull(retryableCodes); + this.xGoogRequestIdCreator = xGoogRequestIdCreator; } private ExponentialBackOff newBackOff() { @@ -181,15 +187,27 @@ private void backoffSleep(Context context, long backoffMillis) throws SpannerExc } if (latch.await(backoffMillis, TimeUnit.MILLISECONDS)) { // Woken by context cancellation. - throw newSpannerExceptionForCancellation(context, null, null /*TODO: requestId*/); + throw newSpannerExceptionForCancellation(context, null, this.xGoogRequestId); } } catch (InterruptedException interruptExcept) { - throw newSpannerExceptionForCancellation(context, interruptExcept, null /*TODO: requestId*/); + throw newSpannerExceptionForCancellation(context, interruptExcept, this.xGoogRequestId); } finally { context.removeListener(listener); } } + public void ensureNonNullXGoogRequestId() { + if (this.xGoogRequestId == null) { + this.xGoogRequestId = + this.xGoogRequestIdCreator.nextRequestId(1 /*TODO: infer channelId*/, 1 /*attempt*/); + } + } + + public void incrementXGoogRequestIdAttempt() { + this.ensureNonNullXGoogRequestId(); + this.xGoogRequestId.incrementAttempt(); + } + private enum DirectExecutor implements Executor { INSTANCE; @@ -281,6 +299,7 @@ protected PartialResultSet computeNext() { } assert buffer.isEmpty() || buffer.getLast().getResumeToken().equals(resumeToken); stream = null; + incrementXGoogRequestIdAttempt(); try (IScope s = tracer.withSpan(span)) { long delay = spannerException.getRetryDelayInMillis(); if (delay != -1) { @@ -302,12 +321,14 @@ protected PartialResultSet computeNext() { if (++numAttemptsOnOtherChannel < errorHandler.getMaxAttempts() && prepareIteratorForRetryOnDifferentGrpcChannel()) { stream = null; + xGoogRequestId = null; continue; } } } span.addAnnotation("Stream broken. Not safe to retry", spannerException); span.setStatus(spannerException); + spannerException.setRequestId(this.xGoogRequestId); throw spannerException; } catch (RuntimeException e) { span.addAnnotation("Stream broken. Not safe to retry", e); @@ -328,6 +349,11 @@ private void startGrpcStreaming() { // this Span. stream = checkNotNull(startStream(resumeToken, streamMessageListener)); stream.requestPrefetchChunks(); + if (this.xGoogRequestId == null) { + this.xGoogRequestId = + this.xGoogRequestIdCreator.nextRequestId( + 1 /* channelId shall be replaced by the instantiated class. */, 0); + } } } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionClient.java index 2edfb66d896..605f1639c57 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionClient.java @@ -22,6 +22,7 @@ import com.google.api.pathtemplate.PathTemplate; import com.google.cloud.grpc.GrpcTransportOptions.ExecutorFactory; import com.google.cloud.spanner.spi.v1.SpannerRpc; +import com.google.cloud.spanner.spi.v1.SpannerRpc.Option; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; @@ -31,10 +32,11 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.concurrent.GuardedBy; /** Client for creating single sessions and batches of sessions. */ -class SessionClient implements AutoCloseable { +class SessionClient implements AutoCloseable, XGoogSpannerRequestId.RequestIdCreator { static class SessionId { private static final PathTemplate NAME_TEMPLATE = PathTemplate.create( @@ -108,6 +110,17 @@ Object value() { return ImmutableMap.copyOf(tmp); } + static Map createRequestOptions( + long channelId, XGoogSpannerRequestId requestId) { + return ImmutableMap.of( + Option.CHANNEL_HINT, channelId, + Option.REQUEST_ID, requestId); + } + + static Map createRequestOptions(XGoogSpannerRequestId requestId) { + return ImmutableMap.of(Option.REQUEST_ID, requestId); + } + private final class BatchCreateSessionsRunnable implements Runnable { private final long channelHint; private final int sessionCount; @@ -174,6 +187,12 @@ interface SessionConsumer { private final DatabaseId db; private final Attributes commonAttributes; + // SessionClient is created long before a DatabaseClientImpl is created, + // as batch sessions are firstly created then later attached to each Client. + private static final AtomicInteger NTH_ID = new AtomicInteger(0); + private final int nthId = NTH_ID.incrementAndGet(); + private final AtomicInteger nthRequest = new AtomicInteger(0); + @GuardedBy("this") private volatile long sessionChannelCounter; @@ -201,14 +220,22 @@ DatabaseId getDatabaseId() { return db; } + @Override + public XGoogSpannerRequestId nextRequestId(long channelId, int attempt) { + return XGoogSpannerRequestId.of( + this.nthId, this.nthRequest.incrementAndGet(), channelId, attempt); + } + /** Create a single session. */ SessionImpl createSession() { // The sessionChannelCounter could overflow, but that will just flip it to Integer.MIN_VALUE, // which is also a valid channel hint. - final Map options; + final long channelId; synchronized (this) { - options = optionMap(SessionOption.channelHint(sessionChannelCounter++)); + channelId = sessionChannelCounter; + sessionChannelCounter++; } + XGoogSpannerRequestId reqId = nextRequestId(channelId, 1); ISpan span = spanner.getTracer().spanBuilder(SpannerImpl.CREATE_SESSION, this.commonAttributes); try (IScope s = spanner.getTracer().withSpan(span)) { com.google.spanner.v1.Session session = @@ -218,11 +245,16 @@ SessionImpl createSession() { db.getName(), spanner.getOptions().getDatabaseRole(), spanner.getOptions().getSessionLabels(), - options); + createRequestOptions(channelId, reqId)); SessionReference sessionReference = new SessionReference( - session.getName(), session.getCreateTime(), session.getMultiplexed(), options); - return new SessionImpl(spanner, sessionReference); + session.getName(), + session.getCreateTime(), + session.getMultiplexed(), + optionMap(SessionOption.channelHint(channelId))); + SessionImpl sessionImpl = new SessionImpl(spanner, sessionReference); + sessionImpl.setRequestIdCreator(this); + return sessionImpl; } catch (RuntimeException e) { span.setStatus(e); throw e; @@ -258,6 +290,9 @@ SessionImpl createMultiplexedSession() { spanner .getTracer() .spanBuilder(SpannerImpl.CREATE_MULTIPLEXED_SESSION, this.commonAttributes); + // MultiplexedSession doesn't use a channelId hence this hard-coded value. + int channelId = 0; + XGoogSpannerRequestId reqId = nextRequestId(channelId, 1); try (IScope s = spanner.getTracer().withSpan(span)) { com.google.spanner.v1.Session session = spanner @@ -266,13 +301,14 @@ SessionImpl createMultiplexedSession() { db.getName(), spanner.getOptions().getDatabaseRole(), spanner.getOptions().getSessionLabels(), - null, + createRequestOptions(reqId), true); SessionImpl sessionImpl = new SessionImpl( spanner, new SessionReference( session.getName(), session.getCreateTime(), session.getMultiplexed(), null)); + sessionImpl.setRequestIdCreator(this); span.addAnnotation( String.format("Request for %d multiplexed session returned %d session", 1, 1)); return sessionImpl; @@ -379,7 +415,6 @@ void asyncBatchCreateSessions( */ private List internalBatchCreateSessions( final int sessionCount, final long channelHint) throws SpannerException { - final Map options = optionMap(SessionOption.channelHint(channelHint)); ISpan parent = spanner.getTracer().getCurrentSpan(); ISpan span = spanner @@ -387,6 +422,8 @@ private List internalBatchCreateSessions( .spanBuilderWithExplicitParent(SpannerImpl.BATCH_CREATE_SESSIONS_REQUEST, parent); span.addAnnotation(String.format("Requesting %d sessions", sessionCount)); try (IScope s = spanner.getTracer().withSpan(span)) { + XGoogSpannerRequestId reqId = + XGoogSpannerRequestId.of(this.nthId, this.nthRequest.incrementAndGet(), channelHint, 1); List sessions = spanner .getRpc() @@ -395,21 +432,23 @@ private List internalBatchCreateSessions( sessionCount, spanner.getOptions().getDatabaseRole(), spanner.getOptions().getSessionLabels(), - options); + createRequestOptions(channelHint, reqId)); span.addAnnotation( String.format( "Request for %d sessions returned %d sessions", sessionCount, sessions.size())); span.end(); List res = new ArrayList<>(sessionCount); for (com.google.spanner.v1.Session session : sessions) { - res.add( + SessionImpl sessionImpl = new SessionImpl( spanner, new SessionReference( session.getName(), session.getCreateTime(), session.getMultiplexed(), - options))); + optionMap(SessionOption.channelHint(channelHint)))); + sessionImpl.setRequestIdCreator(this); + res.add(sessionImpl); } return res; } catch (RuntimeException e) { @@ -425,6 +464,8 @@ SessionImpl sessionWithId(String name) { synchronized (this) { options = optionMap(SessionOption.channelHint(sessionChannelCounter++)); } - return new SessionImpl(spanner, new SessionReference(name, options)); + SessionImpl sessionImpl = new SessionImpl(spanner, new SessionReference(name, options)); + sessionImpl.setRequestIdCreator(this); + return sessionImpl; } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java index 6b6113d41da..bec93512a14 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java @@ -126,18 +126,31 @@ interface SessionTransaction { private final Clock clock; private final Map options; private final ErrorHandler errorHandler; + private XGoogSpannerRequestId.RequestIdCreator requestIdCreator; SessionImpl(SpannerImpl spanner, SessionReference sessionReference) { this(spanner, sessionReference, NO_CHANNEL_HINT); } SessionImpl(SpannerImpl spanner, SessionReference sessionReference, int channelHint) { + this(spanner, sessionReference, channelHint, new XGoogSpannerRequestId.NoopRequestIdCreator()); + } + + SessionImpl( + SpannerImpl spanner, + SessionReference sessionReference, + int channelHint, + XGoogSpannerRequestId.RequestIdCreator requestIdCreator) { this.spanner = spanner; this.tracer = spanner.getTracer(); this.sessionReference = sessionReference; this.clock = spanner.getOptions().getSessionPoolOptions().getPoolMaintainerClock(); this.options = createOptions(sessionReference, channelHint); this.errorHandler = createErrorHandler(spanner.getOptions()); + this.requestIdCreator = requestIdCreator; + if (this.requestIdCreator == null) { + throw new IllegalStateException("requestIdCreator must be non-null"); + } } static Map createOptions( @@ -287,9 +300,15 @@ public CommitResponse writeAtLeastOnceWithOptions( } CommitRequest request = requestBuilder.build(); ISpan span = tracer.spanBuilder(SpannerImpl.COMMIT); + try (IScope s = tracer.withSpan(span)) { return SpannerRetryHelper.runTxWithRetriesOnAborted( - () -> new CommitResponse(spanner.getRpc().commit(request, getOptions()))); + () -> { + // On Aborted, we have to start a fresh request id. + final XGoogSpannerRequestId reqId = reqIdOrFresh(options); + return new CommitResponse( + spanner.getRpc().commit(request, reqId.withOptions(getOptions()))); + }); } catch (RuntimeException e) { span.setStatus(e); throw e; @@ -298,6 +317,14 @@ public CommitResponse writeAtLeastOnceWithOptions( } } + private XGoogSpannerRequestId reqIdOrFresh(Options options) { + XGoogSpannerRequestId reqId = options.reqId(); + if (reqId == null) { + reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1); + } + return reqId; + } + private RequestOptions getRequestOptions(TransactionOption... transactionOptions) { Options requestOptions = Options.fromTransactionOptions(transactionOptions); if (requestOptions.hasPriority() || requestOptions.hasTag()) { @@ -325,16 +352,19 @@ public ServerStream batchWriteAtLeastOnce( .setSession(getName()) .addAllMutationGroups(mutationGroupsProto); RequestOptions batchWriteRequestOptions = getRequestOptions(transactionOptions); + Options allOptions = Options.fromTransactionOptions(transactionOptions); + final XGoogSpannerRequestId reqId = reqIdOrFresh(allOptions); if (batchWriteRequestOptions != null) { requestBuilder.setRequestOptions(batchWriteRequestOptions); } - if (Options.fromTransactionOptions(transactionOptions).withExcludeTxnFromChangeStreams() - == Boolean.TRUE) { + if (allOptions.withExcludeTxnFromChangeStreams() == Boolean.TRUE) { requestBuilder.setExcludeTxnFromChangeStreams(true); } ISpan span = tracer.spanBuilder(SpannerImpl.BATCH_WRITE); try (IScope s = tracer.withSpan(span)) { - return spanner.getRpc().batchWriteAtLeastOnce(requestBuilder.build(), getOptions()); + return spanner + .getRpc() + .batchWriteAtLeastOnce(requestBuilder.build(), reqId.withOptions(getOptions())); } catch (Throwable e) { span.setStatus(e); throw SpannerExceptionFactory.newSpannerException(e); @@ -435,14 +465,16 @@ public AsyncTransactionManagerImpl transactionManagerAsync(TransactionOption... @Override public ApiFuture asyncClose() { - return spanner.getRpc().asyncDeleteSession(getName(), getOptions()); + XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1); + return spanner.getRpc().asyncDeleteSession(getName(), reqId.withOptions(getOptions())); } @Override public void close() { ISpan span = tracer.spanBuilder(SpannerImpl.DELETE_SESSION); try (IScope s = tracer.withSpan(span)) { - spanner.getRpc().deleteSession(getName(), getOptions()); + XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1); + spanner.getRpc().deleteSession(getName(), reqId.withOptions(getOptions())); } catch (RuntimeException e) { span.setStatus(e); throw e; @@ -472,8 +504,12 @@ ApiFuture beginTransactionAsync( } final BeginTransactionRequest request = requestBuilder.build(); final ApiFuture requestFuture; + XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1); try (IScope ignore = tracer.withSpan(span)) { - requestFuture = spanner.getRpc().beginTransactionAsync(request, channelHint, routeToLeader); + requestFuture = + spanner + .getRpc() + .beginTransactionAsync(request, reqId.withOptions(channelHint), routeToLeader); } requestFuture.addListener( () -> { @@ -481,7 +517,7 @@ ApiFuture beginTransactionAsync( Transaction txn = requestFuture.get(); if (txn.getId().isEmpty()) { throw newSpannerException( - ErrorCode.INTERNAL, "Missing id in transaction\n" + getName()); + ErrorCode.INTERNAL, "Missing id in transaction\n" + getName(), reqId); } span.end(); res.set(txn); @@ -490,7 +526,7 @@ ApiFuture beginTransactionAsync( span.end(); res.setException( SpannerExceptionFactory.newSpannerException( - e.getCause() == null ? e : e.getCause())); + e.getCause() == null ? e : e.getCause(), reqId)); } catch (InterruptedException e) { span.setStatus(e); span.end(); @@ -551,4 +587,27 @@ void onTransactionDone() {} TraceWrapper getTracer() { return tracer; } + + public void setRequestIdCreator(XGoogSpannerRequestId.RequestIdCreator creator) { + this.requestIdCreator = creator; + } + + public XGoogSpannerRequestId.RequestIdCreator getRequestIdCreator() { + return this.requestIdCreator; + } + + int getChannel() { + if (getIsMultiplexed()) { + return 0; + } + Map options = this.getOptions(); + if (options == null) { + return 0; + } + Long channelHint = (Long) options.get(SpannerRpc.Option.CHANNEL_HINT); + if (channelHint == null) { + return 0; + } + return (int) (channelHint % this.spanner.getOptions().getNumChannels()); + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java index fa4e1d03d0c..42a67a66296 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java @@ -1585,6 +1585,10 @@ PooledSession get(final boolean eligibleForLongRunning) { throw SpannerExceptionFactory.propagateInterrupt(e); } } + + public int getChannel() { + return get().getChannel(); + } } interface CachedSession extends Session { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java index a4490c24d16..51a5ddccafd 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java @@ -613,7 +613,7 @@ public static class Builder { // This field controls the default behavior of session management in Java client. // Set useMultiplexedSession to true to make multiplexed session the default. - private boolean useMultiplexedSession = false; + private boolean useMultiplexedSession = true; // This field controls the default behavior of session management for RW operations in Java // client. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerException.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerException.java index 22a5270cef7..c5af3f48152 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerException.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerException.java @@ -16,6 +16,7 @@ package com.google.cloud.spanner; +import com.google.api.core.InternalApi; import com.google.api.gax.rpc.ApiException; import com.google.api.gax.rpc.ErrorDetails; import com.google.cloud.grpc.BaseGrpcServiceException; @@ -57,7 +58,7 @@ public String getResourceName() { private final ErrorCode code; private final ApiException apiException; - private final XGoogSpannerRequestId requestId; + private XGoogSpannerRequestId requestId; /** Private constructor. Use {@link SpannerExceptionFactory} to create instances. */ SpannerException( @@ -197,4 +198,10 @@ public ErrorDetails getErrorDetails() { } return null; } + + /** Sets the requestId. */ + @InternalApi + public void setRequestId(XGoogSpannerRequestId reqId) { + this.requestId = reqId; + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java index 0995c478427..e8941c52756 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java @@ -175,7 +175,7 @@ public class SpannerOptions extends ServiceOptions { private final CloseableExecutorProvider asyncExecutorProvider; private final String compressorName; private final boolean leaderAwareRoutingEnabled; - private final boolean attemptDirectPath; + private final boolean enableDirectAccess; private final DirectedReadOptions directedReadOptions; private final boolean useVirtualThreads; private final OpenTelemetry openTelemetry; @@ -806,7 +806,7 @@ protected SpannerOptions(Builder builder) { asyncExecutorProvider = builder.asyncExecutorProvider; compressorName = builder.compressorName; leaderAwareRoutingEnabled = builder.leaderAwareRoutingEnabled; - attemptDirectPath = builder.attemptDirectPath; + enableDirectAccess = builder.enableDirectAccess; directedReadOptions = builder.directedReadOptions; useVirtualThreads = builder.useVirtualThreads; openTelemetry = builder.openTelemetry; @@ -849,6 +849,10 @@ default boolean isEnableApiTracing() { return false; } + default boolean isEnableDirectAccess() { + return false; + } + default boolean isEnableBuiltInMetrics() { return true; } @@ -884,6 +888,8 @@ private static class SpannerEnvironmentImpl implements SpannerEnvironment { "SPANNER_OPTIMIZER_STATISTICS_PACKAGE"; private static final String SPANNER_ENABLE_EXTENDED_TRACING = "SPANNER_ENABLE_EXTENDED_TRACING"; private static final String SPANNER_ENABLE_API_TRACING = "SPANNER_ENABLE_API_TRACING"; + private static final String GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS = + "GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS"; private static final String SPANNER_ENABLE_END_TO_END_TRACING = "SPANNER_ENABLE_END_TO_END_TRACING"; private static final String SPANNER_DISABLE_BUILTIN_METRICS = "SPANNER_DISABLE_BUILTIN_METRICS"; @@ -916,6 +922,11 @@ public boolean isEnableApiTracing() { return Boolean.parseBoolean(System.getenv(SPANNER_ENABLE_API_TRACING)); } + @Override + public boolean isEnableDirectAccess() { + return Boolean.parseBoolean(System.getenv(GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS)); + } + @Override public boolean isEnableBuiltInMetrics() { return !Boolean.parseBoolean(System.getenv(SPANNER_DISABLE_BUILTIN_METRICS)); @@ -923,8 +934,10 @@ public boolean isEnableBuiltInMetrics() { @Override public boolean isEnableGRPCBuiltInMetrics() { - return "false" - .equalsIgnoreCase(System.getenv(SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS)); + // Enable gRPC built-in metrics as default unless explicitly + // disabled via env. + return !Boolean.parseBoolean( + System.getenv(SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS)); } @Override @@ -998,7 +1011,7 @@ public static class Builder private String compressorName; private String emulatorHost = System.getenv("SPANNER_EMULATOR_HOST"); private boolean leaderAwareRoutingEnabled = true; - private boolean attemptDirectPath = true; + private boolean enableDirectAccess = SpannerOptions.environment.isEnableDirectAccess(); private DirectedReadOptions directedReadOptions; private boolean useVirtualThreads = false; private OpenTelemetry openTelemetry; @@ -1070,7 +1083,7 @@ protected Builder() { this.channelProvider = options.channelProvider; this.channelConfigurator = options.channelConfigurator; this.interceptorProvider = options.interceptorProvider; - this.attemptDirectPath = options.attemptDirectPath; + this.enableDirectAccess = options.enableDirectAccess; this.directedReadOptions = options.directedReadOptions; this.useVirtualThreads = options.useVirtualThreads; this.enableApiTracing = options.enableApiTracing; @@ -1603,8 +1616,15 @@ public Builder disableLeaderAwareRouting() { } @BetaApi + public Builder setEnableDirectAccess(boolean enableDirectAccess) { + this.enableDirectAccess = enableDirectAccess; + return this; + } + + @ObsoleteApi("Use setEnableDirectAccess(false) instead") + @Deprecated public Builder disableDirectPath() { - this.attemptDirectPath = false; + this.enableDirectAccess = false; return this; } @@ -1972,8 +1992,14 @@ public DirectedReadOptions getDirectedReadOptions() { } @BetaApi + public Boolean isEnableDirectAccess() { + return enableDirectAccess; + } + + @ObsoleteApi("Use isEnableDirectAccess() instead") + @Deprecated public boolean isAttemptDirectPath() { - return attemptDirectPath; + return enableDirectAccess; } /** diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java index f690011f389..ab645588bf1 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java @@ -24,6 +24,7 @@ import java.math.BigDecimal; import java.util.List; import java.util.UUID; +import java.util.function.BiFunction; import java.util.function.Function; /** @@ -176,6 +177,60 @@ default float getFloat(String columnName) { */ String getString(String columnName); + /** + * @param columnIndex index of the column + * @return the value of a column with type T or null if the column contains a null value + *

Example + *

{@code
+   * Struct row = ...
+   * String name = row.getOrNull(1, StructReader::getString)
+   * }
+ */ + default T getOrNull(int columnIndex, BiFunction function) { + return isNull(columnIndex) ? null : function.apply(this, columnIndex); + } + + /** + * @param columnName index of the column + * @return the value of a column with type T or null if the column contains a null value + *

Example + *

{@code
+   * Struct row = ...
+   * String name = row.getOrNull("name", StructReader::getString)
+   * }
+ */ + default T getOrNull(String columnName, BiFunction function) { + return isNull(columnName) ? null : function.apply(this, columnName); + } + + /** + * @param columnIndex index of the column + * @return the value of a column with type T, or the given default if the column value is null + *

Example + *

{@code
+   * Struct row = ...
+   * String name = row.getOrDefault(1, StructReader::getString, "")
+   * }
+ */ + default T getOrDefault( + int columnIndex, BiFunction function, T defaultValue) { + return isNull(columnIndex) ? defaultValue : function.apply(this, columnIndex); + } + + /** + * @param columnName name of the column + * @return the value of a column with type T, or the given default if the column value is null + *

Example + *

{@code
+   * Struct row = ...
+   * String name = row.getOrDefault("name", StructReader::getString, "")
+   * }
+ */ + default T getOrDefault( + String columnName, BiFunction function, T defaultValue) { + return isNull(columnName) ? defaultValue : function.apply(this, columnName); + } + /** * @param columnIndex index of the column * @return the value of a non-{@code NULL} column with type {@link Type#json()}. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunnerImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunnerImpl.java index e35e56f0157..8af9ba65d23 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunnerImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunnerImpl.java @@ -449,6 +449,8 @@ private final class CommitRunnable implements Runnable { @Override public void run() { + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); try { prev.get(); if (transactionId == null && transactionIdFuture == null) { @@ -491,7 +493,8 @@ public void run() { final ApiFuture commitFuture; final ISpan opSpan = tracer.spanBuilderWithExplicitParent(SpannerImpl.COMMIT, span); try (IScope ignore = tracer.withSpan(opSpan)) { - commitFuture = rpc.commitAsync(commitRequest, getTransactionChannelHint()); + commitFuture = + rpc.commitAsync(commitRequest, reqId.withOptions(getTransactionChannelHint())); } session.markUsed(clock.instant()); commitFuture.addListener( @@ -502,7 +505,7 @@ public void run() { // future, but we add a result here as well as a safety precaution. res.setException( SpannerExceptionFactory.newSpannerException( - ErrorCode.INTERNAL, "commitFuture is not done")); + ErrorCode.INTERNAL, "commitFuture is not done", reqId)); return; } com.google.spanner.v1.CommitResponse proto = commitFuture.get(); @@ -532,7 +535,9 @@ public void run() { } if (!proto.hasCommitTimestamp()) { throw newSpannerException( - ErrorCode.INTERNAL, "Missing commitTimestamp:\n" + session.getName()); + ErrorCode.INTERNAL, + "Missing commitTimestamp:\n" + session.getName(), + reqId); } span.addAnnotation("Commit Done"); opSpan.end(); @@ -568,7 +573,8 @@ public void run() { res.setException(SpannerExceptionFactory.propagateTimeout(e)); } catch (Throwable e) { res.setException( - SpannerExceptionFactory.newSpannerException(e.getCause() == null ? e : e.getCause())); + SpannerExceptionFactory.newSpannerException( + e.getCause() == null ? e : e.getCause(), reqId)); } } } @@ -923,9 +929,12 @@ private ResultSet internalExecuteUpdate( final ExecuteSqlRequest.Builder builder = getExecuteSqlRequestBuilder( statement, queryMode, options, /* withTransactionSelector= */ true); + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); try { com.google.spanner.v1.ResultSet resultSet = - rpc.executeQuery(builder.build(), getTransactionChannelHint(), isRouteToLeader()); + rpc.executeQuery( + builder.build(), reqId.withOptions(getTransactionChannelHint()), isRouteToLeader()); session.markUsed(clock.instant()); if (resultSet.getMetadata().hasTransaction()) { onTransactionMetadata( @@ -1056,9 +1065,11 @@ public long[] batchUpdate(Iterable statements, UpdateOption... update } final ExecuteBatchDmlRequest.Builder builder = getExecuteBatchDmlRequestBuilder(statements, options); + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); try { com.google.spanner.v1.ExecuteBatchDmlResponse response = - rpc.executeBatchDml(builder.build(), getTransactionChannelHint()); + rpc.executeBatchDml(builder.build(), reqId.withOptions(getTransactionChannelHint())); session.markUsed(clock.instant()); long[] results = new long[response.getResultSetsCount()]; for (int i = 0; i < response.getResultSetsCount(); ++i) { @@ -1083,7 +1094,7 @@ public long[] batchUpdate(Iterable statements, UpdateOption... update ErrorCode.fromRpcStatus(response.getStatus()), response.getStatus().getMessage(), results, - null /*TODO: requestId*/); + reqId); } return results; } catch (Throwable e) { @@ -1116,11 +1127,15 @@ public ApiFuture batchUpdateAsync( final ExecuteBatchDmlRequest.Builder builder = getExecuteBatchDmlRequestBuilder(statements, options); ApiFuture response; + XGoogSpannerRequestId reqId = + session.getRequestIdCreator().nextRequestId(session.getChannel(), 1); try { // Register the update as an async operation that must finish before the transaction may // commit. increaseAsyncOperations(); - response = rpc.executeBatchDmlAsync(builder.build(), getTransactionChannelHint()); + response = + rpc.executeBatchDmlAsync( + builder.build(), reqId.withOptions(getTransactionChannelHint())); session.markUsed(clock.instant()); } catch (Throwable t) { decreaseAsyncOperations(); @@ -1151,7 +1166,7 @@ public ApiFuture batchUpdateAsync( ErrorCode.fromRpcStatus(batchDmlResponse.getStatus()), batchDmlResponse.getStatus().getMessage(), results, - null /*TODO: requestId*/); + reqId); } return results; }, diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/XGoogSpannerRequestId.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/XGoogSpannerRequestId.java index 4f6c0114750..7c2006b64ae 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/XGoogSpannerRequestId.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/XGoogSpannerRequestId.java @@ -17,10 +17,17 @@ package com.google.cloud.spanner; import com.google.api.core.InternalApi; +import com.google.cloud.spanner.spi.v1.SpannerRpc; import com.google.common.annotations.VisibleForTesting; +import io.grpc.Metadata; import java.math.BigInteger; import java.security.SecureRandom; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; +import java.util.regex.MatchResult; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @InternalApi public class XGoogSpannerRequestId { @@ -28,12 +35,15 @@ public class XGoogSpannerRequestId { @VisibleForTesting static final String RAND_PROCESS_ID = XGoogSpannerRequestId.generateRandProcessId(); + public static final Metadata.Key REQUEST_HEADER_KEY = + Metadata.Key.of("x-goog-spanner-request-id", Metadata.ASCII_STRING_MARSHALLER); + @VisibleForTesting static final long VERSION = 1; // The version of the specification being implemented. private final long nthClientId; - private final long nthChannelId; private final long nthRequest; + private long nthChannelId; private long attempt; XGoogSpannerRequestId(long nthClientId, long nthChannelId, long nthRequest, long attempt) { @@ -48,6 +58,36 @@ public static XGoogSpannerRequestId of( return new XGoogSpannerRequestId(nthClientId, nthChannelId, nthRequest, attempt); } + @VisibleForTesting + long getAttempt() { + return this.attempt; + } + + @VisibleForTesting + long getNthRequest() { + return this.nthRequest; + } + + @VisibleForTesting + static final Pattern REGEX = + Pattern.compile("^(\\d)\\.([0-9a-z]{16})\\.(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$"); + + public static XGoogSpannerRequestId of(String s) { + Matcher m = XGoogSpannerRequestId.REGEX.matcher(s); + if (!m.matches()) { + throw new IllegalStateException( + s + " does not match " + XGoogSpannerRequestId.REGEX.pattern()); + } + + MatchResult mr = m.toMatchResult(); + + return new XGoogSpannerRequestId( + Long.parseLong(mr.group(3)), + Long.parseLong(mr.group(4)), + Long.parseLong(mr.group(5)), + Long.parseLong(mr.group(6))); + } + private static String generateRandProcessId() { // Expecting to use 64-bits of randomness to avoid clashes. BigInteger bigInt = new BigInteger(64, new SecureRandom()); @@ -66,6 +106,31 @@ public String toString() { this.attempt); } + public String debugToString() { + return String.format( + "%d.%s.nth_client=%d.nth_chan=%d.nth_req=%d.attempt=%d", + XGoogSpannerRequestId.VERSION, + XGoogSpannerRequestId.RAND_PROCESS_ID, + this.nthClientId, + this.nthChannelId, + this.nthRequest, + this.attempt); + } + + @VisibleForTesting + boolean isGreaterThan(XGoogSpannerRequestId other) { + if (this.nthClientId != other.nthClientId) { + return this.nthClientId > other.nthClientId; + } + if (this.nthChannelId != other.nthChannelId) { + return this.nthChannelId > other.nthChannelId; + } + if (this.nthRequest != other.nthRequest) { + return this.nthRequest > other.nthRequest; + } + return this.attempt > other.attempt; + } + @Override public boolean equals(Object other) { // instanceof for a null object returns false. @@ -81,8 +146,56 @@ public boolean equals(Object other) { && Objects.equals(this.attempt, otherReqId.attempt); } + public void incrementAttempt() { + this.attempt++; + } + + Map withOptions(Map options) { + Map copyOptions = new HashMap<>(); + if (options != null) { + copyOptions.putAll(options); + } + copyOptions.put(SpannerRpc.Option.REQUEST_ID, this); + return copyOptions; + } + @Override public int hashCode() { return Objects.hash(this.nthClientId, this.nthChannelId, this.nthRequest, this.attempt); } + + interface RequestIdCreator { + XGoogSpannerRequestId nextRequestId(long channelId, int attempt); + } + + static class NoopRequestIdCreator implements RequestIdCreator { + NoopRequestIdCreator() {} + + @Override + public XGoogSpannerRequestId nextRequestId(long channelId, int attempt) { + return XGoogSpannerRequestId.of(1, 1, 1, 0); + } + } + + public void setChannelId(long channelId) { + this.nthChannelId = channelId; + } + + @VisibleForTesting + XGoogSpannerRequestId withNthRequest(long replacementNthRequest) { + return XGoogSpannerRequestId.of( + this.nthClientId, this.nthChannelId, replacementNthRequest, this.attempt); + } + + @VisibleForTesting + XGoogSpannerRequestId withChannelId(long replacementChannelId) { + return XGoogSpannerRequestId.of( + this.nthClientId, replacementChannelId, this.nthRequest, this.attempt); + } + + @VisibleForTesting + XGoogSpannerRequestId withNthClientId(long replacementClientId) { + return XGoogSpannerRequestId.of( + replacementClientId, this.nthChannelId, this.nthRequest, this.attempt); + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java index b91188619aa..6ba935d94e8 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java @@ -1583,6 +1583,7 @@ public final OperationFuture updateDatabaseDdl * .addAllStatements(new ArrayList()) * .setOperationId("operationId129704162") * .setProtoDescriptors(ByteString.EMPTY) + * .setThroughputMode(true) * .build(); * databaseAdminClient.updateDatabaseDdlAsync(request).get(); * } @@ -1621,6 +1622,7 @@ public final OperationFuture updateDatabaseDdl * .addAllStatements(new ArrayList()) * .setOperationId("operationId129704162") * .setProtoDescriptors(ByteString.EMPTY) + * .setThroughputMode(true) * .build(); * OperationFuture future = * databaseAdminClient.updateDatabaseDdlOperationCallable().futureCall(request); @@ -1659,6 +1661,7 @@ public final OperationFuture updateDatabaseDdl * .addAllStatements(new ArrayList()) * .setOperationId("operationId129704162") * .setProtoDescriptors(ByteString.EMPTY) + * .setThroughputMode(true) * .build(); * ApiFuture future = * databaseAdminClient.updateDatabaseDdlCallable().futureCall(request); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/package-info.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/package-info.java index e0c10822cb6..c085e0a6e6c 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/package-info.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/package-info.java @@ -15,7 +15,7 @@ */ /** - * A client to Cloud Spanner Instance Admin API + * A client to Cloud Spanner API * *

The interfaces provided are listed below, along with usage samples. * diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java index 55a10bc2436..5af29072b57 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminStub.java @@ -1053,6 +1053,26 @@ protected HttpJsonInstanceAdminStub( HttpRule.newBuilder() .setPost("/v1/{name=projects/*/instances/*/operations/*}:cancel") .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost( + "/v1/{name=projects/*/instances/*/backups/*/operations/*}:cancel") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost( + "/v1/{name=projects/*/instances/*/instancePartitions/*/operations/*}:cancel") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost( + "/v1/{name=projects/*/instanceConfigs/*/operations/*}:cancel") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost( + "/v1/{name=projects/*/instanceConfigs/*/ssdCaches/*/operations/*}:cancel") + .build()) .build()) .put( "google.longrunning.Operations.DeleteOperation", @@ -1062,6 +1082,25 @@ protected HttpJsonInstanceAdminStub( HttpRule.newBuilder() .setDelete("/v1/{name=projects/*/instances/*/operations/*}") .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete( + "/v1/{name=projects/*/instances/*/backups/*/operations/*}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete( + "/v1/{name=projects/*/instances/*/instancePartitions/*/operations/*}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete("/v1/{name=projects/*/instanceConfigs/*/operations/*}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete( + "/v1/{name=projects/*/instanceConfigs/*/ssdCaches/*/operations/*}") + .build()) .build()) .put( "google.longrunning.Operations.GetOperation", @@ -1071,6 +1110,24 @@ protected HttpJsonInstanceAdminStub( HttpRule.newBuilder() .setGet("/v1/{name=projects/*/instances/*/operations/*}") .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet("/v1/{name=projects/*/instances/*/backups/*/operations/*}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet( + "/v1/{name=projects/*/instances/*/instancePartitions/*/operations/*}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet("/v1/{name=projects/*/instanceConfigs/*/operations/*}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet( + "/v1/{name=projects/*/instanceConfigs/*/ssdCaches/*/operations/*}") + .build()) .build()) .put( "google.longrunning.Operations.ListOperations", @@ -1080,6 +1137,24 @@ protected HttpJsonInstanceAdminStub( HttpRule.newBuilder() .setGet("/v1/{name=projects/*/instances/*/operations}") .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet("/v1/{name=projects/*/instances/*/backups/*/operations}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet( + "/v1/{name=projects/*/instances/*/instancePartitions/*/operations}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet("/v1/{name=projects/*/instanceConfigs/*/operations}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setGet( + "/v1/{name=projects/*/instanceConfigs/*/ssdCaches/*/operations}") + .build()) .build()) .build()); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java index 12a48541c59..7418c88f68d 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java @@ -248,7 +248,8 @@ public Duration convert(String value) { } else { duration = Duration.ofMillis(Long.parseLong(value.trim())); } - if (duration.isZero()) { + // Converters should return null for invalid values. + if (duration.isNegative()) { return null; } return duration; diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java index 9811a946200..2c86192443d 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java @@ -28,6 +28,7 @@ import static com.google.cloud.spanner.connection.ConnectionProperties.DATA_BOOST_ENABLED; import static com.google.cloud.spanner.connection.ConnectionProperties.DIALECT; import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_API_TRACING; +import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_DIRECT_ACCESS; import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_END_TO_END_TRACING; import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_EXTENDED_TRACING; import static com.google.cloud.spanner.connection.ConnectionProperties.ENCODED_CREDENTIALS; @@ -556,7 +557,11 @@ Builder setCredentials(Credentials credentials) { return this; } - Builder setStatementExecutorType(StatementExecutorType statementExecutorType) { + /** + * Sets the executor type to use for connections. See {@link StatementExecutorType} for more + * information on what the different options mean. + */ + public Builder setStatementExecutorType(StatementExecutorType statementExecutorType) { this.statementExecutorType = statementExecutorType; return this; } @@ -920,7 +925,11 @@ CredentialsProvider getCredentialsProvider() { return getInitialConnectionPropertyValue(CREDENTIALS_PROVIDER); } - StatementExecutorType getStatementExecutorType() { + /** + * Returns the executor type that is used by connections that are created from this {@link + * ConnectionOptions} instance. + */ + public StatementExecutorType getStatementExecutorType() { return this.statementExecutorType; } @@ -1073,6 +1082,10 @@ boolean isExperimentalHost() { return getInitialConnectionPropertyValue(IS_EXPERIMENTAL_HOST); } + Boolean isEnableDirectAccess() { + return getInitialConnectionPropertyValue(ENABLE_DIRECT_ACCESS); + } + String getClientCertificate() { return getInitialConnectionPropertyValue(CLIENT_CERTIFICATE); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java index d9610a5a08a..ac53b800bb5 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java @@ -183,6 +183,20 @@ public class ConnectionProperties { BOOLEANS, BooleanConverter.INSTANCE, Context.STARTUP); + static final ConnectionProperty ENABLE_DIRECT_ACCESS = + create( + "enableDirectAccess", + "Configure the connection to try to connect to Spanner using " + + "DirectPath (true/false). The client will try to connect to Spanner " + + "using a direct Google network connection. DirectPath will work only " + + "if the client is trying to establish a connection from a Google Cloud VM. " + + "Otherwise it will automatically fallback to the standard network path. " + + "NOTE: The default for this property is currently false, " + + "but this could be changed in the future.", + null, + BOOLEANS, + BooleanConverter.INSTANCE, + Context.STARTUP); static final ConnectionProperty USE_AUTO_SAVEPOINTS_FOR_EMULATOR = create( "useAutoSavepointsForEmulator", diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java index 1f4d8f5cf22..ae88bcc6ffe 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java @@ -361,7 +361,7 @@ public StatementResult statementShowReturnCommitStats() { @Override public StatementResult statementSetMaxCommitDelay(Duration duration) { - getConnection().setMaxCommitDelay(duration == null || duration.isZero() ? null : duration); + getConnection().setMaxCommitDelay(duration); return noResult(SET_MAX_COMMIT_DELAY); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DdlClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DdlClient.java index ef7ad7e5cdb..d8dcb3c6ae3 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DdlClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/DdlClient.java @@ -35,6 +35,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Supplier; +import java.util.stream.Collectors; /** * Convenience class for executing Data Definition Language statements on transactions that support @@ -137,7 +138,21 @@ OperationFuture executeDdl( dbBuilder.setProtoDescriptors(protoDescriptors); } Database db = dbBuilder.build(); - return dbAdminClient.updateDatabaseDdl(db, statements, null); + return dbAdminClient.updateDatabaseDdl( + db, + statements.stream().map(DdlClient::stripTrailingSemicolon).collect(Collectors.toList()), + null); + } + + static String stripTrailingSemicolon(String input) { + if (!input.contains(";")) { + return input; + } + String trimmed = input.trim(); + if (trimmed.endsWith(";")) { + return trimmed.substring(0, trimmed.length() - 1); + } + return input; } /** Returns true if the statement is a `CREATE DATABASE ...` statement. */ diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java index 60b1acfb60a..b21e8c84db0 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java @@ -163,6 +163,8 @@ static class SpannerPoolKey { private final boolean enableEndToEndTracing; private final String clientCertificate; private final String clientCertificateKey; + private final boolean isExperimentalHost; + private final Boolean enableDirectAccess; @VisibleForTesting static SpannerPoolKey of(ConnectionOptions options) { @@ -196,6 +198,8 @@ private SpannerPoolKey(ConnectionOptions options) throws IOException { this.enableEndToEndTracing = options.isEndToEndTracingEnabled(); this.clientCertificate = options.getClientCertificate(); this.clientCertificateKey = options.getClientCertificateKey(); + this.isExperimentalHost = options.isExperimentalHost(); + this.enableDirectAccess = options.isEnableDirectAccess(); } @Override @@ -220,7 +224,9 @@ public boolean equals(Object o) { && Objects.equals(this.enableApiTracing, other.enableApiTracing) && Objects.equals(this.enableEndToEndTracing, other.enableEndToEndTracing) && Objects.equals(this.clientCertificate, other.clientCertificate) - && Objects.equals(this.clientCertificateKey, other.clientCertificateKey); + && Objects.equals(this.clientCertificateKey, other.clientCertificateKey) + && Objects.equals(this.isExperimentalHost, other.isExperimentalHost) + && Objects.equals(this.enableDirectAccess, other.enableDirectAccess); } @Override @@ -241,7 +247,9 @@ public int hashCode() { this.enableApiTracing, this.enableEndToEndTracing, this.clientCertificate, - this.clientCertificateKey); + this.clientCertificateKey, + this.isExperimentalHost, + this.enableDirectAccess); } } @@ -405,6 +413,12 @@ Spanner createSpanner(SpannerPoolKey key, ConnectionOptions options) { if (key.clientCertificate != null && key.clientCertificateKey != null) { builder.useClientCert(key.clientCertificate, key.clientCertificateKey); } + if (key.isExperimentalHost) { + builder.setExperimentalHost(key.host); + } + if (key.enableDirectAccess != null) { + builder.setEnableDirectAccess(key.enableDirectAccess); + } if (options.getConfigurator() != null) { options.getConfigurator().configure(builder); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementExecutor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementExecutor.java index 6e410f31e83..b022158b917 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementExecutor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/StatementExecutor.java @@ -172,9 +172,23 @@ private static ListeningExecutorService createExecutorService(StatementExecutorT */ private final List interceptors; - enum StatementExecutorType { + /** The executor type that is used for statements that are executed on a connection. */ + public enum StatementExecutorType { + /** + * Use a platform thread per connection. This allows async execution of statements, but costs + * more resources than the other options. + */ PLATFORM_THREAD, + /** + * Use a virtual thread per connection. This allows async execution of statements. Virtual + * threads are only supported on Java 21 and higher. + */ VIRTUAL_THREAD, + /** + * Use the calling thread for execution. This does not support async execution of statements. + * This option is used by drivers that do not support async execution, such as JDBC and + * PGAdapter. + */ DIRECT_EXECUTOR, } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java index fa5719c95c4..5abf3ea98e7 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java @@ -71,6 +71,7 @@ import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.SpannerOptions.CallContextConfigurator; import com.google.cloud.spanner.SpannerOptions.CallCredentialsProvider; +import com.google.cloud.spanner.XGoogSpannerRequestId; import com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStub; import com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStubSettings; import com.google.cloud.spanner.admin.database.v1.stub.GrpcDatabaseAdminCallableFactory; @@ -85,9 +86,8 @@ import com.google.common.base.Function; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.io.Resources; import com.google.common.util.concurrent.RateLimiter; @@ -193,6 +193,7 @@ import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.Duration; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -236,6 +237,7 @@ public class GapicSpannerRpc implements SpannerRpc { private static final String CLIENT_LIBRARY_LANGUAGE = "spanner-java"; public static final String DEFAULT_USER_AGENT = CLIENT_LIBRARY_LANGUAGE + "/" + GaxProperties.getLibraryVersion(GapicSpannerRpc.class); + public static boolean DIRECTPATH_CHANNEL_CREATED = false; private static final String API_FILE = "grpc-gcp-apiconfig.json"; private boolean rpcIsClosed; @@ -278,8 +280,6 @@ public class GapicSpannerRpc implements SpannerRpc { private final int numChannels; private final boolean isGrpcGcpExtensionEnabled; - private Supplier directPathEnabledSupplier = () -> false; - private final GrpcCallContext baseGrpcCallContext; public static GapicSpannerRpc create(SpannerOptions options) { @@ -358,19 +358,20 @@ public GapicSpannerRpc(final SpannerOptions options) { SpannerInterceptorProvider.create( MoreObjects.firstNonNull( options.getInterceptorProvider(), - SpannerInterceptorProvider.createDefault( - options.getOpenTelemetry(), - (() -> directPathEnabledSupplier.get())))) + SpannerInterceptorProvider.createDefault(options.getOpenTelemetry()))) // This sets the trace context headers. .withTraceContext(endToEndTracingEnabled, options.getOpenTelemetry()) // This sets the response compressor (Server -> Client). .withEncoding(compressorName)) .setHeaderProvider(headerProviderWithUserAgent) .setAllowNonDefaultServiceAccount(true); - String directPathXdsEnv = System.getenv("GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS"); - boolean isAttemptDirectPathXds = Boolean.parseBoolean(directPathXdsEnv); - if (isAttemptDirectPathXds) { + boolean isEnableDirectAccess = options.isEnableDirectAccess(); + if (isEnableDirectAccess) { defaultChannelProviderBuilder.setAttemptDirectPath(true); + // This will let the credentials try to fetch a hard-bound access token if the runtime + // environment supports it. + defaultChannelProviderBuilder.setAllowHardBoundTokenTypes( + Collections.singletonList(InstantiatingGrpcChannelProvider.HardBoundTokenTypes.ALTS)); defaultChannelProviderBuilder.setAttemptDirectPathXds(); } @@ -408,6 +409,8 @@ public GapicSpannerRpc(final SpannerOptions options) { final String emulatorHost = System.getenv("SPANNER_EMULATOR_HOST"); try { + // TODO: make our retry settings to inject and increment + // XGoogSpannerRequestId whenever a retry occurs. SpannerStubSettings spannerStubSettings = options.getSpannerStubSettings().toBuilder() .setTransportChannelProvider(channelProvider) @@ -421,12 +424,9 @@ public GapicSpannerRpc(final SpannerOptions options) { this.spannerStub = GrpcSpannerStubWithStubSettingsAndClientContext.create( spannerStubSettings, clientContext); - this.directPathEnabledSupplier = - Suppliers.memoize( - () -> { - return ((GrpcTransportChannel) clientContext.getTransportChannel()).isDirectPath() - && isAttemptDirectPathXds; - }); + DIRECTPATH_CHANNEL_CREATED = + ((GrpcTransportChannel) clientContext.getTransportChannel()).isDirectPath() + && isEnableDirectAccess; this.readRetrySettings = options.getSpannerStubSettings().streamingReadSettings().getRetrySettings(); this.readRetryableCodes = @@ -678,7 +678,13 @@ private static boolean isEmulatorEnabled(SpannerOptions options, String emulator } public static boolean isEnableAFEServerTiming() { - return "false".equalsIgnoreCase(System.getenv("SPANNER_DISABLE_AFE_SERVER_TIMING")); + // Enable AFE metrics as default unless explicitly + // disabled via env. + return !Boolean.parseBoolean(System.getenv("SPANNER_DISABLE_AFE_SERVER_TIMING")); + } + + public static boolean isEnableDirectPathXdsEnv() { + return Boolean.parseBoolean(System.getenv("GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS")); } private static final RetrySettings ADMIN_REQUESTS_LIMIT_EXCEEDED_RETRY_SETTINGS = @@ -1647,7 +1653,7 @@ public Session createSession( @Nullable Map labels, @Nullable Map options) throws SpannerException { - // By default sessions are not multiplexed + // By default, sessions are not multiplexed return createSession(databaseName, databaseRole, labels, options, false); } @@ -2018,11 +2024,12 @@ GrpcCallContext newCallContext( MethodDescriptor method, boolean routeToLeader) { GrpcCallContext context = this.baseGrpcCallContext; - if (options != null) { + Long affinity = options == null ? null : Option.CHANNEL_HINT.getLong(options); + if (affinity != null) { if (this.isGrpcGcpExtensionEnabled) { // Set channel affinity in gRPC-GCP. // Compute bounded channel hint to prevent gRPC-GCP affinity map from getting unbounded. - int boundedChannelHint = Option.CHANNEL_HINT.getLong(options).intValue() % this.numChannels; + int boundedChannelHint = affinity.intValue() % this.numChannels; context = context.withCallOptions( context @@ -2031,9 +2038,12 @@ GrpcCallContext newCallContext( GcpManagedChannel.AFFINITY_KEY, String.valueOf(boundedChannelHint))); } else { // Set channel affinity in GAX. - context = context.withChannelAffinity(Option.CHANNEL_HINT.getLong(options).intValue()); + context = context.withChannelAffinity(affinity.intValue()); } } + if (options != null) { + context = withRequestId(context, options); + } context = context.withExtraHeaders(metadataProvider.newExtraHeaders(resource, projectName)); if (routeToLeader && leaderAwareRoutingEnabled) { context = context.withExtraHeaders(metadataProvider.newRouteToLeaderHeader()); @@ -2053,6 +2063,19 @@ GrpcCallContext newCallContext( return (GrpcCallContext) context.merge(apiCallContextFromContext); } + GrpcCallContext withRequestId(GrpcCallContext context, Map options) { + XGoogSpannerRequestId reqId = (XGoogSpannerRequestId) options.get(Option.REQUEST_ID); + if (reqId == null) { + return context; + } + + Map> withReqId = + ImmutableMap.of( + XGoogSpannerRequestId.REQUEST_HEADER_KEY.name(), + Collections.singletonList(reqId.toString())); + return context.withExtraHeaders(withReqId); + } + void registerResponseObserver(SpannerResponseObserver responseObserver) { responseObservers.add(responseObserver); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java index 0f132593565..01aa28d8d93 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java @@ -56,7 +56,6 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutionException; -import java.util.function.Supplier; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; @@ -76,7 +75,7 @@ class HeaderInterceptor implements ClientInterceptor { private static final Metadata.Key GOOGLE_CLOUD_RESOURCE_PREFIX_KEY = Metadata.Key.of("google-cloud-resource-prefix", Metadata.ASCII_STRING_MARSHALLER); private static final Pattern SERVER_TIMING_PATTERN = - Pattern.compile("(?[a-zA-Z0-9_-]+);\\s*dur=(?\\d+)"); + Pattern.compile("(?[a-zA-Z0-9_-]+);\\s*dur=(?\\d+(\\.\\d+)?)"); private static final Pattern GOOGLE_CLOUD_RESOURCE_PREFIX_PATTERN = Pattern.compile( ".*projects/(?\\p{ASCII}[^/]*)(/instances/(?\\p{ASCII}[^/]*))?(/databases/(?\\p{ASCII}[^/]*))?"); @@ -99,12 +98,8 @@ class HeaderInterceptor implements ClientInterceptor { private static final Level LEVEL = Level.INFO; private final SpannerRpcMetrics spannerRpcMetrics; - private final Supplier directPathEnabledSupplier; - - HeaderInterceptor( - SpannerRpcMetrics spannerRpcMetrics, Supplier directPathEnabledSupplier) { + HeaderInterceptor(SpannerRpcMetrics spannerRpcMetrics) { this.spannerRpcMetrics = spannerRpcMetrics; - this.directPathEnabledSupplier = directPathEnabledSupplier; } @Override @@ -133,7 +128,8 @@ public void onHeaders(Metadata metadata) { Boolean isDirectPathUsed = isDirectPathUsed(getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR)); addDirectPathUsedAttribute(compositeTracer, isDirectPathUsed); - processHeader(metadata, tagContext, attributes, span, compositeTracer); + processHeader( + metadata, tagContext, attributes, span, compositeTracer, isDirectPathUsed); super.onHeaders(metadata); } }, @@ -151,7 +147,8 @@ private void processHeader( TagContext tagContext, Attributes attributes, Span span, - CompositeTracer compositeTracer) { + CompositeTracer compositeTracer, + boolean isDirectPathUsed) { MeasureMap measureMap = STATS_RECORDER.newMeasureMap(); String serverTiming = metadata.get(SERVER_TIMING_HEADER_KEY); try { @@ -162,17 +159,17 @@ private void processHeader( // would fail to parse it correctly. To make the parsing more robust, the logic has been // updated to handle multiple metrics gracefully. - Map serverTimingMetrics = parseServerTimingHeader(serverTiming); + Map serverTimingMetrics = parseServerTimingHeader(serverTiming); if (serverTimingMetrics.containsKey(GFE_TIMING_HEADER)) { - long gfeLatency = serverTimingMetrics.get(GFE_TIMING_HEADER); + float gfeLatency = serverTimingMetrics.get(GFE_TIMING_HEADER); - measureMap.put(SPANNER_GFE_LATENCY, gfeLatency); + measureMap.put(SPANNER_GFE_LATENCY, (long) gfeLatency); measureMap.put(SPANNER_GFE_HEADER_MISSING_COUNT, 0L); measureMap.record(tagContext); - spannerRpcMetrics.recordGfeLatency(gfeLatency, attributes); + spannerRpcMetrics.recordGfeLatency((long) gfeLatency, attributes); spannerRpcMetrics.recordGfeHeaderMissingCount(0L, attributes); - if (compositeTracer != null) { + if (compositeTracer != null && !isDirectPathUsed) { compositeTracer.recordGFELatency(gfeLatency); } if (span != null) { @@ -181,7 +178,7 @@ private void processHeader( } else { measureMap.put(SPANNER_GFE_HEADER_MISSING_COUNT, 1L).record(tagContext); spannerRpcMetrics.recordGfeHeaderMissingCount(1L, attributes); - if (compositeTracer != null) { + if (compositeTracer != null && !isDirectPathUsed) { compositeTracer.recordGfeHeaderMissingCount(1L); } } @@ -189,7 +186,7 @@ private void processHeader( // Record AFE metrics if (compositeTracer != null && GapicSpannerRpc.isEnableAFEServerTiming()) { if (serverTimingMetrics.containsKey(AFE_TIMING_HEADER)) { - long afeLatency = serverTimingMetrics.get(AFE_TIMING_HEADER); + float afeLatency = serverTimingMetrics.get(AFE_TIMING_HEADER); compositeTracer.recordAFELatency(afeLatency); } else { compositeTracer.recordAfeHeaderMissingCount(1L); @@ -200,8 +197,8 @@ private void processHeader( } } - private Map parseServerTimingHeader(String serverTiming) { - Map serverTimingMetrics = new HashMap<>(); + private Map parseServerTimingHeader(String serverTiming) { + Map serverTimingMetrics = new HashMap<>(); if (serverTiming != null) { Matcher matcher = SERVER_TIMING_PATTERN.matcher(serverTiming); while (matcher.find()) { @@ -209,7 +206,7 @@ private Map parseServerTimingHeader(String serverTiming) { String durationStr = matcher.group("duration"); if (metricName != null && durationStr != null) { - serverTimingMetrics.put(metricName, Long.valueOf(durationStr)); + serverTimingMetrics.put(metricName, Float.valueOf(durationStr)); } } } @@ -291,7 +288,7 @@ private Map getBuiltInMetricAttributes(String key, DatabaseName BuiltInMetricsConstant.INSTANCE_ID_KEY.getKey(), databaseName.getInstance()); attributes.put( BuiltInMetricsConstant.DIRECT_PATH_ENABLED_KEY.getKey(), - String.valueOf(this.directPathEnabledSupplier.get())); + String.valueOf(GapicSpannerRpc.DIRECTPATH_CHANNEL_CREATED)); return attributes; }); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerInterceptorProvider.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerInterceptorProvider.java index c3c05b8af15..ec7a4e54a03 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerInterceptorProvider.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerInterceptorProvider.java @@ -56,14 +56,14 @@ public static SpannerInterceptorProvider createDefault(OpenTelemetry openTelemet })); } + @ObsoleteApi("DirectPathEnabledSupplier is not used") public static SpannerInterceptorProvider createDefault( OpenTelemetry openTelemetry, Supplier directPathEnabledSupplier) { List defaultInterceptorList = new ArrayList<>(); defaultInterceptorList.add(new SpannerErrorInterceptor()); defaultInterceptorList.add( new LoggingInterceptor(Logger.getLogger(GapicSpannerRpc.class.getName()), Level.FINER)); - defaultInterceptorList.add( - new HeaderInterceptor(new SpannerRpcMetrics(openTelemetry), directPathEnabledSupplier)); + defaultInterceptorList.add(new HeaderInterceptor(new SpannerRpcMetrics(openTelemetry))); return new SpannerInterceptorProvider(ImmutableList.copyOf(defaultInterceptorList)); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerRpc.java index 73671b91ff7..4b5682bb2b0 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerRpc.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/SpannerRpc.java @@ -78,7 +78,8 @@ public interface SpannerRpc extends ServiceRpc { /** Options passed in {@link SpannerRpc} methods to control how an RPC is issued. */ enum Option { - CHANNEL_HINT("Channel Hint"); + CHANNEL_HINT("Channel Hint"), + REQUEST_ID("Request Id"); private final String value; diff --git a/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json index 20a93919949..90fb979315e 100644 --- a/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json +++ b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json @@ -1403,6 +1403,222 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$ColumnMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$ColumnMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$Mod", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$Mod$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$ModType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$ModValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$ModValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$DataChangeRecord$ValueCaptureType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$HeartbeatRecord", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$HeartbeatRecord$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEndRecord", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEndRecord$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEventRecord", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEventRecord$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEventRecord$MoveInEvent", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEventRecord$MoveInEvent$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEventRecord$MoveOutEvent", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionEventRecord$MoveOutEvent$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionStartRecord", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ChangeStreamRecord$PartitionStartRecord$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.spanner.v1.CommitRequest", "queryAllDeclaredConstructors": true, diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java index afb550b5c6a..a763f98cf0f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java @@ -31,7 +31,7 @@ import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -44,11 +44,10 @@ abstract class AbstractNettyMockServerTest { protected static InetSocketAddress address; static ExecutorService executor; protected static LocalChannelProvider channelProvider; - protected static AtomicInteger fakeServerTiming = - new AtomicInteger(new Random().nextInt(1000) + 1); - - protected static AtomicInteger fakeAFEServerTiming = - new AtomicInteger(new Random().nextInt(500) + 1); + protected static final AtomicReference fakeServerTiming = + new AtomicReference<>((float) (new Random().nextDouble() * 1000) + 1); + protected static final AtomicReference fakeAFEServerTiming = + new AtomicReference<>((float) new Random().nextInt(500) + 1); protected Spanner spanner; @@ -76,7 +75,7 @@ public void sendHeaders(Metadata headers) { headers.put( Metadata.Key.of("server-timing", Metadata.ASCII_STRING_MARSHALLER), String.format( - "afe; dur=%d, gfet4t7; dur=%d", + "afe; dur=%f, gfet4t7; dur=%f", fakeAFEServerTiming.get(), fakeServerTiming.get())); super.sendHeaders(headers); } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java index 6ceb3e979bf..fa90dd0fe13 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java @@ -34,6 +34,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeFalse; import static org.junit.Assume.assumeTrue; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -105,6 +106,7 @@ import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Server; +import io.grpc.ServerInterceptors; import io.grpc.Status; import io.grpc.StatusRuntimeException; import io.grpc.inprocess.InProcessServerBuilder; @@ -119,6 +121,7 @@ import java.util.Arrays; import java.util.Base64; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Set; @@ -128,6 +131,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; import java.util.logging.Level; import java.util.logging.Logger; @@ -152,6 +156,7 @@ public class DatabaseClientImplTest { private static final String DATABASE_NAME = String.format( "projects/%s/instances/%s/databases/%s", TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE); + private static XGoogSpannerRequestIdTest.ServerHeaderEnforcer xGoogReqIdInterceptor; private static MockSpannerServiceImpl mockSpanner; private static Server server; private static LocalChannelProvider channelProvider; @@ -220,13 +225,33 @@ public static void startStaticServer() throws IOException { StatementResult.query(SELECT1_FROM_TABLE, MockSpannerTestUtil.SELECT1_RESULTSET)); mockSpanner.setBatchWriteResult(BATCH_WRITE_RESPONSES); + Set checkMethods = + new HashSet( + Arrays.asList( + "google.spanner.v1.Spanner/BatchCreateSessions", + "google.spanner.v1.Spanner/BatchWrite", + "google.spanner.v1.Spanner/BeginTransaction", + "google.spanner.v1.Spanner/Commit", + "google.spanner.v1.Spanner/CreateSession", + "google.spanner.v1.Spanner/DeleteSession", + "google.spanner.v1.Spanner/ExecuteBatchDml", + "google.spanner.v1.Spanner/ExecuteSql", + "google.spanner.v1.Spanner/ExecuteStreamingSql", + "google.spanner.v1.Spanner/GetSession", + "google.spanner.v1.Spanner/ListSessions", + "google.spanner.v1.Spanner/PartitionQuery", + "google.spanner.v1.Spanner/PartitionRead", + "google.spanner.v1.Spanner/Read", + "google.spanner.v1.Spanner/Rollback", + "google.spanner.v1.Spanner/StreamingRead")); + xGoogReqIdInterceptor = new XGoogSpannerRequestIdTest.ServerHeaderEnforcer(checkMethods); executor = Executors.newSingleThreadExecutor(); String uniqueName = InProcessServerBuilder.generateName(); server = InProcessServerBuilder.forName(uniqueName) // We need to use a real executor for timeouts to occur. .scheduledExecutorService(new ScheduledThreadPoolExecutor(1)) - .addService(mockSpanner) + .addService(ServerInterceptors.intercept(mockSpanner, xGoogReqIdInterceptor)) .build() .start(); channelProvider = LocalChannelProvider.create(uniqueName); @@ -264,6 +289,7 @@ public void tearDown() { spanner.close(); spannerWithEmptySessionPool.close(); mockSpanner.reset(); + xGoogReqIdInterceptor.reset(); mockSpanner.removeAllExecutionTimes(); } @@ -1391,6 +1417,8 @@ public void testWriteAtLeastOnceAborted() { List commitRequests = mockSpanner.getRequestsOfType(CommitRequest.class); assertEquals(2, commitRequests.size()); + // TODO(@odeke-em): Enable in later PR. + // xGoogReqIdInterceptor.assertIntegrity(); } @Test @@ -5197,6 +5225,27 @@ public void testRetryOnResourceExhausted() { } } + @Test + public void testSelectHasXGoogRequestIdHeader() { + Statement statement = + Statement.newBuilder("select id from test where b=@p1") + .bind("p1") + .toBytesArray( + Arrays.asList(ByteArray.copyFrom("test1"), null, ByteArray.copyFrom("test2"))) + .build(); + mockSpanner.putStatementResult(StatementResult.query(statement, SELECT1_RESULTSET)); + DatabaseClient client = + spanner.getDatabaseClient(DatabaseId.of(TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE)); + try (ResultSet resultSet = client.singleUse().executeQuery(statement)) { + assertTrue(resultSet.next()); + assertEquals(1L, resultSet.getLong(0)); + assertFalse(resultSet.next()); + } finally { + // TODO(@odeke-em): Enable in later PR. + // xGoogReqIdInterceptor.assertIntegrity(); + } + } + @Test public void testSessionPoolExhaustedError_containsStackTraces() { assumeFalse( @@ -5590,4 +5639,74 @@ private boolean isMultiplexedSessionsEnabledForRW() { } return spanner.getOptions().getSessionPoolOptions().getUseMultiplexedSessionForRW(); } + + @Test + public void testdbIdFromClientId() { + SessionPool pool = mock(SessionPool.class); + PooledSessionFuture session = mock(PooledSessionFuture.class); + when(pool.getSession()).thenReturn(session); + TransactionOption option = mock(TransactionOption.class); + DatabaseClientImpl client = new DatabaseClientImpl(pool, mock(TraceWrapper.class)); + + for (int i = 0; i < 10; i++) { + String dbId = String.format("%d", i); + int id = client.dbIdFromClientId(dbId); + assertEquals(id, i + 2); // There was already 1 dbId after new DatabaseClientImpl. + } + } + + @Test + public void testrunWithSessionRetry_withRequestId() { + // Tests that DatabaseClientImpl.runWithSessionRetry correctly returns a XGoogSpannerRequestId + // and correctly increases its nthRequest ordinal number and that attempts stay at 1, given + // a fresh session returned on SessionNotFoundException. + SessionPool pool = mock(SessionPool.class); + PooledSessionFuture sessionFut = mock(PooledSessionFuture.class); + when(pool.getSession()).thenReturn(sessionFut); + SessionPool.PooledSession pooledSession = mock(SessionPool.PooledSession.class); + when(sessionFut.get()).thenReturn(pooledSession); + SessionPool.PooledSessionReplacementHandler sessionReplacementHandler = + mock(SessionPool.PooledSessionReplacementHandler.class); + when(pool.getPooledSessionReplacementHandler()).thenReturn(sessionReplacementHandler); + when(sessionReplacementHandler.replaceSession(any(), any())).thenReturn(sessionFut); + DatabaseClientImpl client = new DatabaseClientImpl(pool, mock(TraceWrapper.class)); + + // 1. Run with no fail runs a single attempt. + final AtomicInteger nCalls = new AtomicInteger(0); + client.runWithSessionRetry( + (session, reqId) -> { + assertEquals(reqId.getAttempt(), 1); + nCalls.incrementAndGet(); + return 1; + }); + assertEquals(nCalls.get(), 1); + + // Reset the call counter. + nCalls.set(0); + + // 2. Run with SessionNotFoundException and ensure that a fresh requestId is returned each time. + SessionNotFoundException excSessionNotFound = + SpannerExceptionFactoryTest.newSessionNotFoundException( + "projects/p/instances/i/databases/d/sessions/s"); + + final AtomicLong priorNthRequest = new AtomicLong(client.getNthRequest()); + client.runWithSessionRetry( + (session, reqId) -> { + // Monotonically increasing priorNthRequest. + assertEquals(reqId.getNthRequest() - priorNthRequest.get(), 1); + priorNthRequest.set(reqId.getNthRequest()); + + // Attempts stay at 1 since with a SessionNotFound exception, + // a fresh requestId is generated. + assertEquals(reqId.getAttempt(), 1); + + if (nCalls.addAndGet(1) < 4) { + throw excSessionNotFound; + } + + return 1; + }); + + assertEquals(nCalls.get(), 4); + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java index efb012ba8e2..fab0e453f5a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java @@ -46,7 +46,7 @@ public class GceTestEnvConfig implements TestEnvConfig { public static final String GCE_CREDENTIALS_FILE = "spanner.gce.config.credentials_file"; public static final String GCE_STREAM_BROKEN_PROBABILITY = "spanner.gce.config.stream_broken_probability"; - public static final String ATTEMPT_DIRECT_PATH = "spanner.attempt_directpath"; + public static final String ENABLE_DIRECT_ACCESS = "spanner.enable_direct_access"; public static final String DIRECT_PATH_TEST_SCENARIO = "spanner.directpath_test_scenario"; // IP address prefixes allocated for DirectPath backends. @@ -64,7 +64,7 @@ public GceTestEnvConfig() { double errorProbability = Double.parseDouble(System.getProperty(GCE_STREAM_BROKEN_PROBABILITY, "0.0")); checkState(errorProbability <= 1.0); - boolean attemptDirectPath = Boolean.getBoolean(ATTEMPT_DIRECT_PATH); + boolean enableDirectAccess = Boolean.getBoolean(ENABLE_DIRECT_ACCESS); String directPathTestScenario = System.getProperty(DIRECT_PATH_TEST_SCENARIO, ""); SpannerOptions.Builder builder = SpannerOptions.newBuilder() @@ -85,7 +85,7 @@ public GceTestEnvConfig() { } SpannerInterceptorProvider interceptorProvider = SpannerInterceptorProvider.createDefault().with(new GrpcErrorInjector(errorProbability)); - if (attemptDirectPath) { + if (enableDirectAccess) { interceptorProvider = interceptorProvider.with(new DirectPathAddressCheckInterceptor(directPathTestScenario)); } @@ -93,7 +93,7 @@ public GceTestEnvConfig() { // DirectPath tests need to set a custom endpoint to the ChannelProvider InstantiatingGrpcChannelProvider.Builder customChannelProviderBuilder = InstantiatingGrpcChannelProvider.newBuilder(); - if (attemptDirectPath) { + if (enableDirectAccess) { customChannelProviderBuilder .setEndpoint(DIRECT_PATH_ENDPOINT) .setAttemptDirectPath(true) diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java index d0841e3ac40..0448656475a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java @@ -27,6 +27,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeFalse; import com.google.api.core.ApiFuture; import com.google.api.core.ApiFutures; @@ -69,6 +70,7 @@ public class MultiplexedSessionDatabaseClientMockServerTest extends AbstractMock @BeforeClass public static void setupResults() { + assumeFalse(TestHelper.isMultiplexSessionDisabled()); mockSpanner.putStatementResults( StatementResult.query(STATEMENT, new RandomResultSetGenerator(1).generate())); mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT)); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java index 9392e202b7a..4145713c7f7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java @@ -25,7 +25,6 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assume.assumeFalse; -import static org.junit.Assume.assumeTrue; import com.google.api.gax.longrunning.OperationTimedPollAlgorithm; import com.google.api.gax.retrying.RetrySettings; @@ -50,7 +49,6 @@ import io.opentelemetry.sdk.metrics.data.MetricData; import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader; import java.io.IOException; -import java.lang.reflect.Field; import java.net.InetSocketAddress; import java.time.Duration; import java.util.Collection; @@ -84,7 +82,7 @@ public class OpenTelemetryBuiltInMetricsTracerTest extends AbstractNettyMockServ Attributes.builder().put(BuiltInMetricsConstant.DIRECT_PATH_USED_KEY, "false").build(); ; - private static final long MIN_LATENCY = 0; + private static final double MIN_LATENCY = 0; private DatabaseClient client; @@ -159,7 +157,7 @@ public void testMetricsSingleUseQuery() { assertFalse(resultSet.next()); } - long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); + double elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); Attributes expectedAttributes = expectedCommonBaseAttributes.toBuilder() .putAll(expectedCommonRequestAttributes) @@ -170,13 +168,14 @@ public void testMetricsSingleUseQuery() { MetricData operationLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.OPERATION_LATENCIES_NAME); assertNotNull(operationLatencyMetricData); - long operationLatencyValue = getAggregatedValue(operationLatencyMetricData, expectedAttributes); + double operationLatencyValue = + getAggregatedValue(operationLatencyMetricData, expectedAttributes); assertThat(operationLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); MetricData attemptLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.ATTEMPT_LATENCIES_NAME); assertNotNull(attemptLatencyMetricData); - long attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); + double attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); assertThat(attemptLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); MetricData operationCountMetricData = @@ -189,16 +188,15 @@ public void testMetricsSingleUseQuery() { assertNotNull(attemptCountMetricData); assertThat(getAggregatedValue(attemptCountMetricData, expectedAttributes)).isEqualTo(1); - MetricData gfeLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); - long gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); - assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0); - assertFalse( checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME)); - assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME)); assertFalse( checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); + // AFE metrics are enabled for DirectPath. + MetricData afeLatencyMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME); + double afeLatencyValue = getAggregatedValue(afeLatencyMetricData, expectedAttributes); + assertEquals(fakeAFEServerTiming.get(), afeLatencyValue, 1e-6); } private boolean isJava8() { @@ -209,76 +207,6 @@ private boolean isWindows() { return System.getProperty("os.name").toLowerCase().contains("windows"); } - @Test - public void testMetricsSingleUseQueryWithAfeEnabled() throws Exception { - assumeTrue(isJava8() && !isWindows()); - assumeFalse(System.getenv().containsKey("SPANNER_DISABLE_AFE_SERVER_TIMING")); - - Class classOfMap = System.getenv().getClass(); - Field field = classOfMap.getDeclaredField("m"); - field.setAccessible(true); - Map writeableEnvironmentVariables = - (Map) field.get(System.getenv()); - - try { - writeableEnvironmentVariables.put("SPANNER_DISABLE_AFE_SERVER_TIMING", "false"); - - Stopwatch stopwatch = Stopwatch.createStarted(); - try (ResultSet resultSet = client.singleUse().executeQuery(SELECT_RANDOM)) { - assertTrue(resultSet.next()); - assertFalse(resultSet.next()); - } - - long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); - Attributes expectedAttributes = - expectedCommonBaseAttributes.toBuilder() - .putAll(expectedCommonRequestAttributes) - .put(BuiltInMetricsConstant.STATUS_KEY, "OK") - .put(BuiltInMetricsConstant.METHOD_KEY, "Spanner.ExecuteStreamingSql") - .build(); - - MetricData operationLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.OPERATION_LATENCIES_NAME); - assertNotNull(operationLatencyMetricData); - long operationLatencyValue = - getAggregatedValue(operationLatencyMetricData, expectedAttributes); - assertThat(operationLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); - - MetricData attemptLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.ATTEMPT_LATENCIES_NAME); - assertNotNull(attemptLatencyMetricData); - long attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); - assertThat(attemptLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); - - MetricData operationCountMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.OPERATION_COUNT_NAME); - assertNotNull(operationCountMetricData); - assertThat(getAggregatedValue(operationCountMetricData, expectedAttributes)).isEqualTo(1); - - MetricData attemptCountMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.ATTEMPT_COUNT_NAME); - assertNotNull(attemptCountMetricData); - assertThat(getAggregatedValue(attemptCountMetricData, expectedAttributes)).isEqualTo(1); - - MetricData gfeLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); - long gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); - assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0); - - assertFalse( - checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME)); - - MetricData afeLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME); - long afeLatencyValue = getAggregatedValue(afeLatencyMetricData, expectedAttributes); - assertEquals(fakeAFEServerTiming.get(), afeLatencyValue, 0); - assertFalse( - checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); - } finally { - writeableEnvironmentVariables.remove("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS"); - } - } - @Test public void testMetricsWithGaxRetryUnaryRpc() { Stopwatch stopwatch = Stopwatch.createStarted(); @@ -328,6 +256,7 @@ public void testMetricsWithGaxRetryUnaryRpc() { @Test public void testNoNetworkConnection() { + assumeFalse(TestHelper.isMultiplexSessionDisabled()); // Create a Spanner instance that tries to connect to a server that does not exist. // This simulates a bad network connection. SpannerOptions.Builder builder = SpannerOptions.newBuilder(); @@ -402,7 +331,7 @@ public void testNoNetworkConnection() { // Attempt count should have a failed metric point for CreateSession. assertEquals( - 1, getAggregatedValue(attemptCountMetricData, expectedAttributesCreateSessionFailed)); + 1, getAggregatedValue(attemptCountMetricData, expectedAttributesCreateSessionFailed), 0); } @Test @@ -444,13 +373,12 @@ public void testNoServerTimingHeader() throws IOException, InterruptedException .put(BuiltInMetricsConstant.METHOD_KEY, "Spanner.ExecuteSql") .build(); - MetricData gfeConnectivityMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME); - assertThat(getAggregatedValue(gfeConnectivityMetricData, expectedAttributes)).isEqualTo(1); assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME)); assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME)); - assertFalse( - checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); + MetricData afeConnectivityMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME); + assertThat(getAggregatedValue(afeConnectivityMetricData, expectedAttributes)).isEqualTo(1); + spannerNoHeader.close(); serverNoHeader.shutdown(); serverNoHeader.awaitTermination(); @@ -509,14 +437,14 @@ private boolean checkIfMetricExists(InMemoryMetricReader reader, String metricNa return false; } - private long getAggregatedValue(MetricData metricData, Attributes attributes) { + private float getAggregatedValue(MetricData metricData, Attributes attributes) { switch (metricData.getType()) { case HISTOGRAM: return metricData.getHistogramData().getPoints().stream() .filter(pd -> pd.getAttributes().equals(attributes)) - .map(data -> (long) data.getSum() / data.getCount()) + .map(data -> (float) data.getSum() / data.getCount()) .findFirst() - .orElse(0L); + .orElse(0F); case LONG_SUM: return metricData.getLongSumData().getPoints().stream() .filter(pd -> pd.getAttributes().equals(attributes)) diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java index e2bcc92fedc..67a2adf1231 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java @@ -83,6 +83,7 @@ public void zeroPrefetchChunksNotAllowed() { @Test public void allOptionsPresent() { + XGoogSpannerRequestId reqId1 = XGoogSpannerRequestId.of(2, 3, 4, 5); Options options = Options.fromReadOptions( Options.limit(10), @@ -90,6 +91,7 @@ public void allOptionsPresent() { Options.dataBoostEnabled(true), Options.directedRead(DIRECTED_READ_OPTIONS), Options.orderBy(RpcOrderBy.NO_ORDER), + Options.requestId(reqId1), Options.lockHint(Options.RpcLockHint.SHARED)); assertThat(options.hasLimit()).isTrue(); assertThat(options.limit()).isEqualTo(10); @@ -101,6 +103,7 @@ public void allOptionsPresent() { assertTrue(options.hasOrderBy()); assertTrue(options.hasLockHint()); assertEquals(DIRECTED_READ_OPTIONS, options.directedReadOptions()); + assertEquals(options.reqId(), reqId1); } @Test @@ -873,4 +876,55 @@ public void testOptions_WithMultipleDifferentIsolationLevels() { Options options = Options.fromTransactionOptions(transactionOptions); assertEquals(options.isolationLevel(), IsolationLevel.SERIALIZABLE); } + + @Test + public void testRequestId() { + XGoogSpannerRequestId reqId1 = XGoogSpannerRequestId.of(1, 2, 3, 4); + XGoogSpannerRequestId reqId2 = XGoogSpannerRequestId.of(2, 3, 4, 5); + Options option1 = Options.fromUpdateOptions(Options.requestId(reqId1)); + Options option1Prime = Options.fromUpdateOptions(Options.requestId(reqId1)); + Options option2 = Options.fromUpdateOptions(Options.requestId(reqId2)); + Options option3 = Options.fromUpdateOptions(); + + assertEquals(option1, option1Prime); + assertNotEquals(option1, option2); + assertEquals(option1.hashCode(), option1Prime.hashCode()); + assertNotEquals(option1, option2); + assertNotEquals(option1, option3); + assertNotEquals(option1.hashCode(), option3.hashCode()); + + assertTrue(option1.hasReqId()); + assertThat(option1.toString()).contains("requestId: " + reqId1.toString()); + + assertFalse(option3.hasReqId()); + assertThat(option3.toString()).doesNotContain("requestId"); + } + + @Test + public void testRequestIdOptionEqualsAndHashCode() { + XGoogSpannerRequestId reqId1 = XGoogSpannerRequestId.of(1, 2, 3, 4); + XGoogSpannerRequestId reqId2 = XGoogSpannerRequestId.of(2, 3, 4, 5); + Options.RequestIdOption opt1 = Options.requestId(reqId1); + Options.RequestIdOption opt1Prime = Options.requestId(reqId1); + Options.RequestIdOption opt2 = Options.requestId(reqId2); + + assertTrue(opt1.equals(opt1)); + assertTrue(opt1.equals(opt1Prime)); + assertEquals(opt1.hashCode(), opt1Prime.hashCode()); + assertFalse(opt1.equals(opt2)); + assertNotEquals(opt1, opt2); + assertNotEquals(opt1.hashCode(), opt2.hashCode()); + } + + @Test + public void testOptions_WithMultipleDifferentRequestIds() { + XGoogSpannerRequestId reqId1 = XGoogSpannerRequestId.of(1, 1, 1, 1); + XGoogSpannerRequestId reqId2 = XGoogSpannerRequestId.of(1, 1, 1, 2); + TransactionOption[] transactionOptions = { + Options.requestId(reqId1), Options.requestId(reqId2), + }; + Options options = Options.fromTransactionOptions(transactionOptions); + assertNotEquals(options.reqId(), reqId1); + assertEquals(options.reqId(), reqId2); + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PartitionedDmlTransactionTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PartitionedDmlTransactionTest.java index 0a2beea7734..8f71b1278f3 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PartitionedDmlTransactionTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/PartitionedDmlTransactionTest.java @@ -96,7 +96,11 @@ public class PartitionedDmlTransactionTest { public void setup() { MockitoAnnotations.initMocks(this); when(session.getName()).thenReturn(sessionId); + when(session.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); when(session.getOptions()).thenReturn(Collections.EMPTY_MAP); + when(session.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); when(rpc.beginTransaction(any(BeginTransactionRequest.class), anyMap(), eq(true))) .thenReturn(Transaction.newBuilder().setId(txId).build()); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ResumableStreamIteratorTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ResumableStreamIteratorTest.java index ebe86724678..5588b47866f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ResumableStreamIteratorTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/ResumableStreamIteratorTest.java @@ -162,7 +162,8 @@ private void initWithLimit(int maxBufferSize) { new TraceWrapper(Tracing.getTracer(), OpenTelemetry.noop().getTracer(""), false), DefaultErrorHandler.INSTANCE, SpannerStubSettings.newBuilder().executeStreamingSqlSettings().getRetrySettings(), - SpannerStubSettings.newBuilder().executeStreamingSqlSettings().getRetryableCodes()) { + SpannerStubSettings.newBuilder().executeStreamingSqlSettings().getRetryableCodes(), + new XGoogSpannerRequestId.NoopRequestIdCreator()) { @Override AbstractResultSet.CloseableIterator startStream( @Nullable ByteString resumeToken, diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java index f3e15df8189..e7ef9955d4f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java @@ -284,6 +284,7 @@ public void testDenyListedChannelIsCleared() { @Test public void testSingleUseQuery_retriesOnNewChannel() { + assumeFalse(TestHelper.isMultiplexSessionDisabled()); SpannerOptions.Builder builder = createSpannerOptionsBuilder(); builder.setSessionPoolOption( SessionPoolOptions.newBuilder().setUseMultiplexedSession(true).build()); @@ -312,6 +313,7 @@ public void testSingleUseQuery_retriesOnNewChannel() { @Test public void testSingleUseQuery_stopsRetrying() { + assumeFalse(TestHelper.isMultiplexSessionDisabled()); SpannerOptions.Builder builder = createSpannerOptionsBuilder(); builder.setSessionPoolOption( SessionPoolOptions.newBuilder().setUseMultiplexedSession(true).build()); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionClientTests.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionClientTests.java index bcba430c521..5d3ed2bca53 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionClientTests.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionClientTests.java @@ -18,7 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; @@ -153,8 +153,17 @@ public void createAndCloseSession() { assertThat(session.getName()).isEqualTo(sessionName); session.close(); + + final ArgumentCaptor> deleteOptionsCaptor = + ArgumentCaptor.forClass(Map.class); + final ArgumentCaptor sessionNameCaptor = ArgumentCaptor.forClass(String.class); + Mockito.verify(rpc).deleteSession(sessionNameCaptor.capture(), deleteOptionsCaptor.capture()); + assertEquals(sessionName, sessionNameCaptor.getValue()); // The same channelHint is passed for deleteSession (contained in "options"). - Mockito.verify(rpc).deleteSession(sessionName, options.getValue()); + assertEquals( + deleteOptionsCaptor.getValue().get(SpannerRpc.Option.CHANNEL_HINT), + options.getValue().get(SpannerRpc.Option.CHANNEL_HINT)); + assertTrue(deleteOptionsCaptor.getValue().containsKey(SpannerRpc.Option.REQUEST_ID)); } } @@ -198,7 +207,9 @@ public void onSessionCreateFailure(Throwable t, int createFailureForSessionCount client.createMultiplexedSession(consumer); } // for multiplexed session there is no channel hint pass in the RPC options - assertNull(options.getValue()); + assertNotNull(options.getValue()); + assertEquals(options.getValue().get(Option.CHANNEL_HINT), null); + assertNotNull(options.getValue().get(Option.REQUEST_ID)); assertEquals(1, returnedSessionCount.get()); } @@ -230,7 +241,9 @@ public void onSessionCreateFailure(Throwable t, int createFailureForSessionCount client.createMultiplexedSession(consumer); } // for multiplexed session there is no channel hint pass in the RPC options - assertNull(options.getValue()); + assertNotNull(options.getValue()); + assertEquals(options.getValue().get(Option.CHANNEL_HINT), null); + assertNotNull(options.getValue().get(Option.REQUEST_ID)); } @SuppressWarnings("unchecked") diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionImplTest.java index eed75bb67e1..df957f75ebf 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionImplTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThrows; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.anyMap; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -144,6 +145,7 @@ public void setUp() { when(rpc.getCommitRetrySettings()) .thenReturn(SpannerStubSettings.newBuilder().commitSettings().getRetrySettings()); session = spanner.getSessionClient(db).createSession(); + ((SessionImpl) session).setRequestIdCreator(new XGoogSpannerRequestId.NoopRequestIdCreator()); Span oTspan = mock(Span.class); ISpan span = new OpenTelemetrySpan(oTspan); when(oTspan.makeCurrent()).thenReturn(mock(Scope.class)); @@ -219,10 +221,14 @@ public void nestedTxnSucceedsWhenAllowed() { @Test public void writeAtLeastOnce() throws ParseException { String timestampString = "2015-10-01T10:54:20.021Z"; + com.google.protobuf.Timestamp t = Timestamps.parse(timestampString); + Transaction txnMetadata = Transaction.newBuilder().setReadTimestamp(t).build(); + Mockito.when(rpc.beginTransaction(Mockito.any(), Mockito.eq(options), eq(false))) + .thenReturn(txnMetadata); ArgumentCaptor commit = ArgumentCaptor.forClass(CommitRequest.class); CommitResponse response = CommitResponse.newBuilder().setCommitTimestamp(Timestamps.parse(timestampString)).build(); - Mockito.when(rpc.commit(commit.capture(), Mockito.eq(options))).thenReturn(response); + Mockito.when(rpc.commit(commit.capture(), anyMap())).thenReturn(response); Timestamp timestamp = session.writeAtLeastOnce( @@ -254,7 +260,7 @@ public void writeAtLeastOnceWithOptions() throws ParseException { ArgumentCaptor commit = ArgumentCaptor.forClass(CommitRequest.class); CommitResponse response = CommitResponse.newBuilder().setCommitTimestamp(Timestamps.parse(timestampString)).build(); - Mockito.when(rpc.commit(commit.capture(), Mockito.eq(options))).thenReturn(response); + Mockito.when(rpc.commit(commit.capture(), anyMap())).thenReturn(response); session.writeAtLeastOnceWithOptions( Collections.singletonList(Mutation.newInsertBuilder("T").set("C").to("x").build()), Options.tag(tag)); @@ -339,7 +345,7 @@ public void newMultiUseReadOnlyTransactionContextClosesOldSingleUseContext() { public void writeClosesOldSingleUseContext() throws ParseException { ReadContext ctx = session.singleUse(TimestampBound.strong()); - Mockito.when(rpc.commit(Mockito.any(), Mockito.eq(options))) + Mockito.when(rpc.commit(Mockito.any(), anyMap())) .thenReturn( CommitResponse.newBuilder() .setCommitTimestamp(Timestamps.parse("2015-10-01T10:54:20.021Z")) @@ -440,7 +446,7 @@ public void request(int numMessages) {} private void mockRead(final PartialResultSet myResultSet) { final ArgumentCaptor consumer = ArgumentCaptor.forClass(SpannerRpc.ResultStreamConsumer.class); - Mockito.when(rpc.read(Mockito.any(), consumer.capture(), Mockito.eq(options), eq(false))) + Mockito.when(rpc.read(Mockito.any(), consumer.capture(), anyMap(), eq(false))) .then( invocation -> { consumer.getValue().onPartialResultSet(myResultSet); @@ -456,8 +462,7 @@ public void multiUseReadOnlyTransactionReturnsEmptyTransactionMetadata() { PartialResultSet.newBuilder() .setMetadata(newMetadata(Type.struct(Type.StructField.of("C", Type.string())))) .build(); - Mockito.when(rpc.beginTransaction(Mockito.any(), Mockito.eq(options), eq(false))) - .thenReturn(txnMetadata); + Mockito.when(rpc.beginTransaction(Mockito.any(), anyMap(), eq(false))).thenReturn(txnMetadata); mockRead(resultSet); ReadOnlyTransaction txn = session.readOnlyTransaction(TimestampBound.strong()); @@ -475,8 +480,7 @@ public void multiUseReadOnlyTransactionReturnsMissingTimestamp() { PartialResultSet.newBuilder() .setMetadata(newMetadata(Type.struct(Type.StructField.of("C", Type.string())))) .build(); - Mockito.when(rpc.beginTransaction(Mockito.any(), Mockito.eq(options), eq(false))) - .thenReturn(txnMetadata); + Mockito.when(rpc.beginTransaction(Mockito.any(), anyMap(), eq(false))).thenReturn(txnMetadata); mockRead(resultSet); ReadOnlyTransaction txn = session.readOnlyTransaction(TimestampBound.strong()); @@ -495,8 +499,7 @@ public void multiUseReadOnlyTransactionReturnsMissingTransactionId() throws Pars PartialResultSet.newBuilder() .setMetadata(newMetadata(Type.struct(Type.StructField.of("C", Type.string())))) .build(); - Mockito.when(rpc.beginTransaction(Mockito.any(), Mockito.eq(options), eq(false))) - .thenReturn(txnMetadata); + Mockito.when(rpc.beginTransaction(Mockito.any(), anyMap(), eq(false))).thenReturn(txnMetadata); mockRead(resultSet); ReadOnlyTransaction txn = session.readOnlyTransaction(TimestampBound.strong()); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java index d4b36e97488..705783d78c0 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java @@ -283,6 +283,7 @@ public void testRandomizePositionQPSThreshold() { @Test public void testUseMultiplexedSession() { + assumeFalse(TestHelper.isMultiplexSessionDisabled()); // skip these tests since this configuration can have dual behaviour in different test-runners assumeFalse(SessionPoolOptions.newBuilder().build().getUseMultiplexedSession()); assertEquals(false, SessionPoolOptions.newBuilder().build().getUseMultiplexedSession()); @@ -304,6 +305,7 @@ public void testUseMultiplexedSession() { @Test public void testUseMultiplexedSessionForRW() { // skip these tests since this configuration can have dual behaviour in different test-runners + assumeFalse(TestHelper.isMultiplexSessionDisabled()); assumeFalse( Boolean.parseBoolean(System.getenv("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW"))); assumeFalse(SessionPoolOptions.newBuilder().build().getUseMultiplexedSession()); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolTest.java index b027ebbc07f..8d00f0889b8 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolTest.java @@ -1481,6 +1481,8 @@ public void testSessionNotFoundReadWriteTransaction() { when(closedSession.getName()) .thenReturn("projects/dummy/instances/dummy/database/dummy/sessions/session-closed"); when(closedSession.getErrorHandler()).thenReturn(DefaultErrorHandler.INSTANCE); + when(closedSession.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); Span oTspan = mock(Span.class); ISpan span = new OpenTelemetrySpan(oTspan); @@ -1521,6 +1523,8 @@ public void testSessionNotFoundReadWriteTransaction() { TransactionRunnerImpl openTransactionRunner = new TransactionRunnerImpl(openSession); openTransactionRunner.setSpan(span); when(openSession.readWriteTransaction()).thenReturn(openTransactionRunner); + when(openSession.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); ResultSet openResultSet = mock(ResultSet.class); when(openResultSet.next()).thenReturn(true, false); @@ -1644,13 +1648,15 @@ public void testSessionNotFoundWrite() { SpannerExceptionFactoryTest.newSessionNotFoundException(sessionName); List mutations = Collections.singletonList(Mutation.newInsertBuilder("FOO").build()); final SessionImpl closedSession = mockSession(); - when(closedSession.writeWithOptions(mutations)).thenThrow(sessionNotFound); + closedSession.setRequestIdCreator(new XGoogSpannerRequestId.NoopRequestIdCreator()); + when(closedSession.writeWithOptions(eq(mutations), any())).thenThrow(sessionNotFound); final SessionImpl openSession = mockSession(); com.google.cloud.spanner.CommitResponse response = mock(com.google.cloud.spanner.CommitResponse.class); when(response.getCommitTimestamp()).thenReturn(Timestamp.now()); - when(openSession.writeWithOptions(mutations)).thenReturn(response); + openSession.setRequestIdCreator(new XGoogSpannerRequestId.NoopRequestIdCreator()); + when(openSession.writeWithOptions(eq(mutations), any())).thenReturn(response); doAnswer( invocation -> { executor.submit( @@ -1687,13 +1693,16 @@ public void testSessionNotFoundWriteAtLeastOnce() { SpannerExceptionFactoryTest.newSessionNotFoundException(sessionName); List mutations = Collections.singletonList(Mutation.newInsertBuilder("FOO").build()); final SessionImpl closedSession = mockSession(); - when(closedSession.writeAtLeastOnceWithOptions(mutations)).thenThrow(sessionNotFound); + closedSession.setRequestIdCreator(new XGoogSpannerRequestId.NoopRequestIdCreator()); + when(closedSession.writeAtLeastOnceWithOptions(eq(mutations), any())) + .thenThrow(sessionNotFound); final SessionImpl openSession = mockSession(); com.google.cloud.spanner.CommitResponse response = mock(com.google.cloud.spanner.CommitResponse.class); when(response.getCommitTimestamp()).thenReturn(Timestamp.now()); - when(openSession.writeAtLeastOnceWithOptions(mutations)).thenReturn(response); + openSession.setRequestIdCreator(new XGoogSpannerRequestId.NoopRequestIdCreator()); + when(openSession.writeAtLeastOnceWithOptions(eq(mutations), any())).thenReturn(response); doAnswer( invocation -> { executor.submit( @@ -1729,10 +1738,10 @@ public void testSessionNotFoundPartitionedUpdate() { SpannerExceptionFactoryTest.newSessionNotFoundException(sessionName); Statement statement = Statement.of("UPDATE FOO SET BAR=1 WHERE 1=1"); final SessionImpl closedSession = mockSession(); - when(closedSession.executePartitionedUpdate(statement)).thenThrow(sessionNotFound); + when(closedSession.executePartitionedUpdate(eq(statement), any())).thenThrow(sessionNotFound); final SessionImpl openSession = mockSession(); - when(openSession.executePartitionedUpdate(statement)).thenReturn(1L); + when(openSession.executePartitionedUpdate(eq(statement), any())).thenReturn(1L); doAnswer( invocation -> { executor.submit( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java index d357a14f9d0..55d066e165e 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java @@ -57,6 +57,48 @@ public void builder() { assertThat(struct.getLong(1)).isEqualTo(2); } + @Test + public void getOrNullTests() { + Struct struct = + Struct.newBuilder() + .set("f1") + .to("x") + .set("f2") + .to(2) + .set("f3") + .to(Value.bool(null)) + .build(); + String column1 = struct.getOrNull(0, StructReader::getString); + assertThat(column1).isEqualTo("x"); + + Long column2 = struct.getOrNull(1, StructReader::getLong); + assertThat(column2).isEqualTo(2); + + String column3 = struct.getOrNull("f3", StructReader::getString); + assertThat(column3).isNull(); + } + + @Test + public void getOrDefaultTests() { + Struct struct = + Struct.newBuilder() + .set("f1") + .to("x") + .set("f2") + .to(2) + .set("f3") + .to(Value.bool(null)) + .build(); + String column1 = struct.getOrDefault(0, StructReader::getString, ""); + assertThat(column1).isEqualTo("x"); + + Long column2 = struct.getOrDefault("f2", StructReader::getLong, -1L); + assertThat(column2).isEqualTo(2); + + String column3 = struct.getOrDefault(2, StructReader::getString, ""); + assertThat(column3).isEqualTo(""); + } + @Test public void duplicateFields() { // Duplicate fields are allowed - some SQL queries produce this type of value. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java new file mode 100644 index 00000000000..eb72238e8a5 --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java @@ -0,0 +1,25 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.spanner; + +class TestHelper { + + static boolean isMultiplexSessionDisabled() { + return System.getenv() + .getOrDefault("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS", "") + .equalsIgnoreCase("false"); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionContextImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionContextImplTest.java index 561bfb89008..4c507b7beae 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionContextImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionContextImplTest.java @@ -67,6 +67,8 @@ public void setup() { .setCommitTimestamp(Timestamp.newBuilder().setSeconds(99L).setNanos(10).build()) .build())); when(session.getName()).thenReturn("test"); + when(session.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); doNothing().when(span).setStatus(any(Throwable.class)); doNothing().when(span).end(); doNothing().when(span).addAnnotation("Starting Commit"); @@ -210,6 +212,8 @@ public void testReturnCommitStats() { private void batchDml(int status) { SessionImpl session = mock(SessionImpl.class); when(session.getName()).thenReturn("test"); + when(session.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); SpannerRpc rpc = mock(SpannerRpc.class); ExecuteBatchDmlResponse response = ExecuteBatchDmlResponse.newBuilder() diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerImplTest.java index 547f6b70a22..19c03859e66 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionManagerImplTest.java @@ -241,7 +241,7 @@ public void usesPreparedTransaction() { Mockito.anyString(), Mockito.anyString(), Mockito.anyMap(), - Mockito.eq(null), + Mockito.anyMap(), Mockito.eq(true))) .thenAnswer( invocation -> @@ -324,7 +324,7 @@ public void inlineBegin() { Mockito.anyString(), Mockito.anyString(), Mockito.anyMap(), - Mockito.eq(null), + Mockito.anyMap(), Mockito.eq(true))) .thenAnswer( invocation -> diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionRunnerImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionRunnerImplTest.java index 3068b38f3ef..2325f2ac40f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionRunnerImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TransactionRunnerImplTest.java @@ -121,6 +121,8 @@ public void setUp() { when(session.getErrorHandler()).thenReturn(DefaultErrorHandler.INSTANCE); when(session.newTransaction(eq(Options.fromTransactionOptions()), any())).thenReturn(txn); when(session.getTracer()).thenReturn(tracer); + when(session.getRequestIdCreator()) + .thenReturn(new XGoogSpannerRequestId.NoopRequestIdCreator()); when(rpc.executeQuery(Mockito.any(ExecuteSqlRequest.class), Mockito.anyMap(), eq(true))) .thenAnswer( invocation -> { @@ -193,7 +195,7 @@ public void usesPreparedTransaction() { Mockito.anyString(), Mockito.anyString(), Mockito.anyMap(), - Mockito.eq(null), + Mockito.anyMap(), Mockito.eq(true))) .thenAnswer( invocation -> @@ -334,6 +336,7 @@ public void inlineBegin() { spanner, new SessionReference( "projects/p/instances/i/databases/d/sessions/s", Collections.EMPTY_MAP)) {}; + session.setRequestIdCreator(new XGoogSpannerRequestId.NoopRequestIdCreator()); session.setCurrentSpan(new OpenTelemetrySpan(mock(io.opentelemetry.api.trace.Span.class))); TransactionRunnerImpl runner = new TransactionRunnerImpl(session); runner.setSpan(span); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/XGoogSpannerRequestIdTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/XGoogSpannerRequestIdTest.java index 12c9213c7dc..fd1ddbbf249 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/XGoogSpannerRequestIdTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/XGoogSpannerRequestIdTest.java @@ -18,18 +18,29 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import io.grpc.Metadata; +import io.grpc.MethodDescriptor.MethodType; +import io.grpc.ServerCall; +import io.grpc.ServerCallHandler; +import io.grpc.ServerInterceptor; +import io.grpc.Status; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class XGoogSpannerRequestIdTest { - private static final Pattern REGEX_RAND_PROCESS_ID = - Pattern.compile("1.([0-9a-z]{16})(\\.\\d+){3}\\.(\\d+)$"); @Test public void testEquals() { @@ -48,7 +59,144 @@ public void testEquals() { @Test public void testEnsureHexadecimalFormatForRandProcessID() { String str = XGoogSpannerRequestId.of(1, 2, 3, 4).toString(); - Matcher m = XGoogSpannerRequestIdTest.REGEX_RAND_PROCESS_ID.matcher(str); + Matcher m = XGoogSpannerRequestId.REGEX.matcher(str); assertTrue(m.matches()); } + + public static class ServerHeaderEnforcer implements ServerInterceptor { + private Map> unaryResults; + private Map> streamingResults; + private List gotValues; + private Set checkMethods; + + ServerHeaderEnforcer(Set checkMethods) { + this.gotValues = new CopyOnWriteArrayList(); + this.unaryResults = + new ConcurrentHashMap>(); + this.streamingResults = + new ConcurrentHashMap>(); + this.checkMethods = checkMethods; + } + + @Override + public ServerCall.Listener interceptCall( + ServerCall call, + final Metadata requestHeaders, + ServerCallHandler next) { + boolean isUnary = call.getMethodDescriptor().getType() == MethodType.UNARY; + String methodName = call.getMethodDescriptor().getFullMethodName(); + String gotReqIdStr = requestHeaders.get(XGoogSpannerRequestId.REQUEST_HEADER_KEY); + if (!this.checkMethods.contains(methodName)) { + return next.startCall(call, requestHeaders); + } + + Map> saver = this.streamingResults; + if (isUnary) { + saver = this.unaryResults; + } + + if (Objects.equals(gotReqIdStr, null) || Objects.equals(gotReqIdStr, "")) { + Status status = + Status.fromCode(Status.Code.INVALID_ARGUMENT) + .augmentDescription( + methodName + " lacks " + XGoogSpannerRequestId.REQUEST_HEADER_KEY); + call.close(status, requestHeaders); + return next.startCall(call, requestHeaders); + } + + assertNotNull(gotReqIdStr); + // Firstly assert and validate that at least we've got a requestId. + Matcher m = XGoogSpannerRequestId.REGEX.matcher(gotReqIdStr); + assertTrue(m.matches()); + + XGoogSpannerRequestId reqId = XGoogSpannerRequestId.of(gotReqIdStr); + if (!saver.containsKey(methodName)) { + saver.put(methodName, new CopyOnWriteArrayList()); + } + + saver.get(methodName).add(reqId); + + // Finally proceed with the call. + return next.startCall(call, requestHeaders); + } + + public String[] accumulatedValues() { + return this.gotValues.toArray(new String[0]); + } + + public void assertIntegrity() { + this.unaryResults.forEach( + (String method, CopyOnWriteArrayList values) -> { + assertMonotonicityOfIds(method, values); + }); + this.streamingResults.forEach( + (String method, CopyOnWriteArrayList values) -> { + assertMonotonicityOfIds(method, values); + }); + } + + private void assertMonotonicityOfIds(String prefix, List reqIds) { + int size = reqIds.size(); + + List violations = new ArrayList<>(); + for (int i = 1; i < size; i++) { + XGoogSpannerRequestId prev = reqIds.get(i - 1); + XGoogSpannerRequestId curr = reqIds.get(i); + if (prev.isGreaterThan(curr)) { + violations.add(String.format("#%d(%s) > #%d(%s)", i - 1, prev, i, curr)); + } + } + + if (violations.isEmpty()) { + return; + } + + throw new IllegalStateException( + prefix + + " monotonicity violation:" + + String.join("\n\t", violations.toArray(new String[0]))); + } + + public static class methodAndRequestId { + String method; + String requestId; + + public methodAndRequestId(String method, String requestId) { + this.method = method; + this.requestId = requestId; + } + + public String toString() { + return "{" + this.method + ":" + this.requestId + "}"; + } + } + + public methodAndRequestId[] accumulatedUnaryValues() { + List accumulated = new ArrayList(); + this.unaryResults.forEach( + (String method, CopyOnWriteArrayList values) -> { + for (int i = 0; i < values.size(); i++) { + accumulated.add(new methodAndRequestId(method, values.get(i).toString())); + } + }); + return accumulated.toArray(new methodAndRequestId[0]); + } + + public methodAndRequestId[] accumulatedStreamingValues() { + List accumulated = new ArrayList(); + this.streamingResults.forEach( + (String method, CopyOnWriteArrayList values) -> { + for (int i = 0; i < values.size(); i++) { + accumulated.add(new methodAndRequestId(method, values.get(i).toString())); + } + }); + return accumulated.toArray(new methodAndRequestId[0]); + } + + public void reset() { + this.gotValues.clear(); + this.unaryResults.clear(); + this.streamingResults.clear(); + } + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java index cb959200425..0ad0588b68b 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java @@ -276,13 +276,14 @@ public void testSetStatementTimeout() { assertThat(connection.hasStatementTimeout(), is(false)); boolean gotException = false; try { - log("@EXPECT EXCEPTION INVALID_ARGUMENT"); + // log("@EXPECT EXCEPTION INVALID_ARGUMENT"); log(String.format("SET STATEMENT_TIMEOUT='0%s';", getTimeUnitAbbreviation(unit))); - connection.setStatementTimeout(0L, unit); + connection.clearStatementTimeout(); + // connection.setStatementTimeout(0L, unit); } catch (IllegalArgumentException e) { gotException = true; } - assertThat(gotException, is(true)); + assertThat(gotException, is(false)); log( String.format( "@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',%s", diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java index af391a745f4..e274c0e6c04 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java @@ -1311,4 +1311,22 @@ public void testExperimentalHost() { .getSessionPoolOptions() .getUseMultiplexedSessionPartitionedOps()); } + + @Test + public void testEnableDirectAccess() { + ConnectionOptions.Builder builderWithoutDirectPathParam = ConnectionOptions.newBuilder(); + builderWithoutDirectPathParam.setUri( + "spanner://localhost:15000/instances/default/databases/singers-db;usePlainText=true"); + assertNull(builderWithoutDirectPathParam.build().isEnableDirectAccess()); + + ConnectionOptions.Builder builderWithDirectPathParamFalse = ConnectionOptions.newBuilder(); + builderWithDirectPathParamFalse.setUri( + "spanner://localhost:15000/instances/default/databases/singers-db;usePlainText=true;enableDirectAccess=false"); + assertFalse(builderWithDirectPathParamFalse.build().isEnableDirectAccess()); + + ConnectionOptions.Builder builderWithDirectPathParam = ConnectionOptions.newBuilder(); + builderWithDirectPathParam.setUri( + "spanner://localhost:15000/projects/default/instances/default/databases/singers-db;usePlainText=true;enableDirectAccess=true"); + assertTrue(builderWithDirectPathParam.build().isEnableDirectAccess()); + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java index 9e2979e1aaf..f082fa7042a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java @@ -93,7 +93,7 @@ public void testCredentialsProvider() throws Throwable { .setConfigurator( spannerOptions -> { spannerOptions.setChannelConfigurator(ManagedChannelBuilder::usePlaintext); - spannerOptions.disableDirectPath(); + spannerOptions.setEnableDirectAccess(false); }) .build(); @@ -135,7 +135,7 @@ public void testCredentialsProvider() throws Throwable { .setConfigurator( spannerOptions -> { spannerOptions.setChannelConfigurator(ManagedChannelBuilder::usePlaintext); - spannerOptions.disableDirectPath(); + spannerOptions.setEnableDirectAccess(false); }) .build(); try (Connection connection = options.getConnection()) { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DdlTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DdlTest.java index e71b912233d..3585421e32c 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DdlTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DdlTest.java @@ -364,4 +364,47 @@ public void testSetsDefaultSequenceKindAndRetriesBatch() { "create table bar (id2 int64 auto_increment primary key", ((UpdateDatabaseDdlRequest) requests.get(0)).getStatements(1)); } + + @Test + public void testStripTrailingSemicolon() { + addUpdateDdlResponse(); + addUpdateDdlResponse(); + addUpdateDdlResponse(); + addUpdateDdlResponse(); + try (Connection connection = createConnection()) { + connection.execute(Statement.of("drop table foo;")); + connection.execute(Statement.of("drop table foo \n\t;\n\t ")); + connection.execute(Statement.of("drop table foo")); + + connection.startBatchDdl(); + connection.execute(Statement.of("create table foo (id1 int64 auto_increment primary key;")); + connection.execute( + Statement.of("create table foo (id1 int64 auto_increment primary key \n\t;\n\t ")); + connection.execute(Statement.of("create table foo (id2 int64 auto_increment primary key")); + connection.runBatch(); + } + assertEquals(4, mockDatabaseAdmin.getRequests().size()); + assertEquals( + "drop table foo", + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(0)).getStatements(0)); + assertEquals( + "drop table foo \n\t", + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(1)).getStatements(0)); + assertEquals( + "drop table foo", + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(2)).getStatements(0)); + + assertEquals( + 3, + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(3)).getStatementsCount()); + assertEquals( + "create table foo (id1 int64 auto_increment primary key", + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(3)).getStatements(0)); + assertEquals( + "create table foo (id1 int64 auto_increment primary key \n\t", + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(3)).getStatements(1)); + assertEquals( + "create table foo (id2 int64 auto_increment primary key", + ((UpdateDatabaseDdlRequest) mockDatabaseAdmin.getRequests().get(3)).getStatements(2)); + } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java index 9e3c23cf5ce..e494f9df8b1 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java @@ -42,7 +42,7 @@ public void testConvert() throws CompileException { DurationConverter converter = new DurationConverter(allowedValues); assertThat(converter.convert("'100ms'"), is(equalTo(Duration.ofMillis(100L)))); assertThat(converter.convert("100"), is(equalTo(Duration.ofMillis(100)))); - assertThat(converter.convert("'0ms'"), is(nullValue())); + assertThat(converter.convert("'0ms'"), is(Duration.ZERO)); assertThat(converter.convert("'-100ms'"), is(nullValue())); assertThat( converter.convert("'315576000000000ms'"), is(equalTo(Duration.ofSeconds(315576000000L)))); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java index 1e22986cce2..ca7fa18e97a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java @@ -83,7 +83,20 @@ public void testNoMaxCommitDelayByDefault() { for (boolean autocommit : new boolean[] {true, false}) { connection.setAutocommit(autocommit); executeCommit(connection); - assertMaxCommitDelay(Duration.getDefaultInstance()); + assertMaxCommitDelay(Duration.getDefaultInstance(), false); + mockSpanner.clearRequests(); + } + } + } + + @Test + public void testZeroMaxCommitDelay() { + try (Connection connection = createConnection()) { + for (boolean autocommit : new boolean[] {true, false}) { + connection.setAutocommit(autocommit); + connection.setMaxCommitDelay(java.time.Duration.ZERO); + executeCommit(connection); + assertMaxCommitDelay(Duration.getDefaultInstance(), true); mockSpanner.clearRequests(); } } @@ -95,7 +108,19 @@ public void testMaxCommitDelayInConnectionString() { for (boolean autocommit : new boolean[] {true, false}) { connection.setAutocommit(autocommit); executeCommit(connection); - assertMaxCommitDelay(Duration.newBuilder().setSeconds(1).build()); + assertMaxCommitDelay(Duration.newBuilder().setSeconds(1).build(), true); + mockSpanner.clearRequests(); + } + } + } + + @Test + public void testZeroMaxCommitDelayInConnectionString() { + try (Connection connection = createConnection(";maxCommitDelay=0")) { + for (boolean autocommit : new boolean[] {true, false}) { + connection.setAutocommit(autocommit); + executeCommit(connection); + assertMaxCommitDelay(Duration.getDefaultInstance(), true); mockSpanner.clearRequests(); } } @@ -121,20 +146,31 @@ public void testSetMaxCommitDelay() { () -> { executeCommit(connection); assertMaxCommitDelay( - Duration.newBuilder() - .setNanos((int) TimeUnit.MILLISECONDS.toNanos(40)) - .build()); + Duration.newBuilder().setNanos((int) TimeUnit.MILLISECONDS.toNanos(40)).build(), + true); mockSpanner.clearRequests(); }); if (useSql) { + // This is translated to Duration.ZERO. connection.execute( Statement.of(String.format("set %smax_commit_delay=null", getVariablePrefix()))); } else { connection.setMaxCommitDelay(null); } executeCommit(connection); - assertMaxCommitDelay(Duration.getDefaultInstance()); + // The SQL statement set max_commit_delay=null is translated to Duration.ZERO. + assertMaxCommitDelay(Duration.getDefaultInstance(), useSql); + mockSpanner.clearRequests(); + + if (useSql) { + connection.execute( + Statement.of(String.format("set %smax_commit_delay=0", getVariablePrefix()))); + } else { + connection.setMaxCommitDelay(java.time.Duration.ZERO); + } + executeCommit(connection); + assertMaxCommitDelay(Duration.getDefaultInstance(), true); mockSpanner.clearRequests(); } } @@ -150,10 +186,11 @@ void executeCommit(Connection connection) { } } - private void assertMaxCommitDelay(Duration expected) { + private void assertMaxCommitDelay(Duration expected, boolean hasMaxCommitDelay) { List requests = mockSpanner.getRequestsOfType(CommitRequest.class); assertEquals(1, requests.size()); CommitRequest request = requests.get(0); assertEquals(expected, request.getMaxCommitDelay()); + assertEquals(hasMaxCommitDelay, request.hasMaxCommitDelay()); } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java index 95bd97962a8..ca0ae403e50 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java @@ -45,7 +45,7 @@ public void testConvert() throws CompileException { assertEquals( Duration.ofNanos((int) TimeUnit.MILLISECONDS.toNanos(100L)), converter.convert("'100ms'")); - assertNull(converter.convert("'0ms'")); + assertEquals(Duration.ZERO, converter.convert("'0ms'")); assertNull(converter.convert("'-100ms'")); assertEquals(Duration.ofSeconds(315576000000L), converter.convert("'315576000000000ms'")); assertEquals(Duration.ofSeconds(1L), converter.convert("'1s'")); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java index 9cc2ebc450e..bf6c1450973 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java @@ -100,7 +100,7 @@ public class ITDirectPathFallback { // TODO(mohanli): Remove this temporary endpoint once DirectPath goes to public beta. private static final String DIRECT_PATH_ENDPOINT = "aa423245250f2bbf.sandbox.googleapis.com:443"; - private static final String ATTEMPT_DIRECT_PATH = "spanner.attempt_directpath"; + private static final String ENABLE_DIRECT_ACCESS = "spanner.enable_direct_access"; public ITDirectPathFallback() { // Create a transport channel provider that can intercept ipv6 packets. @@ -112,7 +112,7 @@ public ITDirectPathFallback() { public void setup() { assume() .withMessage("DirectPath integration tests can only run against DirectPathEnv") - .that(Boolean.getBoolean(ATTEMPT_DIRECT_PATH)) + .that(Boolean.getBoolean(ENABLE_DIRECT_ACCESS)) .isTrue(); // Get default spanner options for Ingetration test SpannerOptions.Builder builder = env.getTestHelper().getOptions().toBuilder(); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITUuidTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITUuidTest.java index 17e6369bf02..561602abfe2 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITUuidTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITUuidTest.java @@ -399,7 +399,7 @@ public void uuidAsKeyParameter() { return null; }); - verifyKeyContents(Arrays.asList(uuid1, uuid2)); + verifyKeyContents(Arrays.asList(uuid2, uuid1)); } private void verifyKeyContents(List uuids) { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java index 24b09d56f83..e46f61a8ce7 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java @@ -879,7 +879,7 @@ private SpannerOptions createSpannerOptions() { .setProjectId("[PROJECT]") // Set a custom channel configurator to allow http instead of https. .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) - .disableDirectPath() + .setEnableDirectAccess(false) .setHost("http://" + endpoint) // Set static credentials that will return the static OAuth test token. .setCredentials(STATIC_CREDENTIALS) diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java index 908a4ad5573..f2d8a07538c 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java @@ -290,7 +290,7 @@ private static SpannerOptions createSpannerOptions(InetSocketAddress address, Se .setProjectId("[PROJECT]") // Set a custom channel configurator to allow http instead of https. .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) - .disableDirectPath() + .setEnableDirectAccess(false) .setHost("http://" + endpoint) // Set static credentials that will return the static OAuth test token. .setCredentials(STATIC_CREDENTIALS) diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql index 0cad83a0f6a..d79dd8bf6f5 100644 --- a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql @@ -160,15 +160,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.520000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.520000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:38.900000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:38.900000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.520000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:38.900000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -261,7 +261,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -271,7 +270,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -281,7 +279,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -291,7 +288,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -510,15 +506,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.643000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.643000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.005000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.005000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.643000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.005000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -611,7 +607,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -621,7 +616,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -631,7 +625,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -641,7 +634,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -950,8 +942,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; ROLLBACK; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.735000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.735000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.100000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.100000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -961,7 +953,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.735000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.100000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -1096,7 +1088,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1106,7 +1097,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1116,7 +1106,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1126,7 +1115,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1462,8 +1450,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.842000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.842000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.195000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.195000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -1473,7 +1461,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.842000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.195000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -1608,7 +1596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1618,7 +1605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1628,7 +1614,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1638,7 +1623,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1876,15 +1860,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.941000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.941000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.290000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.290000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.941000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.290000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -1977,7 +1961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1987,7 +1970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1997,7 +1979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2007,7 +1988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2243,14 +2223,14 @@ SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.021000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.365000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.021000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.365000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -2355,7 +2335,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2365,7 +2344,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2375,7 +2353,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2385,7 +2362,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2600,13 +2576,13 @@ SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.095000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.444000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.095000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.444000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -2697,7 +2673,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2707,7 +2682,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2717,7 +2691,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2727,7 +2700,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2910,14 +2882,14 @@ SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.166000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.166000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.539000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.539000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.166000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.539000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -2996,7 +2968,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3006,7 +2977,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3016,7 +2986,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3026,7 +2995,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3245,15 +3213,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.237000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.237000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.630000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.630000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.237000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.630000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -3346,7 +3314,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3356,7 +3323,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3366,7 +3332,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3376,7 +3341,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3662,8 +3626,8 @@ SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); RUN BATCH; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.293000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.293000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.702000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.702000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -3672,7 +3636,7 @@ START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); RUN BATCH; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.293000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.702000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -3793,7 +3757,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3803,7 +3766,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3813,7 +3775,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3823,7 +3784,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4081,14 +4041,14 @@ SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.349000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.767000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.349000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.767000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -4193,7 +4153,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4203,7 +4162,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4213,7 +4171,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4223,7 +4180,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4438,13 +4394,13 @@ SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.399000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.826000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.399000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.826000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -4535,7 +4491,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4545,7 +4500,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4555,7 +4509,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4565,7 +4518,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4877,8 +4829,8 @@ SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.457000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.457000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.888000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.888000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -4888,7 +4840,7 @@ SET TRANSACTION READ ONLY; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.457000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.888000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -5023,7 +4975,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5033,7 +4984,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5043,7 +4993,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5053,7 +5002,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5288,15 +5236,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.519000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.519000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.960000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.960000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.519000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.960000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -5389,7 +5337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5399,7 +5346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5409,7 +5355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5419,7 +5364,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5641,15 +5585,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.567000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.567000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.018000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.018000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.567000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.018000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -5742,7 +5686,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5752,7 +5695,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5762,7 +5704,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5772,7 +5713,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6088,8 +6028,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; ROLLBACK; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.620000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.620000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.091000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.091000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -6099,7 +6039,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.620000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.091000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -6234,7 +6174,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6244,7 +6183,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6254,7 +6192,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6264,7 +6201,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6607,8 +6543,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.695000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.695000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.166000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.166000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -6618,7 +6554,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.695000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.166000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -6753,7 +6689,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6763,7 +6698,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6773,7 +6707,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6783,7 +6716,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7023,15 +6955,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.760000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.760000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.255000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.255000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.760000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.255000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -7124,7 +7056,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7134,7 +7065,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7144,7 +7074,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7154,7 +7083,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7394,14 +7322,14 @@ SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.811000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.372000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.811000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.372000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -7506,7 +7434,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7516,7 +7443,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7526,7 +7452,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7536,7 +7461,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7756,13 +7680,13 @@ SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.869000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.441000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.869000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.441000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -7853,7 +7777,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7863,7 +7786,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7873,7 +7795,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7883,7 +7804,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8075,14 +7995,14 @@ SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.925000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.925000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.535000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.535000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.925000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.535000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -8161,7 +8081,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8171,7 +8090,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8181,7 +8099,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8191,7 +8108,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8392,13 +8308,13 @@ SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.983000000Z'; +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.592000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.983000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.592000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; @@ -8489,7 +8405,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8499,7 +8414,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8509,7 +8423,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8519,7 +8432,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8753,8 +8665,8 @@ SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SET TRANSACTION READ ONLY; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.034000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.034000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.651000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.651000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -8762,7 +8674,7 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.034000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.651000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; @@ -8869,7 +8781,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8879,7 +8790,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8889,7 +8799,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8899,7 +8808,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9200,8 +9108,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; UPDATE foo SET bar=1; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -9209,8 +9117,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; UPDATE foo SET bar=1; COMMIT; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -9333,7 +9241,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9343,7 +9250,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9353,7 +9259,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9363,7 +9268,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9596,15 +9500,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.141000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.141000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.781000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.781000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.141000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.781000000Z'; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; @@ -9697,7 +9601,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9707,7 +9610,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9717,7 +9619,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9727,7 +9628,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9958,15 +9858,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -10061,7 +9961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10071,7 +9970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10081,7 +9979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10091,7 +9988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10329,15 +10225,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; UPDATE foo SET bar=1; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; UPDATE foo SET bar=1; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -10432,7 +10328,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10442,7 +10337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10452,7 +10346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10462,7 +10355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10730,16 +10622,16 @@ SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -10848,7 +10740,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10858,7 +10749,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10868,7 +10758,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10878,7 +10767,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11125,15 +11013,15 @@ NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -11228,7 +11116,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11238,7 +11125,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11248,7 +11134,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11258,7 +11143,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11466,14 +11350,14 @@ SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=FALSE; @@ -11554,7 +11438,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11564,7 +11447,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11574,7 +11456,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11584,7 +11465,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11796,15 +11676,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='MAX_STALENESS 10s'; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SET READ_ONLY_STALENESS='MAX_STALENESS 10s'; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -11899,7 +11779,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11909,7 +11788,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11919,7 +11797,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11929,7 +11806,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12211,8 +12087,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -12220,8 +12096,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -12344,7 +12220,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12354,7 +12229,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12364,7 +12238,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12374,7 +12247,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12604,15 +12476,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.541000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.541000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.253000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.253000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.541000000Z'; +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.253000000Z'; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; @@ -12705,7 +12577,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12715,7 +12586,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12725,7 +12595,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12735,7 +12604,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12950,15 +12818,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -13053,7 +12921,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13063,7 +12930,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13073,7 +12939,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13083,7 +12948,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13305,15 +13169,15 @@ NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -13408,7 +13272,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13418,7 +13281,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13428,7 +13290,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13438,7 +13299,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13630,14 +13490,14 @@ SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z' +SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; SET AUTOCOMMIT=TRUE; -SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z'; -@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z' +SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z'; +@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z' SHOW VARIABLE READ_ONLY_STALENESS; NEW_CONNECTION; SET READONLY=TRUE; @@ -13718,7 +13578,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13728,7 +13587,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13738,7 +13596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13748,7 +13605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=null; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null SHOW VARIABLE STATEMENT_TIMEOUT; diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql index 974533738a0..91c4ac3f394 100644 --- a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql +++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql @@ -160,15 +160,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.586000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.586000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:38.957000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:38.957000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.586000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:38.957000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -261,7 +261,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -271,7 +270,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -281,7 +279,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -291,7 +288,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -510,15 +506,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.690000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.690000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.052000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.052000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.690000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.052000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -611,7 +607,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -621,7 +616,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -631,7 +625,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -641,7 +634,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -950,8 +942,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; ROLLBACK; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.791000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.791000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.148000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.148000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -961,7 +953,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.791000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.148000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -1096,7 +1088,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1106,7 +1097,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1116,7 +1106,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1126,7 +1115,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1462,8 +1450,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.896000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.896000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.239000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.239000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -1473,7 +1461,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.896000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.239000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -1608,7 +1596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1618,7 +1605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1628,7 +1614,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1638,7 +1623,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1876,15 +1860,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.986000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.986000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.327000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.327000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.986000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.327000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -1977,7 +1961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1987,7 +1970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -1997,7 +1979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2007,7 +1988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2243,14 +2223,14 @@ SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.060000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.406000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.060000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.406000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -2355,7 +2335,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2365,7 +2344,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2375,7 +2353,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2385,7 +2362,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2600,13 +2576,13 @@ SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.126000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.494000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.126000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.494000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -2697,7 +2673,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2707,7 +2682,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2717,7 +2691,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2727,7 +2700,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -2910,14 +2882,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.195000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.195000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.573000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.573000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.195000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.573000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=FALSE; @@ -2996,7 +2968,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3006,7 +2977,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3016,7 +2986,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3026,7 +2995,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3245,15 +3213,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.266000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.266000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.666000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.666000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.266000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.666000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -3346,7 +3314,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3356,7 +3323,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3366,7 +3332,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3376,7 +3341,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3662,8 +3626,8 @@ SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); RUN BATCH; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.323000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.323000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.736000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.736000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -3672,7 +3636,7 @@ START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); RUN BATCH; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.323000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.736000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -3793,7 +3757,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3803,7 +3766,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3813,7 +3775,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -3823,7 +3784,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4081,14 +4041,14 @@ SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.373000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.798000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.373000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.798000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -4193,7 +4153,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4203,7 +4162,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4213,7 +4171,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4223,7 +4180,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4438,13 +4394,13 @@ SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.424000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.854000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.424000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.854000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -4535,7 +4491,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4545,7 +4500,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4555,7 +4509,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4565,7 +4518,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -4877,8 +4829,8 @@ SET TRANSACTION READ ONLY; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.491000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.491000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.926000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.926000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -4888,7 +4840,7 @@ SET TRANSACTION READ ONLY; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.491000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.926000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -5023,7 +4975,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5033,7 +4984,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5043,7 +4993,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5053,7 +5002,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5288,15 +5236,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.542000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.542000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.987000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.987000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.542000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.987000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -5389,7 +5337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5399,7 +5346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5409,7 +5355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5419,7 +5364,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5641,15 +5585,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.591000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.591000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.054000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.054000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s'; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.591000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.054000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -5742,7 +5686,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5752,7 +5695,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5762,7 +5704,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -5772,7 +5713,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6088,8 +6028,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; ROLLBACK; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.656000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.656000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.126000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.126000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -6099,7 +6039,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; ROLLBACK; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.656000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.126000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -6234,7 +6174,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6244,7 +6183,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6254,7 +6192,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6264,7 +6201,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6607,8 +6543,8 @@ BEGIN TRANSACTION; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.731000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.731000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.209000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.209000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -6618,7 +6554,7 @@ BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.731000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.209000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -6753,7 +6689,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6763,7 +6698,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6773,7 +6707,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -6783,7 +6716,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7023,15 +6955,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.784000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.784000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.323000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.323000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.784000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.323000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -7124,7 +7056,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7134,7 +7065,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7144,7 +7074,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7154,7 +7083,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7394,14 +7322,14 @@ SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.839000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.407000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.839000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.407000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -7506,7 +7434,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7516,7 +7443,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7526,7 +7452,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7536,7 +7461,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7756,13 +7680,13 @@ SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.898000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.473000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; SELECT 1 AS TEST; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.898000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.473000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -7853,7 +7777,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7863,7 +7786,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7873,7 +7795,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -7883,7 +7804,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8075,14 +7995,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.958000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.958000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.565000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.565000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.958000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.565000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=FALSE; @@ -8161,7 +8081,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8171,7 +8090,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8181,7 +8099,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8191,7 +8108,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8392,13 +8308,13 @@ SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.007000000Z'; +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.621000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; START BATCH DDL; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.007000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.621000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; @@ -8489,7 +8405,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8499,7 +8414,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8509,7 +8423,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8519,7 +8432,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8753,8 +8665,8 @@ SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SET TRANSACTION READ ONLY; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.057000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.057000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.678000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.678000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -8762,7 +8674,7 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SET TRANSACTION READ ONLY; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.057000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.678000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; @@ -8869,7 +8781,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8879,7 +8790,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8889,7 +8799,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -8899,7 +8808,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9200,8 +9108,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; UPDATE foo SET bar=1; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -9209,8 +9117,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; UPDATE foo SET bar=1; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -9333,7 +9241,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9343,7 +9250,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9353,7 +9259,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9363,7 +9268,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9596,15 +9500,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.165000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.165000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.812000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.812000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.165000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.812000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; @@ -9697,7 +9601,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9707,7 +9610,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9717,7 +9619,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9727,7 +9628,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -9958,15 +9858,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id); -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -10061,7 +9961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10071,7 +9970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10081,7 +9979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10091,7 +9988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10329,15 +10225,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; UPDATE foo SET bar=1; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; UPDATE foo SET bar=1; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -10432,7 +10328,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10442,7 +10337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10452,7 +10346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10462,7 +10355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10730,16 +10622,16 @@ SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; @EXPECT RESULT_SET 'TEST',1 SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -10848,7 +10740,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10858,7 +10749,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10868,7 +10758,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -10878,7 +10767,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11125,15 +11013,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -11228,7 +11116,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11238,7 +11125,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11248,7 +11134,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11258,7 +11143,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11466,14 +11350,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; SET AUTOCOMMIT=TRUE; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=FALSE; @@ -11554,7 +11438,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11564,7 +11447,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11574,7 +11456,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11584,7 +11465,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11796,15 +11676,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s'; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -11899,7 +11779,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11909,7 +11788,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11919,7 +11797,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -11929,7 +11806,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12211,8 +12087,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -12220,8 +12096,8 @@ SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; SELECT 1 AS TEST; COMMIT; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -12344,7 +12220,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12354,7 +12229,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12364,7 +12238,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12374,7 +12247,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12604,15 +12476,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.565000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.565000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.279000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.279000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; BEGIN TRANSACTION; @EXPECT EXCEPTION FAILED_PRECONDITION -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.565000000Z'; +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.279000000Z'; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; @@ -12705,7 +12577,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12715,7 +12586,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12725,7 +12595,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12735,7 +12604,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -12950,15 +12818,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -13053,7 +12921,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13063,7 +12930,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13073,7 +12939,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13083,7 +12948,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13305,15 +13169,15 @@ NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; SELECT 1 AS TEST; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -13408,7 +13272,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13418,7 +13281,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13428,7 +13290,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13438,7 +13299,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13630,14 +13490,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; -SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z' +SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; SET AUTOCOMMIT=TRUE; -SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z'; -@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z' +SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z'; +@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z' SHOW VARIABLE SPANNER.READ_ONLY_STALENESS; NEW_CONNECTION; SET SPANNER.READONLY=TRUE; @@ -13718,7 +13578,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0s'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13728,7 +13587,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ms'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13738,7 +13596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0us'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; @@ -13748,7 +13605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT; SET STATEMENT_TIMEOUT=DEFAULT; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; -@EXPECT EXCEPTION INVALID_ARGUMENT SET STATEMENT_TIMEOUT='0ns'; @EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0' SHOW VARIABLE STATEMENT_TIMEOUT; diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index 945eda59f56..5621431c4ac 100644 --- a/grpc-google-cloud-spanner-admin-database-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.96.1 grpc-google-cloud-spanner-admin-database-v1 GRPC library for grpc-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index 977f31c1529..82d58977134 100644 --- a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.96.1 grpc-google-cloud-spanner-admin-instance-v1 GRPC library for grpc-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml index 4da1b80ccbe..b09b1065837 100644 --- a/grpc-google-cloud-spanner-executor-v1/pom.xml +++ b/grpc-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.96.1 grpc-google-cloud-spanner-executor-v1 GRPC library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 8d478945b85..a5cf8ba9bbd 100644 --- a/grpc-google-cloud-spanner-v1/pom.xml +++ b/grpc-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.96.1 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/pom.xml b/pom.xml index 064767ba74c..e96d599a8ab 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.92.1-SNAPSHOT + 6.96.1 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.46.2 + 3.50.0 @@ -61,47 +61,47 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.96.1 com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.96.1 @@ -153,7 +153,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.13.0 + 3.14.0 1.8 1.8 @@ -171,7 +171,7 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.8.0 + 3.9.0 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 788d278114f..6d389a502d5 100644 --- a/proto-google-cloud-spanner-admin-database-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.96.1 proto-google-cloud-spanner-admin-database-v1 PROTO library for proto-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequest.java index 17116b490a1..1453b09b37d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequestOrBuilder.java index 81092daf6f0..0e2532e3997 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface AddSplitPointsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponse.java index 2f0dcbe69bd..3017838d91a 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponseOrBuilder.java index bc6192ab7b7..5dc4d4e8ea1 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/AddSplitPointsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface AddSplitPointsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java index d9075635c62..69eef92f093 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Backup.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfo.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfo.java index 0855f7e2abb..6eac977232f 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfo.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfo.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfoOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfoOrBuilder.java index b82d3a70b6f..667998ecc1f 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfoOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInfoOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface BackupInfoOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartition.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartition.java index 09ea5bffeae..921c906e77e 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartition.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartition.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartitionOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartitionOrBuilder.java index 40f426ec757..765ba1a205d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartitionOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupInstancePartitionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface BackupInstancePartitionOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java index 3acae52bdd4..e78e4faa823 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface BackupOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java index 5f04fe540cc..e35aa8f2203 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public final class BackupProto { diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupSchedule.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupSchedule.java index 3f7d889ffca..26b77a85fcc 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupSchedule.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupSchedule.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleOrBuilder.java index c54033e7561..c4536252dc2 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface BackupScheduleOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleProto.java index d7f9cf01b12..30fa19ffa90 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public final class BackupScheduleProto { diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpec.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpec.java index 62156cd5e8a..96a94d9e686 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpec.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpec.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpecOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpecOrBuilder.java index baea3be67b7..f1f06f342e9 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpecOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupScheduleSpecOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface BackupScheduleSpecOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java index 0094fa72738..64a94607588 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CommonProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public final class CommonProto { diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java index 844557b05a8..0e3d2fc147d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfig.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java index 7702858b6d0..5b6f0bbf57a 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupEncryptionConfigOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CopyBackupEncryptionConfigOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java index ee88e7a8275..d7f6d21a8c5 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java index d22ea5a781f..66c364035d2 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CopyBackupMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java index a01d7f4bbba..5bd946cffba 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java index 5e24bc2625d..5e08510aea6 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CopyBackupRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CopyBackupRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfig.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfig.java index 45ee9c0b625..b989586bdc8 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfig.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfig.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfigOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfigOrBuilder.java index ebaa4dace63..eb67bb7bd32 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfigOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupEncryptionConfigOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CreateBackupEncryptionConfigOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadata.java index a3843e34a07..8e959803846 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadataOrBuilder.java index 82671c8a93a..b83db702108 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CreateBackupMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequest.java index 406f799f372..867cf12c3aa 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequestOrBuilder.java index d05dc6b74e8..9a8bee3d8bf 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CreateBackupRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequest.java index 4d0f20eee6e..5a25d1d9325 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequestOrBuilder.java index 86c1241ed31..ec606a94dc4 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateBackupScheduleRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CreateBackupScheduleRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadata.java index 4aedca61dab..4bc29e87fee 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadataOrBuilder.java index 924387a783f..daa3e2603cd 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CreateDatabaseMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequest.java index 0571e3ca61e..aa5a5a664c7 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequestOrBuilder.java index 81e94e4f835..3d8a26f7498 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CreateDatabaseRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CreateDatabaseRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpec.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpec.java index d8ecbb452e5..5706d4d278f 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpec.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpec.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpecOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpecOrBuilder.java index 23e5c0c84d5..cd74356e8dc 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpecOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/CrontabSpecOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface CrontabSpecOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java index da757aff77d..43e7e73038d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseDialect.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseDialect.java index aedf8440fd9..ba3ef78ed50 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseDialect.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseDialect.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java index 00ac47b918f..aa74f263a70 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface DatabaseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRole.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRole.java index c75a6ec1860..29c7b143877 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRole.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRole.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRoleOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRoleOrBuilder.java index 34aae9b9d32..a51b44658a0 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRoleOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseRoleOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface DatabaseRoleOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfo.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfo.java index a565564c2d0..725917699e6 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfo.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfo.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfoOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfoOrBuilder.java index 1e09bb1d50b..fa354dc18c1 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfoOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfoOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface DdlStatementActionInfoOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequest.java index 9abc24b6b66..38934bfd025 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequestOrBuilder.java index 3b6ddb6d95c..f5e662ae800 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface DeleteBackupRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequest.java index c8155b4014b..92318be8ccb 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequestOrBuilder.java index b5f987da856..9ebe50989fc 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DeleteBackupScheduleRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface DeleteBackupScheduleRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequest.java index 8db3e4d918a..0a6cde5bb49 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequestOrBuilder.java index d53e52bd23a..1f7c3fa55a4 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DropDatabaseRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface DropDatabaseRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfig.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfig.java index 0324f718ba8..2d8ee93ffe1 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfig.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfig.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfigOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfigOrBuilder.java index 8f6956a63aa..2ddbddc4d1d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfigOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionConfigOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface EncryptionConfigOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfo.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfo.java index 20d6da04781..71618baa2b1 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfo.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfo.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfoOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfoOrBuilder.java index 4555b55ae97..85e664159e4 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfoOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/EncryptionInfoOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface EncryptionInfoOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpec.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpec.java index 38c9429884b..0f2b7288b25 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpec.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpec.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpecOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpecOrBuilder.java index 5dc8868f74d..870789fc760 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpecOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/FullBackupSpecOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface FullBackupSpecOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequest.java index 6a6d5899afa..e356b59db28 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequestOrBuilder.java index 955e7c27e8f..af6a5338b26 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface GetBackupRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequest.java index f1bad28f1aa..67f280d71b0 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequestOrBuilder.java index ec7a8e1234c..c49489806d0 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetBackupScheduleRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface GetBackupScheduleRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequest.java index 680c3ed5316..c1c558a7f08 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequestOrBuilder.java index e44897d9c2d..53162f5c399 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface GetDatabaseDdlRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponse.java index a4fb8d1cdaa..b37275fed55 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponseOrBuilder.java index 7b67bc03170..59db4c110c8 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseDdlResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface GetDatabaseDdlResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequest.java index 8f7d2971a8e..edd2c2687b1 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequestOrBuilder.java index c3a23738f5d..336357afee9 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/GetDatabaseRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface GetDatabaseRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpec.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpec.java index b5b602c8393..826710a30c4 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpec.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpec.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpecOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpecOrBuilder.java index 5ab8c97baf1..b7b5f7d97ff 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpecOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/IncrementalBackupSpecOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface IncrementalBackupSpecOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java index f295728a920..80bd3355ee2 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java index eb007245e0d..74680ec26fe 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListBackupOperationsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java index e06587f178b..4bfb120108a 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java index 472604df862..2c9f37a6d98 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupOperationsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListBackupOperationsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequest.java index f5735f7d0d8..2e653f536aa 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequestOrBuilder.java index 2774c2b2c5d..d724d484b8a 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListBackupSchedulesRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponse.java index 2c05b2bcb3d..411f9326d81 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponseOrBuilder.java index d6c8eef8495..2cd03274c81 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupSchedulesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListBackupSchedulesResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequest.java index 4cbea0711be..9caa3c1d0bd 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequestOrBuilder.java index fa277412faf..9e4ed9fc194 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListBackupsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponse.java index 2dab3799c1f..6f93e3d43c3 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponseOrBuilder.java index 12d9082f4c8..ad84f12ec96 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListBackupsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListBackupsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java index 42be441a417..c74939b15b3 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java index 2c64f640b1c..7322a1d008c 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListDatabaseOperationsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponse.java index 5dcf9817c5f..81c9702e4d3 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponseOrBuilder.java index 6bcde0c825d..0f76f832092 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseOperationsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListDatabaseOperationsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequest.java index 1ce36f618cd..f68cbcff06c 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequestOrBuilder.java index 15f3dd5b4ac..6207b0eaff7 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListDatabaseRolesRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponse.java index 59a600988cb..f1c0d01fcde 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponseOrBuilder.java index 15bce3bab9f..5de9cd5a326 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabaseRolesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListDatabaseRolesResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequest.java index e8c0d8f07db..e8f5f5bc730 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequestOrBuilder.java index 40f87c21a34..c58f42de608 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListDatabasesRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponse.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponse.java index ff69ca2b978..d529b33f068 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponse.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponseOrBuilder.java index ecfaad3535f..92b4e393d80 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/ListDatabasesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface ListDatabasesResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgress.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgress.java index 79cc34ce04e..28cc66a538e 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgress.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgress.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgressOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgressOrBuilder.java index 7a150b98e9d..94977587a88 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgressOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OperationProgressOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface OperationProgressOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadata.java index d7538b9c07b..1d9902a79be 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadataOrBuilder.java index 5e238c42f0e..a9e20479e9d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/OptimizeRestoredDatabaseMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface OptimizeRestoredDatabaseMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfig.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfig.java index 42b5c9cbb25..1d87fffd6de 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfig.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfig.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfigOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfigOrBuilder.java index c0c038fd57e..f3c8c17ff04 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfigOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseEncryptionConfigOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface RestoreDatabaseEncryptionConfigOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadata.java index 7ed658910ab..cc3db47a2f9 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadataOrBuilder.java index 1b9eeac16cd..cb08525d059 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface RestoreDatabaseMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequest.java index 2f553de96e8..8c6612f3ee9 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequestOrBuilder.java index bca3482e102..31b654e3509 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreDatabaseRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface RestoreDatabaseRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfo.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfo.java index fc31075bd6b..296d924ccd8 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfo.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfo.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfoOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfoOrBuilder.java index 92d4769d3d7..2b61c6b7533 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfoOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreInfoOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface RestoreInfoOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreSourceType.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreSourceType.java index 64c3e3d1163..c619ec7e52c 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreSourceType.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/RestoreSourceType.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java index 2e692633260..520c47553ae 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public final class SpannerDatabaseAdminProto { @@ -149,325 +149,332 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { - "\n" - + "=google/spanner/admin/database/v1/spanner_database_admin.proto\022 google.spanner." + "\n=google/spanner/admin/database/v1/spann" + + "er_database_admin.proto\022 google.spanner." + "admin.database.v1\032\034google/api/annotation" + "s.proto\032\027google/api/client.proto\032\037google" + "/api/field_behavior.proto\032\031google/api/re" + "source.proto\032\036google/iam/v1/iam_policy.p" + "roto\032\032google/iam/v1/policy.proto\032#google" - + "/longrunning/operations.proto\032\033google/protobuf/empty.proto\032" - + " google/protobuf/field_mask.proto\032\034google/protobuf/struct.pro" + + "/longrunning/operations.proto\032\033google/pr" + + "otobuf/empty.proto\032 google/protobuf/fiel" + + "d_mask.proto\032\034google/protobuf/struct.pro" + "to\032\037google/protobuf/timestamp.proto\032-goo" - + "gle/spanner/admin/database/v1/backup.proto\0326google/spanner/admin/database/v1/bac" - + "kup_schedule.proto\032-google/spanner/admin/database/v1/common.proto\"\253\001\n" - + "\013RestoreInfo\022H\n" - + "\013source_type\030\001" - + " \001(\01623.google.spanner.admin.database.v1.RestoreSourceType\022C\n" - + "\013backup_info\030\002" - + " \001(\0132,.google.spanner.admin.database.v1.BackupInfoH\000B\r\n" - + "\013source_info\"\312\006\n" - + "\010Database\022\021\n" - + "\004name\030\001 \001(\tB\003\340A\002\022D\n" - + "\005state\030\002" - + " \001(\01620.google.spanner.admin.database.v1.Database.StateB\003\340A\003\0224\n" - + "\013create_time\030\003 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\022H\n" - + "\014restore_info\030\004" - + " \001(\0132-.google.spanner.admin.database.v1.RestoreInfoB\003\340A\003\022R\n" - + "\021encryption_config\030\005" - + " \001(\01322.google.spanner.admin.database.v1.EncryptionConfigB\003\340A\003\022N\n" - + "\017encryption_info\030\010" - + " \003(\01320.google.spanner.admin.database.v1.EncryptionInfoB\003\340A\003\022%\n" - + "\030version_retention_period\030\006 \001(\tB\003\340A\003\022>\n" - + "\025earliest_version_time\030\007" - + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003\022\033\n" - + "\016default_leader\030\t \001(\tB\003\340A\003\022P\n" - + "\020database_dialect\030\n" - + " \001(\01621.google.spanner.admin.database.v1.DatabaseDialectB\003\340A\003\022\036\n" - + "\026enable_drop_protection\030\013 \001(\010\022\030\n" - + "\013reconciling\030\014 \001(\010B\003\340A\003\"M\n" - + "\005State\022\025\n" - + "\021STATE_UNSPECIFIED\020\000\022\014\n" - + "\010CREATING\020\001\022\t\n" - + "\005READY\020\002\022\024\n" - + "\020READY_OPTIMIZING\020\003:b\352A_\n" - + "\037spanner.googleapis.com/Database\022\332A\006pare" - + "nt\202\323\344\223\002/\022-/v1/{parent=projects/*/instances/*}/databases\022\244\002\n" - + "\016CreateDatabase\0227.google.spanner.admin.database.v1.CreateData" - + "baseRequest\032\035.google.longrunning.Operation\"\271\001\312Ad\n" - + ")google.spanner.admin.database.v1.Database\0227google.spanner.admin.databa" - + "se.v1.CreateDatabaseMetadata\332A\027parent,cr" - + "eate_statement\202\323\344\223\0022\"-/v1/{parent=projects/*/instances/*}/databases:\001*\022\255\001\n" - + "\013GetDatabase\0224.google.spanner.admin.database.v" - + "1.GetDatabaseRequest\032*.google.spanner.ad" - + "min.database.v1.Database\"<\332A\004name\202\323\344\223\002/\022" - + "-/v1/{name=projects/*/instances/*/databases/*}\022\357\001\n" - + "\016UpdateDatabase\0227.google.spann" - + "er.admin.database.v1.UpdateDatabaseRequest\032\035.google.longrunning.Operation\"\204\001\312A\"\n" - + "\010Database\022\026UpdateDatabaseMetadata\332A\024data" - + "base,update_mask\202\323\344\223\002B26/v1/{database.na" - + "me=projects/*/instances/*/databases/*}:\010database\022\235\002\n" - + "\021UpdateDatabaseDdl\022:.google.spanner.admin.database.v1.UpdateDatabase" - + "DdlRequest\032\035.google.longrunning.Operation\"\254\001\312AS\n" - + "\025google.protobuf.Empty\022:google.spanner.admin.database.v1.UpdateDatabaseD" - + "dlMetadata\332A\023database,statements\202\323\344\223\002:25" - + "/v1/{database=projects/*/instances/*/databases/*}/ddl:\001*\022\243\001\n" - + "\014DropDatabase\0225.google.spanner.admin.database.v1.DropDatabas" - + "eRequest\032\026.google.protobuf.Empty\"D\332A\010dat" - + "abase\202\323\344\223\0023*1/v1/{database=projects/*/instances/*/databases/*}\022\315\001\n" - + "\016GetDatabaseDdl\0227.google.spanner.admin.database.v1.Get" - + "DatabaseDdlRequest\0328.google.spanner.admi" - + "n.database.v1.GetDatabaseDdlResponse\"H\332A" - + "\010database\202\323\344\223\0027\0225/v1/{database=projects/*/instances/*/databases/*}/ddl\022\302\002\n" - + "\014SetIamPolicy\022\".google.iam.v1.SetIamPolicyRequ" - + "est\032\025.google.iam.v1.Policy\"\366\001\332A\017resource" - + ",policy\202\323\344\223\002\335\001\">/v1/{resource=projects/*" - + "/instances/*/databases/*}:setIamPolicy:\001*ZA\"/v1/{resource=projects/*/i" - + "nstances/*/databases/*}:getIamPolicy:\001*ZA\".google.spanner.admin.database.v1.ListBa" - + "ckupOperationsResponse\"E\332A\006parent\202\323\344\223\0026\022" - + "4/v1/{parent=projects/*/instances/*}/backupOperations\022\334\001\n" - + "\021ListDatabaseRoles\022:.google.spanner.admin.database.v1.ListDatab" - + "aseRolesRequest\032;.google.spanner.admin.d" - + "atabase.v1.ListDatabaseRolesResponse\"N\332A" - + "\006parent\202\323\344\223\002?\022=/v1/{parent=projects/*/instances/*/databases/*}/databaseRoles\022\350\001\n" - + "\016AddSplitPoints\0227.google.spanner.admin.d" - + "atabase.v1.AddSplitPointsRequest\0328.google.spanner.admin.database.v1.AddSplitPoin" - + "tsResponse\"c\332A\025database,split_points\202\323\344\223" - + "\002E\"@/v1/{database=projects/*/instances/*/databases/*}:addSplitPoints:\001*\022\216\002\n" - + "\024CreateBackupSchedule\022=.google.spanner.admin." - + "database.v1.CreateBackupScheduleRequest\0320.google.spanner.admin.database.v1.Backu" - + "pSchedule\"\204\001\332A)parent,backup_schedule,ba" - + "ckup_schedule_id\202\323\344\223\002R\"?/v1/{parent=proj" - + "ects/*/instances/*/databases/*}/backupSchedules:\017backup_schedule\022\321\001\n" - + "\021GetBackupSchedule\022:.google.spanner.admin.database.v" - + "1.GetBackupScheduleRequest\0320.google.span" - + "ner.admin.database.v1.BackupSchedule\"N\332A" - + "\004name\202\323\344\223\002A\022?/v1/{name=projects/*/instances/*/databases/*/backupSchedules/*}\022\220\002\n" - + "\024UpdateBackupSchedule\022=.google.spanner.admin.database.v1.UpdateBackupScheduleReq" - + "uest\0320.google.spanner.admin.database.v1." - + "BackupSchedule\"\206\001\332A\033backup_schedule,upda" - + "te_mask\202\323\344\223\002b2O/v1/{backup_schedule.name" - + "=projects/*/instances/*/databases/*/backupSchedules/*}:\017backup_schedule\022\275\001\n" - + "\024DeleteBackupSchedule\022=.google.spanner.admin." - + "database.v1.DeleteBackupScheduleRequest\032" - + "\026.google.protobuf.Empty\"N\332A\004name\202\323\344\223\002A*?" - + "/v1/{name=projects/*/instances/*/databases/*/backupSchedules/*}\022\344\001\n" - + "\023ListBackupSchedules\022<.google.spanner.admin.database." - + "v1.ListBackupSchedulesRequest\032=.google.spanner.admin.database.v1.ListBackupSched" - + "ulesResponse\"P\332A\006parent\202\323\344\223\002A\022?/v1/{pare" - + "nt=projects/*/instances/*/databases/*}/b" - + "ackupSchedules\032x\312A\026spanner.googleapis.co" - + "m\322A\\https://www.googleapis.com/auth/clou" - + "d-platform,https://www.googleapis.com/auth/spanner.adminB\326\003\n" - + "$com.google.spanner.admin.database.v1B\031SpannerDatabaseAdminP" - + "rotoP\001ZFcloud.google.com/go/spanner/admi" - + "n/database/apiv1/databasepb;databasepb\252\002" - + "&Google.Cloud.Spanner.Admin.Database.V1\312" - + "\002&Google\\Cloud\\Spanner\\Admin\\Database\\V1" - + "\352\002+Google::Cloud::Spanner::Admin::Database::V1\352AJ\n" - + "\037spanner.googleapis.com/Instan" - + "ce\022\'projects/{project}/instances/{instance}\352A{\n" - + "(spanner.googleapis.com/InstancePartition\022Oprojects/{project}/instances/{" - + "instance}/instancePartitions/{instance_partition}b\006proto3" + + "gle/spanner/admin/database/v1/backup.pro" + + "to\0326google/spanner/admin/database/v1/bac" + + "kup_schedule.proto\032-google/spanner/admin" + + "/database/v1/common.proto\"\253\001\n\013RestoreInf" + + "o\022H\n\013source_type\030\001 \001(\01623.google.spanner." + + "admin.database.v1.RestoreSourceType\022C\n\013b" + + "ackup_info\030\002 \001(\0132,.google.spanner.admin." + + "database.v1.BackupInfoH\000B\r\n\013source_info\"" + + "\312\006\n\010Database\022\021\n\004name\030\001 \001(\tB\003\340A\002\022D\n\005state" + + "\030\002 \001(\01620.google.spanner.admin.database.v" + + "1.Database.StateB\003\340A\003\0224\n\013create_time\030\003 \001" + + "(\0132\032.google.protobuf.TimestampB\003\340A\003\022H\n\014r" + + "estore_info\030\004 \001(\0132-.google.spanner.admin" + + ".database.v1.RestoreInfoB\003\340A\003\022R\n\021encrypt" + + "ion_config\030\005 \001(\01322.google.spanner.admin." + + "database.v1.EncryptionConfigB\003\340A\003\022N\n\017enc" + + "ryption_info\030\010 \003(\01320.google.spanner.admi" + + "n.database.v1.EncryptionInfoB\003\340A\003\022%\n\030ver" + + "sion_retention_period\030\006 \001(\tB\003\340A\003\022>\n\025earl" + + "iest_version_time\030\007 \001(\0132\032.google.protobu" + + "f.TimestampB\003\340A\003\022\033\n\016default_leader\030\t \001(\t" + + "B\003\340A\003\022P\n\020database_dialect\030\n \001(\01621.google" + + ".spanner.admin.database.v1.DatabaseDiale" + + "ctB\003\340A\003\022\036\n\026enable_drop_protection\030\013 \001(\010\022" + + "\030\n\013reconciling\030\014 \001(\010B\003\340A\003\"M\n\005State\022\025\n\021ST" + + "ATE_UNSPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n\005READY" + + "\020\002\022\024\n\020READY_OPTIMIZING\020\003:b\352A_\n\037spanner.g" + + "oogleapis.com/Database\022\332A\006parent\202\323\344\223\002/\022-" + + "/v1/{parent=projects/*/instances/*}/data" + + "bases\022\244\002\n\016CreateDatabase\0227.google.spanne" + + "r.admin.database.v1.CreateDatabaseReques" + + "t\032\035.google.longrunning.Operation\"\271\001\312Ad\n)" + + "google.spanner.admin.database.v1.Databas" + + "e\0227google.spanner.admin.database.v1.Crea" + + "teDatabaseMetadata\332A\027parent,create_state" + + "ment\202\323\344\223\0022\"-/v1/{parent=projects/*/insta" + + "nces/*}/databases:\001*\022\255\001\n\013GetDatabase\0224.g" + + "oogle.spanner.admin.database.v1.GetDatab" + + "aseRequest\032*.google.spanner.admin.databa" + + "se.v1.Database\"<\332A\004name\202\323\344\223\002/\022-/v1/{name" + + "=projects/*/instances/*/databases/*}\022\357\001\n" + + "\016UpdateDatabase\0227.google.spanner.admin.d" + + "atabase.v1.UpdateDatabaseRequest\032\035.googl" + + "e.longrunning.Operation\"\204\001\312A\"\n\010Database\022" + + "\026UpdateDatabaseMetadata\332A\024database,updat" + + "e_mask\202\323\344\223\002B26/v1/{database.name=project" + + "s/*/instances/*/databases/*}:\010database\022\235" + + "\002\n\021UpdateDatabaseDdl\022:.google.spanner.ad" + + "min.database.v1.UpdateDatabaseDdlRequest" + + "\032\035.google.longrunning.Operation\"\254\001\312AS\n\025g" + + "oogle.protobuf.Empty\022:google.spanner.adm" + + "in.database.v1.UpdateDatabaseDdlMetadata" + + "\332A\023database,statements\202\323\344\223\002:25/v1/{datab" + + "ase=projects/*/instances/*/databases/*}/" + + "ddl:\001*\022\243\001\n\014DropDatabase\0225.google.spanner" + + ".admin.database.v1.DropDatabaseRequest\032\026" + + ".google.protobuf.Empty\"D\332A\010database\202\323\344\223\002" + + "3*1/v1/{database=projects/*/instances/*/" + + "databases/*}\022\315\001\n\016GetDatabaseDdl\0227.google" + + ".spanner.admin.database.v1.GetDatabaseDd" + + "lRequest\0328.google.spanner.admin.database" + + ".v1.GetDatabaseDdlResponse\"H\332A\010database\202" + + "\323\344\223\0027\0225/v1/{database=projects/*/instance" + + "s/*/databases/*}/ddl\022\302\002\n\014SetIamPolicy\022\"." + + "google.iam.v1.SetIamPolicyRequest\032\025.goog" + + "le.iam.v1.Policy\"\366\001\332A\017resource,policy\202\323\344" + + "\223\002\335\001\">/v1/{resource=projects/*/instances" + + "/*/databases/*}:setIamPolicy:\001*ZA\"/v1/{resource=projects/*/instances/*" + + "/databases/*}:getIamPolicy:\001*ZA\".google.sp" + + "anner.admin.database.v1.ListBackupOperat" + + "ionsResponse\"E\332A\006parent\202\323\344\223\0026\0224/v1/{pare" + + "nt=projects/*/instances/*}/backupOperati" + + "ons\022\334\001\n\021ListDatabaseRoles\022:.google.spann" + + "er.admin.database.v1.ListDatabaseRolesRe" + + "quest\032;.google.spanner.admin.database.v1" + + ".ListDatabaseRolesResponse\"N\332A\006parent\202\323\344" + + "\223\002?\022=/v1/{parent=projects/*/instances/*/" + + "databases/*}/databaseRoles\022\350\001\n\016AddSplitP" + + "oints\0227.google.spanner.admin.database.v1" + + ".AddSplitPointsRequest\0328.google.spanner." + + "admin.database.v1.AddSplitPointsResponse" + + "\"c\332A\025database,split_points\202\323\344\223\002E\"@/v1/{d" + + "atabase=projects/*/instances/*/databases" + + "/*}:addSplitPoints:\001*\022\216\002\n\024CreateBackupSc" + + "hedule\022=.google.spanner.admin.database.v" + + "1.CreateBackupScheduleRequest\0320.google.s" + + "panner.admin.database.v1.BackupSchedule\"" + + "\204\001\332A)parent,backup_schedule,backup_sched" + + "ule_id\202\323\344\223\002R\"?/v1/{parent=projects/*/ins" + + "tances/*/databases/*}/backupSchedules:\017b" + + "ackup_schedule\022\321\001\n\021GetBackupSchedule\022:.g" + + "oogle.spanner.admin.database.v1.GetBacku" + + "pScheduleRequest\0320.google.spanner.admin." + + "database.v1.BackupSchedule\"N\332A\004name\202\323\344\223\002" + + "A\022?/v1/{name=projects/*/instances/*/data" + + "bases/*/backupSchedules/*}\022\220\002\n\024UpdateBac" + + "kupSchedule\022=.google.spanner.admin.datab" + + "ase.v1.UpdateBackupScheduleRequest\0320.goo" + + "gle.spanner.admin.database.v1.BackupSche" + + "dule\"\206\001\332A\033backup_schedule,update_mask\202\323\344" + + "\223\002b2O/v1/{backup_schedule.name=projects/" + + "*/instances/*/databases/*/backupSchedule" + + "s/*}:\017backup_schedule\022\275\001\n\024DeleteBackupSc" + + "hedule\022=.google.spanner.admin.database.v" + + "1.DeleteBackupScheduleRequest\032\026.google.p" + + "rotobuf.Empty\"N\332A\004name\202\323\344\223\002A*?/v1/{name=" + + "projects/*/instances/*/databases/*/backu" + + "pSchedules/*}\022\344\001\n\023ListBackupSchedules\022<." + + "google.spanner.admin.database.v1.ListBac" + + "kupSchedulesRequest\032=.google.spanner.adm" + + "in.database.v1.ListBackupSchedulesRespon" + + "se\"P\332A\006parent\202\323\344\223\002A\022?/v1/{parent=project" + + "s/*/instances/*/databases/*}/backupSched" + + "ules\032x\312A\026spanner.googleapis.com\322A\\https:" + + "//www.googleapis.com/auth/cloud-platform" + + ",https://www.googleapis.com/auth/spanner" + + ".adminB\326\003\n$com.google.spanner.admin.data" + + "base.v1B\031SpannerDatabaseAdminProtoP\001ZFcl" + + "oud.google.com/go/spanner/admin/database" + + "/apiv1/databasepb;databasepb\252\002&Google.Cl" + + "oud.Spanner.Admin.Database.V1\312\002&Google\\C" + + "loud\\Spanner\\Admin\\Database\\V1\352\002+Google:" + + ":Cloud::Spanner::Admin::Database::V1\352AJ\n" + + "\037spanner.googleapis.com/Instance\022\'projec" + + "ts/{project}/instances/{instance}\352A{\n(sp" + + "anner.googleapis.com/InstancePartition\022O" + + "projects/{project}/instances/{instance}/" + + "instancePartitions/{instance_partition}b" + + "\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -582,7 +589,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor, new java.lang.String[] { - "Database", "Statements", "OperationId", "ProtoDescriptors", + "Database", "Statements", "OperationId", "ProtoDescriptors", "ThroughputMode", }); internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor = getDescriptor().getMessageTypes().get(10); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPoints.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPoints.java index 9eaeabeb904..af43631d85e 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPoints.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPoints.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPointsOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPointsOrBuilder.java index 10dae85b3e9..1fb9b0c0804 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPointsOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SplitPointsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface SplitPointsOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequest.java index 5a9e2a50c2e..e8defee4d7b 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequestOrBuilder.java index 4be76913ca5..e2670913f2c 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface UpdateBackupRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequest.java index fa01b59273b..ad97c05f920 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequestOrBuilder.java index dac9f8993e8..1d75814b571 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateBackupScheduleRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/backup_schedule.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface UpdateBackupScheduleRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadata.java index 2fd35118324..64967052c71 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadataOrBuilder.java index decd391f11e..026273ff43d 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface UpdateDatabaseDdlMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequest.java index b8ff463ee20..b278ec85754 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** @@ -332,6 +332,27 @@ public com.google.protobuf.ByteString getProtoDescriptors() { return protoDescriptors_; } + public static final int THROUGHPUT_MODE_FIELD_NUMBER = 5; + private boolean throughputMode_ = false; + + /** + * + * + *

+   * Optional. This field is exposed to be used by the Spanner Migration Tool.
+   * For more details, see
+   * [SMT](https://github.com/GoogleCloudPlatform/spanner-migration-tool).
+   * 
+ * + * bool throughput_mode = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The throughputMode. + */ + @java.lang.Override + public boolean getThroughputMode() { + return throughputMode_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -358,6 +379,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (!protoDescriptors_.isEmpty()) { output.writeBytes(4, protoDescriptors_); } + if (throughputMode_ != false) { + output.writeBool(5, throughputMode_); + } getUnknownFields().writeTo(output); } @@ -384,6 +408,9 @@ public int getSerializedSize() { if (!protoDescriptors_.isEmpty()) { size += com.google.protobuf.CodedOutputStream.computeBytesSize(4, protoDescriptors_); } + if (throughputMode_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, throughputMode_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -404,6 +431,7 @@ public boolean equals(final java.lang.Object obj) { if (!getStatementsList().equals(other.getStatementsList())) return false; if (!getOperationId().equals(other.getOperationId())) return false; if (!getProtoDescriptors().equals(other.getProtoDescriptors())) return false; + if (getThroughputMode() != other.getThroughputMode()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -425,6 +453,8 @@ public int hashCode() { hash = (53 * hash) + getOperationId().hashCode(); hash = (37 * hash) + PROTO_DESCRIPTORS_FIELD_NUMBER; hash = (53 * hash) + getProtoDescriptors().hashCode(); + hash = (37 * hash) + THROUGHPUT_MODE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getThroughputMode()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -585,6 +615,7 @@ public Builder clear() { statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); operationId_ = ""; protoDescriptors_ = com.google.protobuf.ByteString.EMPTY; + throughputMode_ = false; return this; } @@ -636,6 +667,9 @@ private void buildPartial0( if (((from_bitField0_ & 0x00000008) != 0)) { result.protoDescriptors_ = protoDescriptors_; } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.throughputMode_ = throughputMode_; + } } @java.lang.Override @@ -708,6 +742,9 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.UpdateDatabaseDdlR if (other.getProtoDescriptors() != com.google.protobuf.ByteString.EMPTY) { setProtoDescriptors(other.getProtoDescriptors()); } + if (other.getThroughputMode() != false) { + setThroughputMode(other.getThroughputMode()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -759,6 +796,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000008; break; } // case 34 + case 40: + { + throughputMode_ = input.readBool(); + bitField0_ |= 0x00000010; + break; + } // case 40 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1390,6 +1433,68 @@ public Builder clearProtoDescriptors() { return this; } + private boolean throughputMode_; + + /** + * + * + *
+     * Optional. This field is exposed to be used by the Spanner Migration Tool.
+     * For more details, see
+     * [SMT](https://github.com/GoogleCloudPlatform/spanner-migration-tool).
+     * 
+ * + * bool throughput_mode = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The throughputMode. + */ + @java.lang.Override + public boolean getThroughputMode() { + return throughputMode_; + } + + /** + * + * + *
+     * Optional. This field is exposed to be used by the Spanner Migration Tool.
+     * For more details, see
+     * [SMT](https://github.com/GoogleCloudPlatform/spanner-migration-tool).
+     * 
+ * + * bool throughput_mode = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The throughputMode to set. + * @return This builder for chaining. + */ + public Builder setThroughputMode(boolean value) { + + throughputMode_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + /** + * + * + *
+     * Optional. This field is exposed to be used by the Spanner Migration Tool.
+     * For more details, see
+     * [SMT](https://github.com/GoogleCloudPlatform/spanner-migration-tool).
+     * 
+ * + * bool throughput_mode = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return This builder for chaining. + */ + public Builder clearThroughputMode() { + bitField0_ = (bitField0_ & ~0x00000010); + throughputMode_ = false; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequestOrBuilder.java index 755576518a9..62a9784dac3 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface UpdateDatabaseDdlRequestOrBuilder @@ -199,4 +199,19 @@ public interface UpdateDatabaseDdlRequestOrBuilder * @return The protoDescriptors. */ com.google.protobuf.ByteString getProtoDescriptors(); + + /** + * + * + *
+   * Optional. This field is exposed to be used by the Spanner Migration Tool.
+   * For more details, see
+   * [SMT](https://github.com/GoogleCloudPlatform/spanner-migration-tool).
+   * 
+ * + * bool throughput_mode = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The throughputMode. + */ + boolean getThroughputMode(); } diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java index dfe5c89b81a..827ca8cc45a 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java index 1ec76b93b7f..8b3529821cb 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface UpdateDatabaseMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java index d1cc8095af2..4de08376235 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; /** diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java index 7ee5764ef02..77c5cccf744 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/database/v1/spanner_database_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.database.v1; public interface UpdateDatabaseRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto index 084f98c68b8..36e06f1e1f0 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto @@ -813,6 +813,11 @@ message UpdateDatabaseDdlRequest { // For more details, see protobuffer [self // description](https://developers.google.com/protocol-buffers/docs/techniques#self-description). bytes proto_descriptors = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. This field is exposed to be used by the Spanner Migration Tool. + // For more details, see + // [SMT](https://github.com/GoogleCloudPlatform/spanner-migration-tool). + bool throughput_mode = 5 [(google.api.field_behavior) = OPTIONAL]; } // Action information extracted from a DDL statement. This proto is used to diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index d81fbe63350..5853021dd4b 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.96.1 proto-google-cloud-spanner-admin-instance-v1 PROTO library for proto-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfig.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfig.java index b51244f4769..f7ef3d62bea 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfig.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfig.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfigOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfigOrBuilder.java index 45044b6327d..6a30c6358bf 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfigOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/AutoscalingConfigOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface AutoscalingConfigOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CommonProto.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CommonProto.java index 4da48a791f9..b37c43d36c3 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CommonProto.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CommonProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public final class CommonProto { diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadata.java index 82c7267e230..7ba1fb709d1 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadataOrBuilder.java index e517ff79f9c..00ffeb7f969 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface CreateInstanceConfigMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequest.java index 5bfad4d9065..8f30d13fd2a 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequestOrBuilder.java index a1488d78aa6..b5ce540a4a9 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceConfigRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface CreateInstanceConfigRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadata.java index 917033b290f..ffaf70cef5e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadataOrBuilder.java index 05931135fc4..018bf7119fc 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface CreateInstanceMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadata.java index 4887973e8d9..17964f091ec 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadataOrBuilder.java index 96f1f9d7796..619a8c29b63 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface CreateInstancePartitionMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequest.java index b960bd21d12..7ab20d48dec 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequestOrBuilder.java index 3add3c9a394..1d9205590cc 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstancePartitionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface CreateInstancePartitionRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequest.java index 3ed32b1918f..d51298b695e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequestOrBuilder.java index eeb539336c1..d231faaa988 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/CreateInstanceRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface CreateInstanceRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequest.java index fbdf510d140..656302f146c 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequestOrBuilder.java index 498ec258d4d..b0a4a3cd749 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceConfigRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface DeleteInstanceConfigRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequest.java index e70abad4f49..d7813946bb0 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequestOrBuilder.java index d1045700931..a216d5c1f4e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstancePartitionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface DeleteInstancePartitionRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequest.java index 35366b1cbac..93cc31038f2 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequestOrBuilder.java index 3757791c240..6e1691b101f 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/DeleteInstanceRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface DeleteInstanceRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadata.java index 5442ae2b73f..9560dd4e4bc 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadataOrBuilder.java index 9236723ee3d..a52cc05ff84 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FreeInstanceMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface FreeInstanceMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FulfillmentPeriod.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FulfillmentPeriod.java index e31785472dc..12de15eff75 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FulfillmentPeriod.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/FulfillmentPeriod.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequest.java index 8e99997e4bd..b540913b58c 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequestOrBuilder.java index 043c32fb614..fc95160a7f4 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceConfigRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface GetInstanceConfigRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequest.java index 27e97ac8e85..e0fb7e69a98 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequestOrBuilder.java index 1d0f7b641c0..f6e7063954e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstancePartitionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface GetInstancePartitionRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequest.java index f213cfbc271..6958b721964 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequestOrBuilder.java index 9f89d734841..5b8ea62749a 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/GetInstanceRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface GetInstanceRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/Instance.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/Instance.java index fe2c0c2c7e9..eaaea0c2edf 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/Instance.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/Instance.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfig.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfig.java index a5425733681..0fb7cc5a728 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfig.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfig.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigOrBuilder.java index d9c5dd13c25..ec156f976d3 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface InstanceConfigOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceOrBuilder.java index 9adc1dc14eb..b25a9e682be 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface InstanceOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartition.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartition.java index cc2ffd390c3..a857174da9f 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartition.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartition.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartitionOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartitionOrBuilder.java index 711e70231c1..dbd05fab726 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartitionOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstancePartitionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface InstancePartitionOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequest.java index 185b2f1b5c7..ec88a60681f 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequestOrBuilder.java index 89ce6ff1389..91a387925e7 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstanceConfigOperationsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponse.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponse.java index a11bf16a291..ce1811b23ac 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponse.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponseOrBuilder.java index 83bb7222623..f4a1d483491 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigOperationsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstanceConfigOperationsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequest.java index ce477204130..df5046bf3c6 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequestOrBuilder.java index 0547d73b7c9..adae114c2da 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstanceConfigsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponse.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponse.java index 581d4c07c5c..37193468f1e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponse.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponseOrBuilder.java index 167c35748bb..698ab90b1a3 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstanceConfigsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstanceConfigsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequest.java index c9066c5c524..af8e9f489f2 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequestOrBuilder.java index 3121cf683d2..4d5dc5dcbc0 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstancePartitionOperationsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponse.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponse.java index df4b117555a..06c332ccaac 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponse.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponseOrBuilder.java index 70b22473173..e1b3c36fe91 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionOperationsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstancePartitionOperationsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequest.java index 10baca1825e..4816ca2bcb3 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequestOrBuilder.java index 5adc3e52b25..3a67d56f8d0 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstancePartitionsRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponse.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponse.java index cfb1fa50f1b..5756bd291db 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponse.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponseOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponseOrBuilder.java index 74da44944c7..d1b5ac59ff6 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancePartitionsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstancePartitionsResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequest.java index 8ce1e0347a0..9bf2f97a9a1 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequestOrBuilder.java index 2a9167ae56e..dee5ffd641b 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstancesRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponse.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponse.java index 3a4e1e2f79a..c5d6f72dacd 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponse.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponseOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponseOrBuilder.java index 8f86e551b22..852d176a021 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ListInstancesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ListInstancesResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadata.java index 11323d4f5c9..ee91bf1dab4 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadataOrBuilder.java index de717450414..46fe6784f2f 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface MoveInstanceMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequest.java index e03cd12c5e1..8f5ad280202 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequestOrBuilder.java index 301f5d4dbf3..3be9e40e5da 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface MoveInstanceRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponse.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponse.java index 2d7830868da..cf398f3d4d5 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponse.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponseOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponseOrBuilder.java index bc7c09b6069..42305be5f15 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/MoveInstanceResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface MoveInstanceResponseOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgress.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgress.java index 3512be2f36d..1e152b89e75 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgress.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgress.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgressOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgressOrBuilder.java index 057a8b9ce8d..67d3ef88ca1 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgressOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/OperationProgressOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface OperationProgressOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacity.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacity.java index 2cdc03ab0de..e4f62076b06 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacity.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacity.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacityOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacityOrBuilder.java index 63b403f90cb..6f35b5444d0 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacityOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaComputeCapacityOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ReplicaComputeCapacityOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfo.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfo.java index 336eba64374..e0051917235 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfo.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfo.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** Protobuf type {@code google.spanner.admin.instance.v1.ReplicaInfo} */ diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfoOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfoOrBuilder.java index bd6bbc2bbda..9e35d2fa605 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfoOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaInfoOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ReplicaInfoOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelection.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelection.java index 565db8158e9..85e23446987 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelection.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelection.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelectionOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelectionOrBuilder.java index c239e112a6f..d0320fe79a1 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelectionOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ReplicaSelectionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/common.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface ReplicaSelectionOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/SpannerInstanceAdminProto.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/SpannerInstanceAdminProto.java index 819e313ee32..3b520157582 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/SpannerInstanceAdminProto.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/SpannerInstanceAdminProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public final class SpannerInstanceAdminProto { diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadata.java index 11a80eaba9a..f45b7f98d4c 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadataOrBuilder.java index 8d5fa943b3d..5aa7c91870d 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface UpdateInstanceConfigMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequest.java index c9387b2bd9b..d6318ff2188 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequestOrBuilder.java index 747962c562e..bc4ab730408 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceConfigRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface UpdateInstanceConfigRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadata.java index 3fc7af7050e..03ad3324ab7 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadataOrBuilder.java index 4ed5296d71d..110734a0b0e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface UpdateInstanceMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadata.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadata.java index f691a6a71f9..f2ad76154b3 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadata.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadataOrBuilder.java index 18ff14db9c2..07cfbfa1ded 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface UpdateInstancePartitionMetadataOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequest.java index 942d48a4dfe..b0fec5ca01c 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequestOrBuilder.java index 33be10701e8..c48f9a293f6 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstancePartitionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface UpdateInstancePartitionRequestOrBuilder diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequest.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequest.java index 1b53bc59fc8..fa512344c0e 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequest.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; /** diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequestOrBuilder.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequestOrBuilder.java index bb55f23b55c..8e0f62e01ee 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequestOrBuilder.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/UpdateInstanceRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/admin/instance/v1/spanner_instance_admin.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.admin.instance.v1; public interface UpdateInstanceRequestOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml index 701c635e3ef..b5b75aced4a 100644 --- a/proto-google-cloud-spanner-executor-v1/pom.xml +++ b/proto-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.96.1 proto-google-cloud-spanner-executor-v1 Proto library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminAction.java index c0c4d24acd1..70b15ba5b05 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminActionOrBuilder.java index 050c1a03702..a6275a32ccb 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface AdminActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResult.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResult.java index 1fa75ee199d..372e2183196 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResult.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResultOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResultOrBuilder.java index a0d21eaefa7..265c281020e 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResultOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/AdminResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface AdminResultOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlAction.java index 6f8ce1a2372..d75516554b2 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlActionOrBuilder.java index 533e1486f80..857f300a5ae 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchDmlActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface BatchDmlActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartition.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartition.java index 562a99f47d1..6b0d15358bd 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartition.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartition.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartitionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartitionOrBuilder.java index c3f87ebbc98..f288fc4f94f 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartitionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/BatchPartitionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface BatchPartitionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationAction.java index c2fb727d0d8..404901f3403 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationActionOrBuilder.java index 36f0520b74f..995f8404738 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CancelOperationActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CancelOperationActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseAction.java index 1f859b10069..8705ac750bf 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseActionOrBuilder.java index 3e637ad2b59..c35b3e9f4d5 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeQuorumCloudDatabaseActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ChangeQuorumCloudDatabaseActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecord.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecord.java index a476b1fa2f3..d5217e28584 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecord.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecord.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecordOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecordOrBuilder.java index 7075d45b37e..9ba18c4b90a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecordOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChangeStreamRecordOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ChangeStreamRecordOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecord.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecord.java index 0cbc595a455..72ace8d2693 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecord.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecord.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecordOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecordOrBuilder.java index 12e02afa5b0..6652fb905fb 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecordOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ChildPartitionsRecordOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ChildPartitionsRecordOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionAction.java index 0ac5e839c92..07b704f3c34 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionActionOrBuilder.java index 4d2580be9c3..98e1e5c83a1 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloseBatchTransactionActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CloseBatchTransactionActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponse.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponse.java index 958966dba61..231127db99c 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponse.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponseOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponseOrBuilder.java index f523267e4a6..44496a59a39 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponseOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudBackupResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CloudBackupResponseOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponse.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponse.java index ed55864dce2..b3ccef4d219 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponse.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponseOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponseOrBuilder.java index 754a00cfbf6..5f7f9167e2f 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponseOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudDatabaseResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CloudDatabaseResponseOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudExecutorProto.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudExecutorProto.java index 48baeb187ae..4ba86717ec9 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudExecutorProto.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudExecutorProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public final class CloudExecutorProto { diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponse.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponse.java index 9d91bb5853e..abb273adcab 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponse.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponseOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponseOrBuilder.java index cfc0ac47c94..480225e8156 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponseOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceConfigResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CloudInstanceConfigResponseOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponse.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponse.java index 95dd67c2556..68913513ab1 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponse.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponseOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponseOrBuilder.java index d52170a7bfc..5e9290f1b57 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponseOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CloudInstanceResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CloudInstanceResponseOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadata.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadata.java index 8540c3c0a17..96035abfcf7 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadata.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadataOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadataOrBuilder.java index 0614d74d997..671196dd4b4 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ColumnMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ColumnMetadataOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Concurrency.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Concurrency.java index 48f32c59785..39baf4fdefb 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Concurrency.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Concurrency.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ConcurrencyOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ConcurrencyOrBuilder.java index 3e0e6871301..c7cda46370a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ConcurrencyOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ConcurrencyOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ConcurrencyOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupAction.java index c22383926cf..2af96fbda5e 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupActionOrBuilder.java index 7b010dad47c..bc5edb17136 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CopyCloudBackupActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CopyCloudBackupActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupAction.java index c14b0f19a4b..e9e6c3ccad7 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupActionOrBuilder.java index 02f418f8107..24fe91eb710 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudBackupActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CreateCloudBackupActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseAction.java index df106f62909..c752f7e053b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseActionOrBuilder.java index 10f32fecdb1..140a1dbb555 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudDatabaseActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CreateCloudDatabaseActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceAction.java index 16dca0079f1..3612abbe1b2 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceActionOrBuilder.java index b5faa3960bc..e06922e8f0c 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateCloudInstanceActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CreateCloudInstanceActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigAction.java index fb5421ace0f..5d938161787 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigActionOrBuilder.java index 8c6471567a4..242a1e91ca5 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/CreateUserInstanceConfigActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface CreateUserInstanceConfigActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecord.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecord.java index c8bc8d0f94b..487bab681c0 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecord.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecord.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecordOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecordOrBuilder.java index 1c3196071bb..d1d7ff40a0d 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecordOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DataChangeRecordOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface DataChangeRecordOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupAction.java index 130c9174ca3..c90b3dabb56 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupActionOrBuilder.java index edf8e1edf81..a00d015c9f5 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudBackupActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface DeleteCloudBackupActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceAction.java index f8d4293bf0f..418c2e21aca 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceActionOrBuilder.java index 0045a74d556..9891c64eb93 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteCloudInstanceActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface DeleteCloudInstanceActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigAction.java index 202bd828805..fcf9b626729 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigActionOrBuilder.java index 65c23187397..488dfdf372e 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DeleteUserInstanceConfigActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface DeleteUserInstanceConfigActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlAction.java index 256089e5ead..588432d6ff3 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlActionOrBuilder.java index 9cff7cca3be..b7a5ebfd67f 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DmlActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface DmlActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseAction.java index d40528106be..966185694ce 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseActionOrBuilder.java index 965d0577196..41bc4146276 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/DropCloudDatabaseActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface DropCloudDatabaseActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQuery.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQuery.java index f2a7b184979..f53cfc728c1 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQuery.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQuery.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQueryOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQueryOrBuilder.java index 0ce094ea759..ac70abde36d 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQueryOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecuteChangeStreamQueryOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ExecuteChangeStreamQueryOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionAction.java index 9e75f55c8cc..972799a9267 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionActionOrBuilder.java index 90874e17a3d..e5cddd9f86b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ExecutePartitionActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ExecutePartitionActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionAction.java index b121d3dacc6..8871d325e8a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionActionOrBuilder.java index f8d51847e92..2211a63e1de 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/FinishTransactionActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface FinishTransactionActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryAction.java index 601353bca40..2b39b3dca4b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryActionOrBuilder.java index ebf6048f122..8cf654e3936 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForQueryActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GenerateDbPartitionsForQueryActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadAction.java index a511eba3958..c245448745a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadActionOrBuilder.java index aa0e8c91253..7926a47a12a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GenerateDbPartitionsForReadActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GenerateDbPartitionsForReadActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupAction.java index 076ab4fa1ed..4472731f50a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupActionOrBuilder.java index ea5eb4dcefc..825230d52af 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudBackupActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GetCloudBackupActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseAction.java index 7ab632b848a..97c98098824 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseActionOrBuilder.java index 710b4ef399e..3e7f3e1e41b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudDatabaseActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GetCloudDatabaseActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceAction.java index dfd8bff0fad..032ffa1a2db 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceActionOrBuilder.java index dad44951a9d..d96e778a18b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GetCloudInstanceActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigAction.java index 832aa9a781c..39f9e535e2f 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigActionOrBuilder.java index 3188cbf0d58..40c708917cc 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetCloudInstanceConfigActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GetCloudInstanceConfigActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationAction.java index 74a3dcf6798..d75958b690c 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationActionOrBuilder.java index 06b4eb0842f..4cb0884fa84 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/GetOperationActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface GetOperationActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecord.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecord.java index a39f1ae0732..48dfa25975f 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecord.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecord.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecordOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecordOrBuilder.java index 2c0cb405189..ecf807750d2 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecordOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/HeartbeatRecordOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface HeartbeatRecordOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRange.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRange.java index ad808660c53..100e9f61134 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRange.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRange.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRangeOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRangeOrBuilder.java index 68bbf15ef44..146e86506a0 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRangeOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeyRangeOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface KeyRangeOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySet.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySet.java index 735be798411..d7fb7501ba5 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySet.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySet.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySetOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySetOrBuilder.java index 5e1b0209eb1..606efab3fc8 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySetOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/KeySetOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface KeySetOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsAction.java index f925b31a320..9db292983e4 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsActionOrBuilder.java index 1bf9ea1b10c..ebc2d7f48a4 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupOperationsActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ListCloudBackupOperationsActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsAction.java index 0ec584d487d..c390c5f1f81 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsActionOrBuilder.java index 328f47c6dc4..8c474b05e3d 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudBackupsActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ListCloudBackupsActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsAction.java index f1dbb4953c2..8b78eb77866 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsActionOrBuilder.java index cfcb7920aa0..da6d64705ac 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabaseOperationsActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ListCloudDatabaseOperationsActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesAction.java index a764fbdf057..fa8d5b23f5e 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesActionOrBuilder.java index 4045e945dcc..2822b743a8d 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudDatabasesActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ListCloudDatabasesActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsAction.java index 23fc2f4f399..8aaf4bdb788 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsActionOrBuilder.java index 013035a6b88..999637a43fa 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstanceConfigsActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ListCloudInstanceConfigsActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesAction.java index 7c720886794..c26e682bf71 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesActionOrBuilder.java index 3e5fa36fc57..f16c93ec6d7 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ListCloudInstancesActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ListCloudInstancesActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationAction.java index e19b44a8dd7..36ac9dc1563 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationActionOrBuilder.java index 02ab940e079..5700c3a2812 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/MutationActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface MutationActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponse.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponse.java index 7b0216f8760..1f6a2b03988 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponse.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponseOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponseOrBuilder.java index 33884ce0087..209ede1f53b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponseOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/OperationResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface OperationResponseOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateAction.java index a5ac45f5096..eb41323041f 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateActionOrBuilder.java index 60595858cd6..dba9e84c6b0 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/PartitionedUpdateActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface PartitionedUpdateActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryAction.java index 0b1fe010f95..bf1183f6c37 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryActionOrBuilder.java index 381ec54d832..ed7de173c07 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface QueryActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationAction.java index 5fcca8a450b..d1fd4b5f116 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationActionOrBuilder.java index 381173e5e22..785008751a9 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryCancellationActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface QueryCancellationActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResult.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResult.java index d22b3e0cdf0..94944dec3fe 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResult.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResultOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResultOrBuilder.java index 4fe00cf1e22..7d1a2da8c06 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResultOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/QueryResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface QueryResultOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadAction.java index 7bb8be487ab..16eb9b93ebc 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadActionOrBuilder.java index 5607cda43e3..fcb44b1288c 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ReadActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResult.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResult.java index bc120684b30..199cd8cd3a4 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResult.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResultOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResultOrBuilder.java index eb59b58552e..ef1797108a7 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResultOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ReadResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ReadResultOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseAction.java index 25bb3382336..d544ac5a165 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseActionOrBuilder.java index dd342d929f9..371b9bf0f44 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/RestoreCloudDatabaseActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface RestoreCloudDatabaseActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptions.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptions.java index 9e996979e63..9da651cbf05 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptions.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptionsOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptionsOrBuilder.java index 2d17dc6320b..c9aa6d7835a 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SessionPoolOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface SessionPoolOptionsOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAction.java index 233b4568e73..60103dcc1a3 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOrBuilder.java index 0e10a34ee0a..e7f8192fdfb 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface SpannerActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcome.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcome.java index 12e16254818..b84f0a15f83 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcome.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcome.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcomeOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcomeOrBuilder.java index f8164aa9c67..471f68c4acb 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcomeOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerActionOutcomeOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface SpannerActionOutcomeOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequest.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequest.java index ddd58ab9183..3fe8fb79320 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequest.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequestOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequestOrBuilder.java index 05248fce783..8fde05423de 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface SpannerAsyncActionRequestOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponse.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponse.java index f6fcca767ab..7b9cd2a7911 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponse.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponseOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponseOrBuilder.java index 5bf0b8db493..16863379b57 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponseOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerAsyncActionResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface SpannerAsyncActionResponseOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptions.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptions.java index e0a4d145e73..e1e17854f6b 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptions.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptionsOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptionsOrBuilder.java index 5c6be244eb7..a7a57c31081 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/SpannerOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface SpannerOptionsOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionAction.java index 0961456548c..785f2aaa733 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionActionOrBuilder.java index beada699cbc..2cacfb4a951 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartBatchTransactionActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface StartBatchTransactionActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionAction.java index 5889758becb..1659953e9d0 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionActionOrBuilder.java index 13a57e863da..a6c18a27aa5 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/StartTransactionActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface StartTransactionActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadata.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadata.java index eec81d575a7..cf3b5bab3c3 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadata.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadataOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadataOrBuilder.java index 91e88d202ac..9e0da0c1e8c 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TableMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface TableMetadataOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptions.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptions.java index 851ff6ff285..4c01f542cdd 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptions.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptionsOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptionsOrBuilder.java index c7e8aaafd86..6d221f36997 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/TransactionExecutionOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface TransactionExecutionOptionsOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupAction.java index c8679d773df..b804bf93ad0 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupActionOrBuilder.java index 10b4a15f35c..dd91915f465 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudBackupActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface UpdateCloudBackupActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseAction.java index ccb05fa8be1..eb4e757cf43 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseActionOrBuilder.java index dcbda949888..4698c38fdf9 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface UpdateCloudDatabaseActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlAction.java index 055196d292d..faae053aab0 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlActionOrBuilder.java index e9b417abc29..78cfa76b927 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudDatabaseDdlActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface UpdateCloudDatabaseDdlActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceAction.java index 3b34df486ac..828cfeb3be7 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceActionOrBuilder.java index 78e3ee01ccf..22ed2b52ae9 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateCloudInstanceActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface UpdateCloudInstanceActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigAction.java index ab9be4801bb..dd0c1b4c409 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigActionOrBuilder.java index caa303b039e..722472ad4f6 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/UpdateUserInstanceConfigActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface UpdateUserInstanceConfigActionOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Value.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Value.java index f0cb84393bd..c21e49fad51 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Value.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/Value.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueList.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueList.java index 7e39b856900..5cb290f8712 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueList.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueList.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueListOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueListOrBuilder.java index 05a4bac44c9..f3221a0394e 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueListOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueListOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ValueListOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueOrBuilder.java index b1a13279644..b72837278e1 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/ValueOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface ValueOrBuilder diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsAction.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsAction.java index c219ecead69..cb7caa62506 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsAction.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsAction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; /** diff --git a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsActionOrBuilder.java b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsActionOrBuilder.java index f259cef49bf..9d58c827f99 100644 --- a/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsActionOrBuilder.java +++ b/proto-google-cloud-spanner-executor-v1/src/main/java/com/google/spanner/executor/v1/WriteMutationsActionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/executor/v1/cloud_executor.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.executor.v1; public interface WriteMutationsActionOrBuilder diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 6bdd874682d..9bb62f5e36d 100644 --- a/proto-google-cloud-spanner-v1/pom.xml +++ b/proto-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.96.1 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.96.1 diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java index d8adf7aecbd..6a6c66a6b3a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java index 0461986bb0c..1b0588c32e2 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface BatchCreateSessionsRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java index 5cc1a813102..431db1eaedf 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponseOrBuilder.java index 5c0f138589f..947fcdad699 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface BatchCreateSessionsResponseOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequest.java index 7d51f2e2177..82af100d346 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequestOrBuilder.java index 80cdbc25db3..2da32834318 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface BatchWriteRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponse.java index d7107fc2c2b..39105b6e63c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponseOrBuilder.java index 23f5612c3f4..f0ecaa70743 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchWriteResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface BatchWriteResponseOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java index 6557209a100..7fa457c8552 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java index bb92bff652a..c339d7cc25a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface BeginTransactionRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamProto.java new file mode 100644 index 00000000000..651591b28bd --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamProto.java @@ -0,0 +1,292 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/change_stream.proto + +// Protobuf Java Version: 3.25.8 +package com.google.spanner.v1; + +public final class ChangeStreamProto { + private ChangeStreamProto() {} + + public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {} + + public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry); + } + + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + return descriptor; + } + + private static com.google.protobuf.Descriptors.FileDescriptor descriptor; + + static { + java.lang.String[] descriptorData = { + "\n%google/spanner/v1/change_stream.proto\022" + + "\021google.spanner.v1\032\034google/protobuf/stru" + + "ct.proto\032\037google/protobuf/timestamp.prot" + + "o\032\034google/spanner/v1/type.proto\"\226\024\n\022Chan" + + "geStreamRecord\022T\n\022data_change_record\030\001 \001" + + "(\01326.google.spanner.v1.ChangeStreamRecor" + + "d.DataChangeRecordH\000\022Q\n\020heartbeat_record" + + "\030\002 \001(\01325.google.spanner.v1.ChangeStreamR" + + "ecord.HeartbeatRecordH\000\022\\\n\026partition_sta" + + "rt_record\030\003 \001(\0132:.google.spanner.v1.Chan" + + "geStreamRecord.PartitionStartRecordH\000\022X\n" + + "\024partition_end_record\030\004 \001(\01328.google.spa" + + "nner.v1.ChangeStreamRecord.PartitionEndR" + + "ecordH\000\022\\\n\026partition_event_record\030\005 \001(\0132" + + ":.google.spanner.v1.ChangeStreamRecord.P" + + "artitionEventRecordH\000\032\322\n\n\020DataChangeReco" + + "rd\0224\n\020commit_timestamp\030\001 \001(\0132\032.google.pr" + + "otobuf.Timestamp\022\027\n\017record_sequence\030\002 \001(" + + "\t\022\035\n\025server_transaction_id\030\003 \001(\t\0222\n*is_l" + + "ast_record_in_transaction_in_partition\030\004" + + " \001(\010\022\r\n\005table\030\005 \001(\t\022^\n\017column_metadata\030\006" + + " \003(\0132E.google.spanner.v1.ChangeStreamRec" + + "ord.DataChangeRecord.ColumnMetadata\022H\n\004m" + + "ods\030\007 \003(\0132:.google.spanner.v1.ChangeStre" + + "amRecord.DataChangeRecord.Mod\022P\n\010mod_typ" + + "e\030\010 \001(\0162>.google.spanner.v1.ChangeStream" + + "Record.DataChangeRecord.ModType\022c\n\022value" + + "_capture_type\030\t \001(\0162G.google.spanner.v1." + + "ChangeStreamRecord.DataChangeRecord.Valu" + + "eCaptureType\022(\n number_of_records_in_tra" + + "nsaction\030\n \001(\005\022+\n#number_of_partitions_i" + + "n_transaction\030\013 \001(\005\022\027\n\017transaction_tag\030\014" + + " \001(\t\022\035\n\025is_system_transaction\030\r \001(\010\032w\n\016C" + + "olumnMetadata\022\014\n\004name\030\001 \001(\t\022%\n\004type\030\002 \001(" + + "\0132\027.google.spanner.v1.Type\022\026\n\016is_primary" + + "_key\030\003 \001(\010\022\030\n\020ordinal_position\030\004 \001(\003\032P\n\010" + + "ModValue\022\035\n\025column_metadata_index\030\001 \001(\005\022" + + "%\n\005value\030\002 \001(\0132\026.google.protobuf.Value\032\376" + + "\001\n\003Mod\022M\n\004keys\030\001 \003(\0132?.google.spanner.v1" + + ".ChangeStreamRecord.DataChangeRecord.Mod" + + "Value\022S\n\nold_values\030\002 \003(\0132?.google.spann" + + "er.v1.ChangeStreamRecord.DataChangeRecor" + + "d.ModValue\022S\n\nnew_values\030\003 \003(\0132?.google." + + "spanner.v1.ChangeStreamRecord.DataChange" + + "Record.ModValue\"G\n\007ModType\022\030\n\024MOD_TYPE_U" + + "NSPECIFIED\020\000\022\n\n\006INSERT\020\n\022\n\n\006UPDATE\020\024\022\n\n\006" + + "DELETE\020\036\"\207\001\n\020ValueCaptureType\022\"\n\036VALUE_C" + + "APTURE_TYPE_UNSPECIFIED\020\000\022\026\n\022OLD_AND_NEW" + + "_VALUES\020\n\022\016\n\nNEW_VALUES\020\024\022\013\n\007NEW_ROW\020\036\022\032" + + "\n\026NEW_ROW_AND_OLD_VALUES\020(\032@\n\017HeartbeatR" + + "ecord\022-\n\ttimestamp\030\001 \001(\0132\032.google.protob" + + "uf.Timestamp\032~\n\024PartitionStartRecord\0223\n\017" + + "start_timestamp\030\001 \001(\0132\032.google.protobuf." + + "Timestamp\022\027\n\017record_sequence\030\002 \001(\t\022\030\n\020pa" + + "rtition_tokens\030\003 \003(\t\032y\n\022PartitionEndReco" + + "rd\0221\n\rend_timestamp\030\001 \001(\0132\032.google.proto" + + "buf.Timestamp\022\027\n\017record_sequence\030\002 \001(\t\022\027" + + "\n\017partition_token\030\003 \001(\t\032\244\003\n\024PartitionEve" + + "ntRecord\0224\n\020commit_timestamp\030\001 \001(\0132\032.goo" + + "gle.protobuf.Timestamp\022\027\n\017record_sequenc" + + "e\030\002 \001(\t\022\027\n\017partition_token\030\003 \001(\t\022^\n\016move" + + "_in_events\030\004 \003(\0132F.google.spanner.v1.Cha" + + "ngeStreamRecord.PartitionEventRecord.Mov" + + "eInEvent\022`\n\017move_out_events\030\005 \003(\0132G.goog" + + "le.spanner.v1.ChangeStreamRecord.Partiti" + + "onEventRecord.MoveOutEvent\032-\n\013MoveInEven" + + "t\022\036\n\026source_partition_token\030\001 \001(\t\0323\n\014Mov" + + "eOutEvent\022#\n\033destination_partition_token" + + "\030\001 \001(\tB\010\n\006recordB\264\001\n\025com.google.spanner." + + "v1B\021ChangeStreamProtoP\001Z5cloud.google.co" + + "m/go/spanner/apiv1/spannerpb;spannerpb\252\002" + + "\027Google.Cloud.Spanner.V1\312\002\027Google\\Cloud\\" + + "Spanner\\V1\352\002\032Google::Cloud::Spanner::V1b" + + "\006proto3" + }; + descriptor = + com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( + descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.protobuf.StructProto.getDescriptor(), + com.google.protobuf.TimestampProto.getDescriptor(), + com.google.spanner.v1.TypeProto.getDescriptor(), + }); + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_google_spanner_v1_ChangeStreamRecord_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor, + new java.lang.String[] { + "DataChangeRecord", + "HeartbeatRecord", + "PartitionStartRecord", + "PartitionEndRecord", + "PartitionEventRecord", + "Record", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor.getNestedTypes().get(0); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor, + new java.lang.String[] { + "CommitTimestamp", + "RecordSequence", + "ServerTransactionId", + "IsLastRecordInTransactionInPartition", + "Table", + "ColumnMetadata", + "Mods", + "ModType", + "ValueCaptureType", + "NumberOfRecordsInTransaction", + "NumberOfPartitionsInTransaction", + "TransactionTag", + "IsSystemTransaction", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor + .getNestedTypes() + .get(0); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_descriptor, + new java.lang.String[] { + "Name", "Type", "IsPrimaryKey", "OrdinalPosition", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor + .getNestedTypes() + .get(1); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_descriptor, + new java.lang.String[] { + "ColumnMetadataIndex", "Value", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor + .getNestedTypes() + .get(2); + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_descriptor, + new java.lang.String[] { + "Keys", "OldValues", "NewValues", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor.getNestedTypes().get(1); + internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_descriptor, + new java.lang.String[] { + "Timestamp", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor.getNestedTypes().get(2); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_descriptor, + new java.lang.String[] { + "StartTimestamp", "RecordSequence", "PartitionTokens", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor.getNestedTypes().get(3); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_descriptor, + new java.lang.String[] { + "EndTimestamp", "RecordSequence", "PartitionToken", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_descriptor.getNestedTypes().get(4); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor, + new java.lang.String[] { + "CommitTimestamp", + "RecordSequence", + "PartitionToken", + "MoveInEvents", + "MoveOutEvents", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor + .getNestedTypes() + .get(0); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_descriptor, + new java.lang.String[] { + "SourcePartitionToken", + }); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_descriptor = + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor + .getNestedTypes() + .get(1); + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_descriptor, + new java.lang.String[] { + "DestinationPartitionToken", + }); + com.google.protobuf.StructProto.getDescriptor(); + com.google.protobuf.TimestampProto.getDescriptor(); + com.google.spanner.v1.TypeProto.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamRecord.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamRecord.java new file mode 100644 index 00000000000..e842c7fc79a --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamRecord.java @@ -0,0 +1,21325 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/change_stream.proto + +// Protobuf Java Version: 3.25.8 +package com.google.spanner.v1; + +/** + * + * + *
+ * Spanner Change Streams enable customers to capture and stream out changes to
+ * their Spanner databases in real-time. A change stream
+ * can be created with option partition_mode='IMMUTABLE_KEY_RANGE' or
+ * partition_mode='MUTABLE_KEY_RANGE'.
+ *
+ * This message is only used in Change Streams created with the option
+ * partition_mode='MUTABLE_KEY_RANGE'. Spanner automatically creates a special
+ * Table-Valued Function (TVF) along with each Change Streams. The function
+ * provides access to the change stream's records. The function is named
+ * READ_<change_stream_name> (where <change_stream_name> is the
+ * name of the change stream), and it returns a table with only one column
+ * called ChangeRecord.
+ * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord} + */ +public final class ChangeStreamRecord extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord) + ChangeStreamRecordOrBuilder { + private static final long serialVersionUID = 0L; + + // Use ChangeStreamRecord.newBuilder() to construct. + private ChangeStreamRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ChangeStreamRecord() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ChangeStreamRecord(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.class, + com.google.spanner.v1.ChangeStreamRecord.Builder.class); + } + + public interface DataChangeRecordOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.DataChangeRecord) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * Indicates the timestamp in which the change was committed.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return Whether the commitTimestamp field is set. + */ + boolean hasCommitTimestamp(); + + /** + * + * + *
+     * Indicates the timestamp in which the change was committed.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return The commitTimestamp. + */ + com.google.protobuf.Timestamp getCommitTimestamp(); + + /** + * + * + *
+     * Indicates the timestamp in which the change was committed.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + com.google.protobuf.TimestampOrBuilder getCommitTimestampOrBuilder(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     *
+     * The record sequence number ordering across partitions is only meaningful
+     * in the context of a specific transaction. Record sequence numbers are
+     * unique across partitions for a specific transaction. Sort the
+     * DataChangeRecords for the same
+     * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+     * by
+     * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+     * to reconstruct the ordering of the changes within the transaction.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + java.lang.String getRecordSequence(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     *
+     * The record sequence number ordering across partitions is only meaningful
+     * in the context of a specific transaction. Record sequence numbers are
+     * unique across partitions for a specific transaction. Sort the
+     * DataChangeRecords for the same
+     * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+     * by
+     * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+     * to reconstruct the ordering of the changes within the transaction.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + com.google.protobuf.ByteString getRecordSequenceBytes(); + + /** + * + * + *
+     * Provides a globally unique string that represents the transaction in
+     * which the change was committed. Multiple transactions can have the same
+     * commit timestamp, but each transaction has a unique
+     * server_transaction_id.
+     * 
+ * + * string server_transaction_id = 3; + * + * @return The serverTransactionId. + */ + java.lang.String getServerTransactionId(); + + /** + * + * + *
+     * Provides a globally unique string that represents the transaction in
+     * which the change was committed. Multiple transactions can have the same
+     * commit timestamp, but each transaction has a unique
+     * server_transaction_id.
+     * 
+ * + * string server_transaction_id = 3; + * + * @return The bytes for serverTransactionId. + */ + com.google.protobuf.ByteString getServerTransactionIdBytes(); + + /** + * + * + *
+     * Indicates whether this is the last record for a transaction in the
+     *  current partition. Clients can use this field to determine when all
+     *  records for a transaction in the current partition have been received.
+     * 
+ * + * bool is_last_record_in_transaction_in_partition = 4; + * + * @return The isLastRecordInTransactionInPartition. + */ + boolean getIsLastRecordInTransactionInPartition(); + + /** + * + * + *
+     * Name of the table affected by the change.
+     * 
+ * + * string table = 5; + * + * @return The table. + */ + java.lang.String getTable(); + + /** + * + * + *
+     * Name of the table affected by the change.
+     * 
+ * + * string table = 5; + * + * @return The bytes for table. + */ + com.google.protobuf.ByteString getTableBytes(); + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + java.util.List + getColumnMetadataList(); + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata getColumnMetadata( + int index); + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + int getColumnMetadataCount(); + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder> + getColumnMetadataOrBuilderList(); + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder + getColumnMetadataOrBuilder(int index); + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + java.util.List getModsList(); + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod getMods(int index); + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + int getModsCount(); + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + java.util.List + getModsOrBuilderList(); + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder getModsOrBuilder( + int index); + + /** + * + * + *
+     * Describes the type of change.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return The enum numeric value on the wire for modType. + */ + int getModTypeValue(); + + /** + * + * + *
+     * Describes the type of change.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return The modType. + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType getModType(); + + /** + * + * + *
+     * Describes the value capture type that was specified in the change stream
+     * configuration when this change was captured.
+     * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return The enum numeric value on the wire for valueCaptureType. + */ + int getValueCaptureTypeValue(); + + /** + * + * + *
+     * Describes the value capture type that was specified in the change stream
+     * configuration when this change was captured.
+     * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return The valueCaptureType. + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType + getValueCaptureType(); + + /** + * + * + *
+     * Indicates the number of data change records that are part of this
+     * transaction across all change stream partitions. This value can be used
+     * to assemble all the records associated with a particular transaction.
+     * 
+ * + * int32 number_of_records_in_transaction = 10; + * + * @return The numberOfRecordsInTransaction. + */ + int getNumberOfRecordsInTransaction(); + + /** + * + * + *
+     * Indicates the number of partitions that return data change records for
+     * this transaction. This value can be helpful in assembling all records
+     * associated with a particular transaction.
+     * 
+ * + * int32 number_of_partitions_in_transaction = 11; + * + * @return The numberOfPartitionsInTransaction. + */ + int getNumberOfPartitionsInTransaction(); + + /** + * + * + *
+     * Indicates the transaction tag associated with this transaction.
+     * 
+ * + * string transaction_tag = 12; + * + * @return The transactionTag. + */ + java.lang.String getTransactionTag(); + + /** + * + * + *
+     * Indicates the transaction tag associated with this transaction.
+     * 
+ * + * string transaction_tag = 12; + * + * @return The bytes for transactionTag. + */ + com.google.protobuf.ByteString getTransactionTagBytes(); + + /** + * + * + *
+     * Indicates whether the transaction is a system transaction. System
+     * transactions include those issued by time-to-live (TTL), column backfill,
+     * etc.
+     * 
+ * + * bool is_system_transaction = 13; + * + * @return The isSystemTransaction. + */ + boolean getIsSystemTransaction(); + } + + /** + * + * + *
+   * A data change record contains a set of changes to a table with the same
+   * modification type (insert, update, or delete) committed at the same commit
+   * timestamp in one change stream partition for the same transaction. Multiple
+   * data change records can be returned for the same transaction across
+   * multiple change stream partitions.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord} + */ + public static final class DataChangeRecord extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord) + DataChangeRecordOrBuilder { + private static final long serialVersionUID = 0L; + + // Use DataChangeRecord.newBuilder() to construct. + private DataChangeRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private DataChangeRecord() { + recordSequence_ = ""; + serverTransactionId_ = ""; + table_ = ""; + columnMetadata_ = java.util.Collections.emptyList(); + mods_ = java.util.Collections.emptyList(); + modType_ = 0; + valueCaptureType_ = 0; + transactionTag_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new DataChangeRecord(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder.class); + } + + /** + * + * + *
+     * Mod type describes the type of change Spanner applied to the data. For
+     * example, if the client submits an INSERT_OR_UPDATE request, Spanner will
+     * perform an insert if there is no existing row and return ModType INSERT.
+     * Alternatively, if there is an existing row, Spanner will perform an
+     * update and return ModType UPDATE.
+     * 
+ * + * Protobuf enum {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType} + */ + public enum ModType implements com.google.protobuf.ProtocolMessageEnum { + /** + * + * + *
+       * Not specified.
+       * 
+ * + * MOD_TYPE_UNSPECIFIED = 0; + */ + MOD_TYPE_UNSPECIFIED(0), + /** + * + * + *
+       * Indicates data was inserted.
+       * 
+ * + * INSERT = 10; + */ + INSERT(10), + /** + * + * + *
+       * Indicates existing data was updated.
+       * 
+ * + * UPDATE = 20; + */ + UPDATE(20), + /** + * + * + *
+       * Indicates existing data was deleted.
+       * 
+ * + * DELETE = 30; + */ + DELETE(30), + UNRECOGNIZED(-1), + ; + + /** + * + * + *
+       * Not specified.
+       * 
+ * + * MOD_TYPE_UNSPECIFIED = 0; + */ + public static final int MOD_TYPE_UNSPECIFIED_VALUE = 0; + + /** + * + * + *
+       * Indicates data was inserted.
+       * 
+ * + * INSERT = 10; + */ + public static final int INSERT_VALUE = 10; + + /** + * + * + *
+       * Indicates existing data was updated.
+       * 
+ * + * UPDATE = 20; + */ + public static final int UPDATE_VALUE = 20; + + /** + * + * + *
+       * Indicates existing data was deleted.
+       * 
+ * + * DELETE = 30; + */ + public static final int DELETE_VALUE = 30; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ModType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ModType forNumber(int value) { + switch (value) { + case 0: + return MOD_TYPE_UNSPECIFIED; + case 10: + return INSERT; + case 20: + return UPDATE; + case 30: + return DELETE; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ModType findValueByNumber(int number) { + return ModType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDescriptor() + .getEnumTypes() + .get(0); + } + + private static final ModType[] VALUES = values(); + + public static ModType valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ModType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType) + } + + /** + * + * + *
+     * Value capture type describes which values are recorded in the data
+     * change record.
+     * 
+ * + * Protobuf enum {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType} + */ + public enum ValueCaptureType implements com.google.protobuf.ProtocolMessageEnum { + /** + * + * + *
+       * Not specified.
+       * 
+ * + * VALUE_CAPTURE_TYPE_UNSPECIFIED = 0; + */ + VALUE_CAPTURE_TYPE_UNSPECIFIED(0), + /** + * + * + *
+       * Records both old and new values of the modified watched columns.
+       * 
+ * + * OLD_AND_NEW_VALUES = 10; + */ + OLD_AND_NEW_VALUES(10), + /** + * + * + *
+       * Records only new values of the modified watched columns.
+       * 
+ * + * NEW_VALUES = 20; + */ + NEW_VALUES(20), + /** + * + * + *
+       * Records new values of all watched columns, including modified and
+       * unmodified columns.
+       * 
+ * + * NEW_ROW = 30; + */ + NEW_ROW(30), + /** + * + * + *
+       * Records the new values of all watched columns, including modified and
+       * unmodified columns. Also records the old values of the modified
+       * columns.
+       * 
+ * + * NEW_ROW_AND_OLD_VALUES = 40; + */ + NEW_ROW_AND_OLD_VALUES(40), + UNRECOGNIZED(-1), + ; + + /** + * + * + *
+       * Not specified.
+       * 
+ * + * VALUE_CAPTURE_TYPE_UNSPECIFIED = 0; + */ + public static final int VALUE_CAPTURE_TYPE_UNSPECIFIED_VALUE = 0; + + /** + * + * + *
+       * Records both old and new values of the modified watched columns.
+       * 
+ * + * OLD_AND_NEW_VALUES = 10; + */ + public static final int OLD_AND_NEW_VALUES_VALUE = 10; + + /** + * + * + *
+       * Records only new values of the modified watched columns.
+       * 
+ * + * NEW_VALUES = 20; + */ + public static final int NEW_VALUES_VALUE = 20; + + /** + * + * + *
+       * Records new values of all watched columns, including modified and
+       * unmodified columns.
+       * 
+ * + * NEW_ROW = 30; + */ + public static final int NEW_ROW_VALUE = 30; + + /** + * + * + *
+       * Records the new values of all watched columns, including modified and
+       * unmodified columns. Also records the old values of the modified
+       * columns.
+       * 
+ * + * NEW_ROW_AND_OLD_VALUES = 40; + */ + public static final int NEW_ROW_AND_OLD_VALUES_VALUE = 40; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ValueCaptureType valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ValueCaptureType forNumber(int value) { + switch (value) { + case 0: + return VALUE_CAPTURE_TYPE_UNSPECIFIED; + case 10: + return OLD_AND_NEW_VALUES; + case 20: + return NEW_VALUES; + case 30: + return NEW_ROW; + case 40: + return NEW_ROW_AND_OLD_VALUES; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ValueCaptureType findValueByNumber(int number) { + return ValueCaptureType.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDescriptor() + .getEnumTypes() + .get(1); + } + + private static final ValueCaptureType[] VALUES = values(); + + public static ValueCaptureType valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ValueCaptureType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType) + } + + public interface ColumnMetadataOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * Name of the column.
+       * 
+ * + * string name = 1; + * + * @return The name. + */ + java.lang.String getName(); + + /** + * + * + *
+       * Name of the column.
+       * 
+ * + * string name = 1; + * + * @return The bytes for name. + */ + com.google.protobuf.ByteString getNameBytes(); + + /** + * + * + *
+       * Type of the column.
+       * 
+ * + * .google.spanner.v1.Type type = 2; + * + * @return Whether the type field is set. + */ + boolean hasType(); + + /** + * + * + *
+       * Type of the column.
+       * 
+ * + * .google.spanner.v1.Type type = 2; + * + * @return The type. + */ + com.google.spanner.v1.Type getType(); + + /** + * + * + *
+       * Type of the column.
+       * 
+ * + * .google.spanner.v1.Type type = 2; + */ + com.google.spanner.v1.TypeOrBuilder getTypeOrBuilder(); + + /** + * + * + *
+       * Indicates whether the column is a primary key column.
+       * 
+ * + * bool is_primary_key = 3; + * + * @return The isPrimaryKey. + */ + boolean getIsPrimaryKey(); + + /** + * + * + *
+       * Ordinal position of the column based on the original table definition
+       * in the schema starting with a value of 1.
+       * 
+ * + * int64 ordinal_position = 4; + * + * @return The ordinalPosition. + */ + long getOrdinalPosition(); + } + + /** + * + * + *
+     * Metadata for a column.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata} + */ + public static final class ColumnMetadata extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) + ColumnMetadataOrBuilder { + private static final long serialVersionUID = 0L; + + // Use ColumnMetadata.newBuilder() to construct. + private ColumnMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ColumnMetadata() { + name_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ColumnMetadata(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + .class); + } + + private int bitField0_; + public static final int NAME_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + + /** + * + * + *
+       * Name of the column.
+       * 
+ * + * string name = 1; + * + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + + /** + * + * + *
+       * Name of the column.
+       * 
+ * + * string name = 1; + * + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 2; + private com.google.spanner.v1.Type type_; + + /** + * + * + *
+       * Type of the column.
+       * 
+ * + * .google.spanner.v1.Type type = 2; + * + * @return Whether the type field is set. + */ + @java.lang.Override + public boolean hasType() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * Type of the column.
+       * 
+ * + * .google.spanner.v1.Type type = 2; + * + * @return The type. + */ + @java.lang.Override + public com.google.spanner.v1.Type getType() { + return type_ == null ? com.google.spanner.v1.Type.getDefaultInstance() : type_; + } + + /** + * + * + *
+       * Type of the column.
+       * 
+ * + * .google.spanner.v1.Type type = 2; + */ + @java.lang.Override + public com.google.spanner.v1.TypeOrBuilder getTypeOrBuilder() { + return type_ == null ? com.google.spanner.v1.Type.getDefaultInstance() : type_; + } + + public static final int IS_PRIMARY_KEY_FIELD_NUMBER = 3; + private boolean isPrimaryKey_ = false; + + /** + * + * + *
+       * Indicates whether the column is a primary key column.
+       * 
+ * + * bool is_primary_key = 3; + * + * @return The isPrimaryKey. + */ + @java.lang.Override + public boolean getIsPrimaryKey() { + return isPrimaryKey_; + } + + public static final int ORDINAL_POSITION_FIELD_NUMBER = 4; + private long ordinalPosition_ = 0L; + + /** + * + * + *
+       * Ordinal position of the column based on the original table definition
+       * in the schema starting with a value of 1.
+       * 
+ * + * int64 ordinal_position = 4; + * + * @return The ordinalPosition. + */ + @java.lang.Override + public long getOrdinalPosition() { + return ordinalPosition_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getType()); + } + if (isPrimaryKey_ != false) { + output.writeBool(3, isPrimaryKey_); + } + if (ordinalPosition_ != 0L) { + output.writeInt64(4, ordinalPosition_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getType()); + } + if (isPrimaryKey_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, isPrimaryKey_); + } + if (ordinalPosition_ != 0L) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(4, ordinalPosition_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj + instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata other = + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) obj; + + if (!getName().equals(other.getName())) return false; + if (hasType() != other.hasType()) return false; + if (hasType()) { + if (!getType().equals(other.getType())) return false; + } + if (getIsPrimaryKey() != other.getIsPrimaryKey()) return false; + if (getOrdinalPosition() != other.getOrdinalPosition()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + if (hasType()) { + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + getType().hashCode(); + } + hash = (37 * hash) + IS_PRIMARY_KEY_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIsPrimaryKey()); + hash = (37 * hash) + ORDINAL_POSITION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getOrdinalPosition()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+       * Metadata for a column.
+       * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + .class); + } + + // Construct using + // com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getTypeFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + name_ = ""; + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + isPrimaryKey_ = false; + ordinalPosition_ = 0L; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ColumnMetadata_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + .getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata build() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata result = + buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata result = + new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.type_ = typeBuilder_ == null ? type_ : typeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.isPrimaryKey_ = isPrimaryKey_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.ordinalPosition_ = ordinalPosition_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other + instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) { + return mergeFrom( + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + .getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasType()) { + mergeType(other.getType()); + } + if (other.getIsPrimaryKey() != false) { + setIsPrimaryKey(other.getIsPrimaryKey()); + } + if (other.getOrdinalPosition() != 0L) { + setOrdinalPosition(other.getOrdinalPosition()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getTypeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 24: + { + isPrimaryKey_ = input.readBool(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 32: + { + ordinalPosition_ = input.readInt64(); + bitField0_ |= 0x00000008; + break; + } // case 32 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object name_ = ""; + + /** + * + * + *
+         * Name of the column.
+         * 
+ * + * string name = 1; + * + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+         * Name of the column.
+         * 
+ * + * string name = 1; + * + * @return The bytes for name. + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+         * Name of the column.
+         * 
+ * + * string name = 1; + * + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+         * Name of the column.
+         * 
+ * + * string name = 1; + * + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + * + * + *
+         * Name of the column.
+         * 
+ * + * string name = 1; + * + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private com.google.spanner.v1.Type type_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.Type, + com.google.spanner.v1.Type.Builder, + com.google.spanner.v1.TypeOrBuilder> + typeBuilder_; + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + * + * @return Whether the type field is set. + */ + public boolean hasType() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + * + * @return The type. + */ + public com.google.spanner.v1.Type getType() { + if (typeBuilder_ == null) { + return type_ == null ? com.google.spanner.v1.Type.getDefaultInstance() : type_; + } else { + return typeBuilder_.getMessage(); + } + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + public Builder setType(com.google.spanner.v1.Type value) { + if (typeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + type_ = value; + } else { + typeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + public Builder setType(com.google.spanner.v1.Type.Builder builderForValue) { + if (typeBuilder_ == null) { + type_ = builderForValue.build(); + } else { + typeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + public Builder mergeType(com.google.spanner.v1.Type value) { + if (typeBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && type_ != null + && type_ != com.google.spanner.v1.Type.getDefaultInstance()) { + getTypeBuilder().mergeFrom(value); + } else { + type_ = value; + } + } else { + typeBuilder_.mergeFrom(value); + } + if (type_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000002); + type_ = null; + if (typeBuilder_ != null) { + typeBuilder_.dispose(); + typeBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + public com.google.spanner.v1.Type.Builder getTypeBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getTypeFieldBuilder().getBuilder(); + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + public com.google.spanner.v1.TypeOrBuilder getTypeOrBuilder() { + if (typeBuilder_ != null) { + return typeBuilder_.getMessageOrBuilder(); + } else { + return type_ == null ? com.google.spanner.v1.Type.getDefaultInstance() : type_; + } + } + + /** + * + * + *
+         * Type of the column.
+         * 
+ * + * .google.spanner.v1.Type type = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.Type, + com.google.spanner.v1.Type.Builder, + com.google.spanner.v1.TypeOrBuilder> + getTypeFieldBuilder() { + if (typeBuilder_ == null) { + typeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.Type, + com.google.spanner.v1.Type.Builder, + com.google.spanner.v1.TypeOrBuilder>( + getType(), getParentForChildren(), isClean()); + type_ = null; + } + return typeBuilder_; + } + + private boolean isPrimaryKey_; + + /** + * + * + *
+         * Indicates whether the column is a primary key column.
+         * 
+ * + * bool is_primary_key = 3; + * + * @return The isPrimaryKey. + */ + @java.lang.Override + public boolean getIsPrimaryKey() { + return isPrimaryKey_; + } + + /** + * + * + *
+         * Indicates whether the column is a primary key column.
+         * 
+ * + * bool is_primary_key = 3; + * + * @param value The isPrimaryKey to set. + * @return This builder for chaining. + */ + public Builder setIsPrimaryKey(boolean value) { + + isPrimaryKey_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+         * Indicates whether the column is a primary key column.
+         * 
+ * + * bool is_primary_key = 3; + * + * @return This builder for chaining. + */ + public Builder clearIsPrimaryKey() { + bitField0_ = (bitField0_ & ~0x00000004); + isPrimaryKey_ = false; + onChanged(); + return this; + } + + private long ordinalPosition_; + + /** + * + * + *
+         * Ordinal position of the column based on the original table definition
+         * in the schema starting with a value of 1.
+         * 
+ * + * int64 ordinal_position = 4; + * + * @return The ordinalPosition. + */ + @java.lang.Override + public long getOrdinalPosition() { + return ordinalPosition_; + } + + /** + * + * + *
+         * Ordinal position of the column based on the original table definition
+         * in the schema starting with a value of 1.
+         * 
+ * + * int64 ordinal_position = 4; + * + * @param value The ordinalPosition to set. + * @return This builder for chaining. + */ + public Builder setOrdinalPosition(long value) { + + ordinalPosition_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + /** + * + * + *
+         * Ordinal position of the column based on the original table definition
+         * in the schema starting with a value of 1.
+         * 
+ * + * int64 ordinal_position = 4; + * + * @return This builder for chaining. + */ + public Builder clearOrdinalPosition() { + bitField0_ = (bitField0_ & ~0x00000008); + ordinalPosition_ = 0L; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata) + private static final com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = + new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ColumnMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface ModValueOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * Index within the repeated
+       * [column_metadata][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.column_metadata]
+       * field, to obtain the column metadata for the column that was modified.
+       * 
+ * + * int32 column_metadata_index = 1; + * + * @return The columnMetadataIndex. + */ + int getColumnMetadataIndex(); + + /** + * + * + *
+       * The value of the column.
+       * 
+ * + * .google.protobuf.Value value = 2; + * + * @return Whether the value field is set. + */ + boolean hasValue(); + + /** + * + * + *
+       * The value of the column.
+       * 
+ * + * .google.protobuf.Value value = 2; + * + * @return The value. + */ + com.google.protobuf.Value getValue(); + + /** + * + * + *
+       * The value of the column.
+       * 
+ * + * .google.protobuf.Value value = 2; + */ + com.google.protobuf.ValueOrBuilder getValueOrBuilder(); + } + + /** + * + * + *
+     * Returns the value and associated metadata for a particular field of the
+     * [Mod][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod].
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue} + */ + public static final class ModValue extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) + ModValueOrBuilder { + private static final long serialVersionUID = 0L; + + // Use ModValue.newBuilder() to construct. + private ModValue(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ModValue() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ModValue(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder.class); + } + + private int bitField0_; + public static final int COLUMN_METADATA_INDEX_FIELD_NUMBER = 1; + private int columnMetadataIndex_ = 0; + + /** + * + * + *
+       * Index within the repeated
+       * [column_metadata][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.column_metadata]
+       * field, to obtain the column metadata for the column that was modified.
+       * 
+ * + * int32 column_metadata_index = 1; + * + * @return The columnMetadataIndex. + */ + @java.lang.Override + public int getColumnMetadataIndex() { + return columnMetadataIndex_; + } + + public static final int VALUE_FIELD_NUMBER = 2; + private com.google.protobuf.Value value_; + + /** + * + * + *
+       * The value of the column.
+       * 
+ * + * .google.protobuf.Value value = 2; + * + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * The value of the column.
+       * 
+ * + * .google.protobuf.Value value = 2; + * + * @return The value. + */ + @java.lang.Override + public com.google.protobuf.Value getValue() { + return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_; + } + + /** + * + * + *
+       * The value of the column.
+       * 
+ * + * .google.protobuf.Value value = 2; + */ + @java.lang.Override + public com.google.protobuf.ValueOrBuilder getValueOrBuilder() { + return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (columnMetadataIndex_ != 0) { + output.writeInt32(1, columnMetadataIndex_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getValue()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (columnMetadataIndex_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, columnMetadataIndex_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getValue()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue other = + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) obj; + + if (getColumnMetadataIndex() != other.getColumnMetadataIndex()) return false; + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue().equals(other.getValue())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + COLUMN_METADATA_INDEX_FIELD_NUMBER; + hash = (53 * hash) + getColumnMetadataIndex(); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+       * Returns the value and associated metadata for a particular field of the
+       * [Mod][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod].
+       * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder.class); + } + + // Construct using + // com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getValueFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + columnMetadataIndex_ = 0; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_ModValue_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue build() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue result = + buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue result = + new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.columnMetadataIndex_ = columnMetadataIndex_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.value_ = valueBuilder_ == null ? value_ : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) { + return mergeFrom( + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()) return this; + if (other.getColumnMetadataIndex() != 0) { + setColumnMetadataIndex(other.getColumnMetadataIndex()); + } + if (other.hasValue()) { + mergeValue(other.getValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: + { + columnMetadataIndex_ = input.readInt32(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: + { + input.readMessage(getValueFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private int columnMetadataIndex_; + + /** + * + * + *
+         * Index within the repeated
+         * [column_metadata][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.column_metadata]
+         * field, to obtain the column metadata for the column that was modified.
+         * 
+ * + * int32 column_metadata_index = 1; + * + * @return The columnMetadataIndex. + */ + @java.lang.Override + public int getColumnMetadataIndex() { + return columnMetadataIndex_; + } + + /** + * + * + *
+         * Index within the repeated
+         * [column_metadata][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.column_metadata]
+         * field, to obtain the column metadata for the column that was modified.
+         * 
+ * + * int32 column_metadata_index = 1; + * + * @param value The columnMetadataIndex to set. + * @return This builder for chaining. + */ + public Builder setColumnMetadataIndex(int value) { + + columnMetadataIndex_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+         * Index within the repeated
+         * [column_metadata][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.column_metadata]
+         * field, to obtain the column metadata for the column that was modified.
+         * 
+ * + * int32 column_metadata_index = 1; + * + * @return This builder for chaining. + */ + public Builder clearColumnMetadataIndex() { + bitField0_ = (bitField0_ & ~0x00000001); + columnMetadataIndex_ = 0; + onChanged(); + return this; + } + + private com.google.protobuf.Value value_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Value, + com.google.protobuf.Value.Builder, + com.google.protobuf.ValueOrBuilder> + valueBuilder_; + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + * + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + * + * @return The value. + */ + public com.google.protobuf.Value getValue() { + if (valueBuilder_ == null) { + return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + public Builder setValue(com.google.protobuf.Value value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + public Builder setValue(com.google.protobuf.Value.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + public Builder mergeValue(com.google.protobuf.Value value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && value_ != null + && value_ != com.google.protobuf.Value.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000002); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + public com.google.protobuf.Value.Builder getValueBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getValueFieldBuilder().getBuilder(); + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + public com.google.protobuf.ValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? com.google.protobuf.Value.getDefaultInstance() : value_; + } + } + + /** + * + * + *
+         * The value of the column.
+         * 
+ * + * .google.protobuf.Value value = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Value, + com.google.protobuf.Value.Builder, + com.google.protobuf.ValueOrBuilder> + getValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Value, + com.google.protobuf.Value.Builder, + com.google.protobuf.ValueOrBuilder>( + getValue(), getParentForChildren(), isClean()); + value_ = null; + } + return valueBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue) + private static final com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ModValue parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface ModOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + java.util.List + getKeysList(); + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getKeys(int index); + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + int getKeysCount(); + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getKeysOrBuilderList(); + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder getKeysOrBuilder( + int index); + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + java.util.List + getOldValuesList(); + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getOldValues(int index); + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + int getOldValuesCount(); + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getOldValuesOrBuilderList(); + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getOldValuesOrBuilder(int index); + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + java.util.List + getNewValuesList(); + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getNewValues(int index); + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + int getNewValuesCount(); + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getNewValuesOrBuilderList(); + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getNewValuesOrBuilder(int index); + } + + /** + * + * + *
+     * A mod describes all data changes in a watched table row.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod} + */ + public static final class Mod extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) + ModOrBuilder { + private static final long serialVersionUID = 0L; + + // Use Mod.newBuilder() to construct. + private Mod(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Mod() { + keys_ = java.util.Collections.emptyList(); + oldValues_ = java.util.Collections.emptyList(); + newValues_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new Mod(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder.class); + } + + public static final int KEYS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List + keys_; + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + @java.lang.Override + public java.util.List + getKeysList() { + return keys_; + } + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getKeysOrBuilderList() { + return keys_; + } + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + @java.lang.Override + public int getKeysCount() { + return keys_.size(); + } + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getKeys(int index) { + return keys_.get(index); + } + + /** + * + * + *
+       * Returns the value of the primary key of the modified row.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getKeysOrBuilder(int index) { + return keys_.get(index); + } + + public static final int OLD_VALUES_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private java.util.List + oldValues_; + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + @java.lang.Override + public java.util.List + getOldValuesList() { + return oldValues_; + } + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getOldValuesOrBuilderList() { + return oldValues_; + } + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + @java.lang.Override + public int getOldValuesCount() { + return oldValues_.size(); + } + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getOldValues( + int index) { + return oldValues_.get(index); + } + + /** + * + * + *
+       * Returns the old values before the change for the modified columns.
+       * Always empty for
+       * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+       * or if old values are not being captured specified by
+       * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getOldValuesOrBuilder(int index) { + return oldValues_.get(index); + } + + public static final int NEW_VALUES_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private java.util.List + newValues_; + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + @java.lang.Override + public java.util.List + getNewValuesList() { + return newValues_; + } + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getNewValuesOrBuilderList() { + return newValues_; + } + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + @java.lang.Override + public int getNewValuesCount() { + return newValues_.size(); + } + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getNewValues( + int index) { + return newValues_.get(index); + } + + /** + * + * + *
+       * Returns the new values after the change for the modified columns.
+       * Always empty for
+       * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getNewValuesOrBuilder(int index) { + return newValues_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < keys_.size(); i++) { + output.writeMessage(1, keys_.get(i)); + } + for (int i = 0; i < oldValues_.size(); i++) { + output.writeMessage(2, oldValues_.get(i)); + } + for (int i = 0; i < newValues_.size(); i++) { + output.writeMessage(3, newValues_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < keys_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, keys_.get(i)); + } + for (int i = 0; i < oldValues_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, oldValues_.get(i)); + } + for (int i = 0; i < newValues_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, newValues_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod other = + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) obj; + + if (!getKeysList().equals(other.getKeysList())) return false; + if (!getOldValuesList().equals(other.getOldValuesList())) return false; + if (!getNewValuesList().equals(other.getNewValuesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getKeysCount() > 0) { + hash = (37 * hash) + KEYS_FIELD_NUMBER; + hash = (53 * hash) + getKeysList().hashCode(); + } + if (getOldValuesCount() > 0) { + hash = (37 * hash) + OLD_VALUES_FIELD_NUMBER; + hash = (53 * hash) + getOldValuesList().hashCode(); + } + if (getNewValuesCount() > 0) { + hash = (37 * hash) + NEW_VALUES_FIELD_NUMBER; + hash = (53 * hash) + getNewValuesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod + parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+       * A mod describes all data changes in a watched table row.
+       * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder.class); + } + + // Construct using + // com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (keysBuilder_ == null) { + keys_ = java.util.Collections.emptyList(); + } else { + keys_ = null; + keysBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (oldValuesBuilder_ == null) { + oldValues_ = java.util.Collections.emptyList(); + } else { + oldValues_ = null; + oldValuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + if (newValuesBuilder_ == null) { + newValues_ = java.util.Collections.emptyList(); + } else { + newValues_ = null; + newValuesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_Mod_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod build() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod result = + new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod result) { + if (keysBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + keys_ = java.util.Collections.unmodifiableList(keys_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.keys_ = keys_; + } else { + result.keys_ = keysBuilder_.build(); + } + if (oldValuesBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + oldValues_ = java.util.Collections.unmodifiableList(oldValues_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.oldValues_ = oldValues_; + } else { + result.oldValues_ = oldValuesBuilder_.build(); + } + if (newValuesBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + newValues_ = java.util.Collections.unmodifiableList(newValues_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.newValues_ = newValues_; + } else { + result.newValues_ = newValuesBuilder_.build(); + } + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.getDefaultInstance()) + return this; + if (keysBuilder_ == null) { + if (!other.keys_.isEmpty()) { + if (keys_.isEmpty()) { + keys_ = other.keys_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureKeysIsMutable(); + keys_.addAll(other.keys_); + } + onChanged(); + } + } else { + if (!other.keys_.isEmpty()) { + if (keysBuilder_.isEmpty()) { + keysBuilder_.dispose(); + keysBuilder_ = null; + keys_ = other.keys_; + bitField0_ = (bitField0_ & ~0x00000001); + keysBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getKeysFieldBuilder() + : null; + } else { + keysBuilder_.addAllMessages(other.keys_); + } + } + } + if (oldValuesBuilder_ == null) { + if (!other.oldValues_.isEmpty()) { + if (oldValues_.isEmpty()) { + oldValues_ = other.oldValues_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureOldValuesIsMutable(); + oldValues_.addAll(other.oldValues_); + } + onChanged(); + } + } else { + if (!other.oldValues_.isEmpty()) { + if (oldValuesBuilder_.isEmpty()) { + oldValuesBuilder_.dispose(); + oldValuesBuilder_ = null; + oldValues_ = other.oldValues_; + bitField0_ = (bitField0_ & ~0x00000002); + oldValuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getOldValuesFieldBuilder() + : null; + } else { + oldValuesBuilder_.addAllMessages(other.oldValues_); + } + } + } + if (newValuesBuilder_ == null) { + if (!other.newValues_.isEmpty()) { + if (newValues_.isEmpty()) { + newValues_ = other.newValues_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureNewValuesIsMutable(); + newValues_.addAll(other.newValues_); + } + onChanged(); + } + } else { + if (!other.newValues_.isEmpty()) { + if (newValuesBuilder_.isEmpty()) { + newValuesBuilder_.dispose(); + newValuesBuilder_ = null; + newValues_ = other.newValues_; + bitField0_ = (bitField0_ & ~0x00000004); + newValuesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getNewValuesFieldBuilder() + : null; + } else { + newValuesBuilder_.addAllMessages(other.newValues_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .parser(), + extensionRegistry); + if (keysBuilder_ == null) { + ensureKeysIsMutable(); + keys_.add(m); + } else { + keysBuilder_.addMessage(m); + } + break; + } // case 10 + case 18: + { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .parser(), + extensionRegistry); + if (oldValuesBuilder_ == null) { + ensureOldValuesIsMutable(); + oldValues_.add(m); + } else { + oldValuesBuilder_.addMessage(m); + } + break; + } // case 18 + case 26: + { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .parser(), + extensionRegistry); + if (newValuesBuilder_ == null) { + ensureNewValuesIsMutable(); + newValues_.add(m); + } else { + newValuesBuilder_.addMessage(m); + } + break; + } // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List + keys_ = java.util.Collections.emptyList(); + + private void ensureKeysIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + keys_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue>(keys_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + keysBuilder_; + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public java.util.List + getKeysList() { + if (keysBuilder_ == null) { + return java.util.Collections.unmodifiableList(keys_); + } else { + return keysBuilder_.getMessageList(); + } + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public int getKeysCount() { + if (keysBuilder_ == null) { + return keys_.size(); + } else { + return keysBuilder_.getCount(); + } + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getKeys( + int index) { + if (keysBuilder_ == null) { + return keys_.get(index); + } else { + return keysBuilder_.getMessage(index); + } + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder setKeys( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (keysBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureKeysIsMutable(); + keys_.set(index, value); + onChanged(); + } else { + keysBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder setKeys( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (keysBuilder_ == null) { + ensureKeysIsMutable(); + keys_.set(index, builderForValue.build()); + onChanged(); + } else { + keysBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder addKeys( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (keysBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureKeysIsMutable(); + keys_.add(value); + onChanged(); + } else { + keysBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder addKeys( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (keysBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureKeysIsMutable(); + keys_.add(index, value); + onChanged(); + } else { + keysBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder addKeys( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (keysBuilder_ == null) { + ensureKeysIsMutable(); + keys_.add(builderForValue.build()); + onChanged(); + } else { + keysBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder addKeys( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (keysBuilder_ == null) { + ensureKeysIsMutable(); + keys_.add(index, builderForValue.build()); + onChanged(); + } else { + keysBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder addAllKeys( + java.lang.Iterable< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue> + values) { + if (keysBuilder_ == null) { + ensureKeysIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, keys_); + onChanged(); + } else { + keysBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder clearKeys() { + if (keysBuilder_ == null) { + keys_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + keysBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public Builder removeKeys(int index) { + if (keysBuilder_ == null) { + ensureKeysIsMutable(); + keys_.remove(index); + onChanged(); + } else { + keysBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + getKeysBuilder(int index) { + return getKeysFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getKeysOrBuilder(int index) { + if (keysBuilder_ == null) { + return keys_.get(index); + } else { + return keysBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getKeysOrBuilderList() { + if (keysBuilder_ != null) { + return keysBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(keys_); + } + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + addKeysBuilder() { + return getKeysFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()); + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + addKeysBuilder(int index) { + return getKeysFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()); + } + + /** + * + * + *
+         * Returns the value of the primary key of the modified row.
+         * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue keys = 1; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder> + getKeysBuilderList() { + return getKeysFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getKeysFieldBuilder() { + if (keysBuilder_ == null) { + keysBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder>( + keys_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); + keys_ = null; + } + return keysBuilder_; + } + + private java.util.List + oldValues_ = java.util.Collections.emptyList(); + + private void ensureOldValuesIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + oldValues_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue>(oldValues_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + oldValuesBuilder_; + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public java.util.List + getOldValuesList() { + if (oldValuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(oldValues_); + } else { + return oldValuesBuilder_.getMessageList(); + } + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public int getOldValuesCount() { + if (oldValuesBuilder_ == null) { + return oldValues_.size(); + } else { + return oldValuesBuilder_.getCount(); + } + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getOldValues( + int index) { + if (oldValuesBuilder_ == null) { + return oldValues_.get(index); + } else { + return oldValuesBuilder_.getMessage(index); + } + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder setOldValues( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (oldValuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOldValuesIsMutable(); + oldValues_.set(index, value); + onChanged(); + } else { + oldValuesBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder setOldValues( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (oldValuesBuilder_ == null) { + ensureOldValuesIsMutable(); + oldValues_.set(index, builderForValue.build()); + onChanged(); + } else { + oldValuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder addOldValues( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (oldValuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOldValuesIsMutable(); + oldValues_.add(value); + onChanged(); + } else { + oldValuesBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder addOldValues( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (oldValuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOldValuesIsMutable(); + oldValues_.add(index, value); + onChanged(); + } else { + oldValuesBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder addOldValues( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (oldValuesBuilder_ == null) { + ensureOldValuesIsMutable(); + oldValues_.add(builderForValue.build()); + onChanged(); + } else { + oldValuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder addOldValues( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (oldValuesBuilder_ == null) { + ensureOldValuesIsMutable(); + oldValues_.add(index, builderForValue.build()); + onChanged(); + } else { + oldValuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder addAllOldValues( + java.lang.Iterable< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue> + values) { + if (oldValuesBuilder_ == null) { + ensureOldValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, oldValues_); + onChanged(); + } else { + oldValuesBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder clearOldValues() { + if (oldValuesBuilder_ == null) { + oldValues_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + oldValuesBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public Builder removeOldValues(int index) { + if (oldValuesBuilder_ == null) { + ensureOldValuesIsMutable(); + oldValues_.remove(index); + onChanged(); + } else { + oldValuesBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + getOldValuesBuilder(int index) { + return getOldValuesFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getOldValuesOrBuilder(int index) { + if (oldValuesBuilder_ == null) { + return oldValues_.get(index); + } else { + return oldValuesBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getOldValuesOrBuilderList() { + if (oldValuesBuilder_ != null) { + return oldValuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(oldValues_); + } + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + addOldValuesBuilder() { + return getOldValuesFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()); + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + addOldValuesBuilder(int index) { + return getOldValuesFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()); + } + + /** + * + * + *
+         * Returns the old values before the change for the modified columns.
+         * Always empty for
+         * [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT],
+         * or if old values are not being captured specified by
+         * [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue old_values = 2; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder> + getOldValuesBuilderList() { + return getOldValuesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getOldValuesFieldBuilder() { + if (oldValuesBuilder_ == null) { + oldValuesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder>( + oldValues_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + oldValues_ = null; + } + return oldValuesBuilder_; + } + + private java.util.List + newValues_ = java.util.Collections.emptyList(); + + private void ensureNewValuesIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + newValues_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue>(newValues_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + newValuesBuilder_; + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public java.util.List + getNewValuesList() { + if (newValuesBuilder_ == null) { + return java.util.Collections.unmodifiableList(newValues_); + } else { + return newValuesBuilder_.getMessageList(); + } + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public int getNewValuesCount() { + if (newValuesBuilder_ == null) { + return newValues_.size(); + } else { + return newValuesBuilder_.getCount(); + } + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue getNewValues( + int index) { + if (newValuesBuilder_ == null) { + return newValues_.get(index); + } else { + return newValuesBuilder_.getMessage(index); + } + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder setNewValues( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (newValuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNewValuesIsMutable(); + newValues_.set(index, value); + onChanged(); + } else { + newValuesBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder setNewValues( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (newValuesBuilder_ == null) { + ensureNewValuesIsMutable(); + newValues_.set(index, builderForValue.build()); + onChanged(); + } else { + newValuesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder addNewValues( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (newValuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNewValuesIsMutable(); + newValues_.add(value); + onChanged(); + } else { + newValuesBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder addNewValues( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue value) { + if (newValuesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureNewValuesIsMutable(); + newValues_.add(index, value); + onChanged(); + } else { + newValuesBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder addNewValues( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (newValuesBuilder_ == null) { + ensureNewValuesIsMutable(); + newValues_.add(builderForValue.build()); + onChanged(); + } else { + newValuesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder addNewValues( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + builderForValue) { + if (newValuesBuilder_ == null) { + ensureNewValuesIsMutable(); + newValues_.add(index, builderForValue.build()); + onChanged(); + } else { + newValuesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder addAllNewValues( + java.lang.Iterable< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue> + values) { + if (newValuesBuilder_ == null) { + ensureNewValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, newValues_); + onChanged(); + } else { + newValuesBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder clearNewValues() { + if (newValuesBuilder_ == null) { + newValues_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + newValuesBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public Builder removeNewValues(int index) { + if (newValuesBuilder_ == null) { + ensureNewValuesIsMutable(); + newValues_.remove(index); + onChanged(); + } else { + newValuesBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + getNewValuesBuilder(int index) { + return getNewValuesFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder + getNewValuesOrBuilder(int index) { + if (newValuesBuilder_ == null) { + return newValues_.get(index); + } else { + return newValuesBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getNewValuesOrBuilderList() { + if (newValuesBuilder_ != null) { + return newValuesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(newValues_); + } + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + addNewValuesBuilder() { + return getNewValuesFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()); + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder + addNewValuesBuilder(int index) { + return getNewValuesFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue + .getDefaultInstance()); + } + + /** + * + * + *
+         * Returns the new values after the change for the modified columns.
+         * Always empty for
+         * [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE].
+         * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue new_values = 3; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder> + getNewValuesBuilderList() { + return getNewValuesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder> + getNewValuesFieldBuilder() { + if (newValuesBuilder_ == null) { + newValuesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValue.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModValueOrBuilder>( + newValues_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + newValues_ = null; + } + return newValuesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod) + private static final com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Mod parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + public static final int COMMIT_TIMESTAMP_FIELD_NUMBER = 1; + private com.google.protobuf.Timestamp commitTimestamp_; + + /** + * + * + *
+     * Indicates the timestamp in which the change was committed.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return Whether the commitTimestamp field is set. + */ + @java.lang.Override + public boolean hasCommitTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+     * Indicates the timestamp in which the change was committed.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return The commitTimestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getCommitTimestamp() { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } + + /** + * + * + *
+     * Indicates the timestamp in which the change was committed.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getCommitTimestampOrBuilder() { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } + + public static final int RECORD_SEQUENCE_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     *
+     * The record sequence number ordering across partitions is only meaningful
+     * in the context of a specific transaction. Record sequence numbers are
+     * unique across partitions for a specific transaction. Sort the
+     * DataChangeRecords for the same
+     * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+     * by
+     * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+     * to reconstruct the ordering of the changes within the transaction.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + @java.lang.Override + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } + } + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     *
+     * The record sequence number ordering across partitions is only meaningful
+     * in the context of a specific transaction. Record sequence numbers are
+     * unique across partitions for a specific transaction. Sort the
+     * DataChangeRecords for the same
+     * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+     * by
+     * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+     * to reconstruct the ordering of the changes within the transaction.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + @java.lang.Override + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SERVER_TRANSACTION_ID_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private volatile java.lang.Object serverTransactionId_ = ""; + + /** + * + * + *
+     * Provides a globally unique string that represents the transaction in
+     * which the change was committed. Multiple transactions can have the same
+     * commit timestamp, but each transaction has a unique
+     * server_transaction_id.
+     * 
+ * + * string server_transaction_id = 3; + * + * @return The serverTransactionId. + */ + @java.lang.Override + public java.lang.String getServerTransactionId() { + java.lang.Object ref = serverTransactionId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serverTransactionId_ = s; + return s; + } + } + + /** + * + * + *
+     * Provides a globally unique string that represents the transaction in
+     * which the change was committed. Multiple transactions can have the same
+     * commit timestamp, but each transaction has a unique
+     * server_transaction_id.
+     * 
+ * + * string server_transaction_id = 3; + * + * @return The bytes for serverTransactionId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getServerTransactionIdBytes() { + java.lang.Object ref = serverTransactionId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + serverTransactionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IS_LAST_RECORD_IN_TRANSACTION_IN_PARTITION_FIELD_NUMBER = 4; + private boolean isLastRecordInTransactionInPartition_ = false; + + /** + * + * + *
+     * Indicates whether this is the last record for a transaction in the
+     *  current partition. Clients can use this field to determine when all
+     *  records for a transaction in the current partition have been received.
+     * 
+ * + * bool is_last_record_in_transaction_in_partition = 4; + * + * @return The isLastRecordInTransactionInPartition. + */ + @java.lang.Override + public boolean getIsLastRecordInTransactionInPartition() { + return isLastRecordInTransactionInPartition_; + } + + public static final int TABLE_FIELD_NUMBER = 5; + + @SuppressWarnings("serial") + private volatile java.lang.Object table_ = ""; + + /** + * + * + *
+     * Name of the table affected by the change.
+     * 
+ * + * string table = 5; + * + * @return The table. + */ + @java.lang.Override + public java.lang.String getTable() { + java.lang.Object ref = table_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + table_ = s; + return s; + } + } + + /** + * + * + *
+     * Name of the table affected by the change.
+     * 
+ * + * string table = 5; + * + * @return The bytes for table. + */ + @java.lang.Override + public com.google.protobuf.ByteString getTableBytes() { + java.lang.Object ref = table_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + table_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int COLUMN_METADATA_FIELD_NUMBER = 6; + + @SuppressWarnings("serial") + private java.util.List + columnMetadata_; + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + @java.lang.Override + public java.util.List + getColumnMetadataList() { + return columnMetadata_; + } + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + @java.lang.Override + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder> + getColumnMetadataOrBuilderList() { + return columnMetadata_; + } + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + @java.lang.Override + public int getColumnMetadataCount() { + return columnMetadata_.size(); + } + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + getColumnMetadata(int index) { + return columnMetadata_.get(index); + } + + /** + * + * + *
+     * Provides metadata describing the columns associated with the
+     * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+     * below.
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder + getColumnMetadataOrBuilder(int index) { + return columnMetadata_.get(index); + } + + public static final int MODS_FIELD_NUMBER = 7; + + @SuppressWarnings("serial") + private java.util.List mods_; + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + @java.lang.Override + public java.util.List + getModsList() { + return mods_; + } + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder> + getModsOrBuilderList() { + return mods_; + } + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + @java.lang.Override + public int getModsCount() { + return mods_.size(); + } + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod getMods(int index) { + return mods_.get(index); + } + + /** + * + * + *
+     * Describes the changes that were made.
+     * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder getModsOrBuilder( + int index) { + return mods_.get(index); + } + + public static final int MOD_TYPE_FIELD_NUMBER = 8; + private int modType_ = 0; + + /** + * + * + *
+     * Describes the type of change.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return The enum numeric value on the wire for modType. + */ + @java.lang.Override + public int getModTypeValue() { + return modType_; + } + + /** + * + * + *
+     * Describes the type of change.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return The modType. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType getModType() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType result = + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.forNumber(modType_); + return result == null + ? com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.UNRECOGNIZED + : result; + } + + public static final int VALUE_CAPTURE_TYPE_FIELD_NUMBER = 9; + private int valueCaptureType_ = 0; + + /** + * + * + *
+     * Describes the value capture type that was specified in the change stream
+     * configuration when this change was captured.
+     * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return The enum numeric value on the wire for valueCaptureType. + */ + @java.lang.Override + public int getValueCaptureTypeValue() { + return valueCaptureType_; + } + + /** + * + * + *
+     * Describes the value capture type that was specified in the change stream
+     * configuration when this change was captured.
+     * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return The valueCaptureType. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType + getValueCaptureType() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType result = + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType.forNumber( + valueCaptureType_); + return result == null + ? com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType.UNRECOGNIZED + : result; + } + + public static final int NUMBER_OF_RECORDS_IN_TRANSACTION_FIELD_NUMBER = 10; + private int numberOfRecordsInTransaction_ = 0; + + /** + * + * + *
+     * Indicates the number of data change records that are part of this
+     * transaction across all change stream partitions. This value can be used
+     * to assemble all the records associated with a particular transaction.
+     * 
+ * + * int32 number_of_records_in_transaction = 10; + * + * @return The numberOfRecordsInTransaction. + */ + @java.lang.Override + public int getNumberOfRecordsInTransaction() { + return numberOfRecordsInTransaction_; + } + + public static final int NUMBER_OF_PARTITIONS_IN_TRANSACTION_FIELD_NUMBER = 11; + private int numberOfPartitionsInTransaction_ = 0; + + /** + * + * + *
+     * Indicates the number of partitions that return data change records for
+     * this transaction. This value can be helpful in assembling all records
+     * associated with a particular transaction.
+     * 
+ * + * int32 number_of_partitions_in_transaction = 11; + * + * @return The numberOfPartitionsInTransaction. + */ + @java.lang.Override + public int getNumberOfPartitionsInTransaction() { + return numberOfPartitionsInTransaction_; + } + + public static final int TRANSACTION_TAG_FIELD_NUMBER = 12; + + @SuppressWarnings("serial") + private volatile java.lang.Object transactionTag_ = ""; + + /** + * + * + *
+     * Indicates the transaction tag associated with this transaction.
+     * 
+ * + * string transaction_tag = 12; + * + * @return The transactionTag. + */ + @java.lang.Override + public java.lang.String getTransactionTag() { + java.lang.Object ref = transactionTag_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + transactionTag_ = s; + return s; + } + } + + /** + * + * + *
+     * Indicates the transaction tag associated with this transaction.
+     * 
+ * + * string transaction_tag = 12; + * + * @return The bytes for transactionTag. + */ + @java.lang.Override + public com.google.protobuf.ByteString getTransactionTagBytes() { + java.lang.Object ref = transactionTag_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + transactionTag_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IS_SYSTEM_TRANSACTION_FIELD_NUMBER = 13; + private boolean isSystemTransaction_ = false; + + /** + * + * + *
+     * Indicates whether the transaction is a system transaction. System
+     * transactions include those issued by time-to-live (TTL), column backfill,
+     * etc.
+     * 
+ * + * bool is_system_transaction = 13; + * + * @return The isSystemTransaction. + */ + @java.lang.Override + public boolean getIsSystemTransaction() { + return isSystemTransaction_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getCommitTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, recordSequence_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serverTransactionId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, serverTransactionId_); + } + if (isLastRecordInTransactionInPartition_ != false) { + output.writeBool(4, isLastRecordInTransactionInPartition_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, table_); + } + for (int i = 0; i < columnMetadata_.size(); i++) { + output.writeMessage(6, columnMetadata_.get(i)); + } + for (int i = 0; i < mods_.size(); i++) { + output.writeMessage(7, mods_.get(i)); + } + if (modType_ + != com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.MOD_TYPE_UNSPECIFIED + .getNumber()) { + output.writeEnum(8, modType_); + } + if (valueCaptureType_ + != com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType + .VALUE_CAPTURE_TYPE_UNSPECIFIED + .getNumber()) { + output.writeEnum(9, valueCaptureType_); + } + if (numberOfRecordsInTransaction_ != 0) { + output.writeInt32(10, numberOfRecordsInTransaction_); + } + if (numberOfPartitionsInTransaction_ != 0) { + output.writeInt32(11, numberOfPartitionsInTransaction_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionTag_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 12, transactionTag_); + } + if (isSystemTransaction_ != false) { + output.writeBool(13, isSystemTransaction_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getCommitTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, recordSequence_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serverTransactionId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, serverTransactionId_); + } + if (isLastRecordInTransactionInPartition_ != false) { + size += + com.google.protobuf.CodedOutputStream.computeBoolSize( + 4, isLastRecordInTransactionInPartition_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(table_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, table_); + } + for (int i = 0; i < columnMetadata_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, columnMetadata_.get(i)); + } + for (int i = 0; i < mods_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, mods_.get(i)); + } + if (modType_ + != com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.MOD_TYPE_UNSPECIFIED + .getNumber()) { + size += com.google.protobuf.CodedOutputStream.computeEnumSize(8, modType_); + } + if (valueCaptureType_ + != com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType + .VALUE_CAPTURE_TYPE_UNSPECIFIED + .getNumber()) { + size += com.google.protobuf.CodedOutputStream.computeEnumSize(9, valueCaptureType_); + } + if (numberOfRecordsInTransaction_ != 0) { + size += + com.google.protobuf.CodedOutputStream.computeInt32Size( + 10, numberOfRecordsInTransaction_); + } + if (numberOfPartitionsInTransaction_ != 0) { + size += + com.google.protobuf.CodedOutputStream.computeInt32Size( + 11, numberOfPartitionsInTransaction_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(transactionTag_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, transactionTag_); + } + if (isSystemTransaction_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(13, isSystemTransaction_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord other = + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) obj; + + if (hasCommitTimestamp() != other.hasCommitTimestamp()) return false; + if (hasCommitTimestamp()) { + if (!getCommitTimestamp().equals(other.getCommitTimestamp())) return false; + } + if (!getRecordSequence().equals(other.getRecordSequence())) return false; + if (!getServerTransactionId().equals(other.getServerTransactionId())) return false; + if (getIsLastRecordInTransactionInPartition() + != other.getIsLastRecordInTransactionInPartition()) return false; + if (!getTable().equals(other.getTable())) return false; + if (!getColumnMetadataList().equals(other.getColumnMetadataList())) return false; + if (!getModsList().equals(other.getModsList())) return false; + if (modType_ != other.modType_) return false; + if (valueCaptureType_ != other.valueCaptureType_) return false; + if (getNumberOfRecordsInTransaction() != other.getNumberOfRecordsInTransaction()) + return false; + if (getNumberOfPartitionsInTransaction() != other.getNumberOfPartitionsInTransaction()) + return false; + if (!getTransactionTag().equals(other.getTransactionTag())) return false; + if (getIsSystemTransaction() != other.getIsSystemTransaction()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasCommitTimestamp()) { + hash = (37 * hash) + COMMIT_TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getCommitTimestamp().hashCode(); + } + hash = (37 * hash) + RECORD_SEQUENCE_FIELD_NUMBER; + hash = (53 * hash) + getRecordSequence().hashCode(); + hash = (37 * hash) + SERVER_TRANSACTION_ID_FIELD_NUMBER; + hash = (53 * hash) + getServerTransactionId().hashCode(); + hash = (37 * hash) + IS_LAST_RECORD_IN_TRANSACTION_IN_PARTITION_FIELD_NUMBER; + hash = + (53 * hash) + + com.google.protobuf.Internal.hashBoolean(getIsLastRecordInTransactionInPartition()); + hash = (37 * hash) + TABLE_FIELD_NUMBER; + hash = (53 * hash) + getTable().hashCode(); + if (getColumnMetadataCount() > 0) { + hash = (37 * hash) + COLUMN_METADATA_FIELD_NUMBER; + hash = (53 * hash) + getColumnMetadataList().hashCode(); + } + if (getModsCount() > 0) { + hash = (37 * hash) + MODS_FIELD_NUMBER; + hash = (53 * hash) + getModsList().hashCode(); + } + hash = (37 * hash) + MOD_TYPE_FIELD_NUMBER; + hash = (53 * hash) + modType_; + hash = (37 * hash) + VALUE_CAPTURE_TYPE_FIELD_NUMBER; + hash = (53 * hash) + valueCaptureType_; + hash = (37 * hash) + NUMBER_OF_RECORDS_IN_TRANSACTION_FIELD_NUMBER; + hash = (53 * hash) + getNumberOfRecordsInTransaction(); + hash = (37 * hash) + NUMBER_OF_PARTITIONS_IN_TRANSACTION_FIELD_NUMBER; + hash = (53 * hash) + getNumberOfPartitionsInTransaction(); + hash = (37 * hash) + TRANSACTION_TAG_FIELD_NUMBER; + hash = (53 * hash) + getTransactionTag().hashCode(); + hash = (37 * hash) + IS_SYSTEM_TRANSACTION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIsSystemTransaction()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+     * A data change record contains a set of changes to a table with the same
+     * modification type (insert, update, or delete) committed at the same commit
+     * timestamp in one change stream partition for the same transaction. Multiple
+     * data change records can be returned for the same transaction across
+     * multiple change stream partitions.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.DataChangeRecord} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.DataChangeRecord) + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.class, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder.class); + } + + // Construct using com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getCommitTimestampFieldBuilder(); + getColumnMetadataFieldBuilder(); + getModsFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + commitTimestamp_ = null; + if (commitTimestampBuilder_ != null) { + commitTimestampBuilder_.dispose(); + commitTimestampBuilder_ = null; + } + recordSequence_ = ""; + serverTransactionId_ = ""; + isLastRecordInTransactionInPartition_ = false; + table_ = ""; + if (columnMetadataBuilder_ == null) { + columnMetadata_ = java.util.Collections.emptyList(); + } else { + columnMetadata_ = null; + columnMetadataBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + if (modsBuilder_ == null) { + mods_ = java.util.Collections.emptyList(); + } else { + mods_ = null; + modsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000040); + modType_ = 0; + valueCaptureType_ = 0; + numberOfRecordsInTransaction_ = 0; + numberOfPartitionsInTransaction_ = 0; + transactionTag_ = ""; + isSystemTransaction_ = false; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_DataChangeRecord_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord build() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord result = + new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord result) { + if (columnMetadataBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0)) { + columnMetadata_ = java.util.Collections.unmodifiableList(columnMetadata_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.columnMetadata_ = columnMetadata_; + } else { + result.columnMetadata_ = columnMetadataBuilder_.build(); + } + if (modsBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0)) { + mods_ = java.util.Collections.unmodifiableList(mods_); + bitField0_ = (bitField0_ & ~0x00000040); + } + result.mods_ = mods_; + } else { + result.mods_ = modsBuilder_.build(); + } + } + + private void buildPartial0(com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.commitTimestamp_ = + commitTimestampBuilder_ == null ? commitTimestamp_ : commitTimestampBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.recordSequence_ = recordSequence_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.serverTransactionId_ = serverTransactionId_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.isLastRecordInTransactionInPartition_ = isLastRecordInTransactionInPartition_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.table_ = table_; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.modType_ = modType_; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.valueCaptureType_ = valueCaptureType_; + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.numberOfRecordsInTransaction_ = numberOfRecordsInTransaction_; + } + if (((from_bitField0_ & 0x00000400) != 0)) { + result.numberOfPartitionsInTransaction_ = numberOfPartitionsInTransaction_; + } + if (((from_bitField0_ & 0x00000800) != 0)) { + result.transactionTag_ = transactionTag_; + } + if (((from_bitField0_ & 0x00001000) != 0)) { + result.isSystemTransaction_ = isSystemTransaction_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord other) { + if (other == com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance()) + return this; + if (other.hasCommitTimestamp()) { + mergeCommitTimestamp(other.getCommitTimestamp()); + } + if (!other.getRecordSequence().isEmpty()) { + recordSequence_ = other.recordSequence_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getServerTransactionId().isEmpty()) { + serverTransactionId_ = other.serverTransactionId_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (other.getIsLastRecordInTransactionInPartition() != false) { + setIsLastRecordInTransactionInPartition(other.getIsLastRecordInTransactionInPartition()); + } + if (!other.getTable().isEmpty()) { + table_ = other.table_; + bitField0_ |= 0x00000010; + onChanged(); + } + if (columnMetadataBuilder_ == null) { + if (!other.columnMetadata_.isEmpty()) { + if (columnMetadata_.isEmpty()) { + columnMetadata_ = other.columnMetadata_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureColumnMetadataIsMutable(); + columnMetadata_.addAll(other.columnMetadata_); + } + onChanged(); + } + } else { + if (!other.columnMetadata_.isEmpty()) { + if (columnMetadataBuilder_.isEmpty()) { + columnMetadataBuilder_.dispose(); + columnMetadataBuilder_ = null; + columnMetadata_ = other.columnMetadata_; + bitField0_ = (bitField0_ & ~0x00000020); + columnMetadataBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getColumnMetadataFieldBuilder() + : null; + } else { + columnMetadataBuilder_.addAllMessages(other.columnMetadata_); + } + } + } + if (modsBuilder_ == null) { + if (!other.mods_.isEmpty()) { + if (mods_.isEmpty()) { + mods_ = other.mods_; + bitField0_ = (bitField0_ & ~0x00000040); + } else { + ensureModsIsMutable(); + mods_.addAll(other.mods_); + } + onChanged(); + } + } else { + if (!other.mods_.isEmpty()) { + if (modsBuilder_.isEmpty()) { + modsBuilder_.dispose(); + modsBuilder_ = null; + mods_ = other.mods_; + bitField0_ = (bitField0_ & ~0x00000040); + modsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getModsFieldBuilder() + : null; + } else { + modsBuilder_.addAllMessages(other.mods_); + } + } + } + if (other.modType_ != 0) { + setModTypeValue(other.getModTypeValue()); + } + if (other.valueCaptureType_ != 0) { + setValueCaptureTypeValue(other.getValueCaptureTypeValue()); + } + if (other.getNumberOfRecordsInTransaction() != 0) { + setNumberOfRecordsInTransaction(other.getNumberOfRecordsInTransaction()); + } + if (other.getNumberOfPartitionsInTransaction() != 0) { + setNumberOfPartitionsInTransaction(other.getNumberOfPartitionsInTransaction()); + } + if (!other.getTransactionTag().isEmpty()) { + transactionTag_ = other.transactionTag_; + bitField0_ |= 0x00000800; + onChanged(); + } + if (other.getIsSystemTransaction() != false) { + setIsSystemTransaction(other.getIsSystemTransaction()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage( + getCommitTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + recordSequence_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + serverTransactionId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 32: + { + isLastRecordInTransactionInPartition_ = input.readBool(); + bitField0_ |= 0x00000008; + break; + } // case 32 + case 42: + { + table_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } // case 42 + case 50: + { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + .parser(), + extensionRegistry); + if (columnMetadataBuilder_ == null) { + ensureColumnMetadataIsMutable(); + columnMetadata_.add(m); + } else { + columnMetadataBuilder_.addMessage(m); + } + break; + } // case 50 + case 58: + { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.parser(), + extensionRegistry); + if (modsBuilder_ == null) { + ensureModsIsMutable(); + mods_.add(m); + } else { + modsBuilder_.addMessage(m); + } + break; + } // case 58 + case 64: + { + modType_ = input.readEnum(); + bitField0_ |= 0x00000080; + break; + } // case 64 + case 72: + { + valueCaptureType_ = input.readEnum(); + bitField0_ |= 0x00000100; + break; + } // case 72 + case 80: + { + numberOfRecordsInTransaction_ = input.readInt32(); + bitField0_ |= 0x00000200; + break; + } // case 80 + case 88: + { + numberOfPartitionsInTransaction_ = input.readInt32(); + bitField0_ |= 0x00000400; + break; + } // case 88 + case 98: + { + transactionTag_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000800; + break; + } // case 98 + case 104: + { + isSystemTransaction_ = input.readBool(); + bitField0_ |= 0x00001000; + break; + } // case 104 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.Timestamp commitTimestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + commitTimestampBuilder_; + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return Whether the commitTimestamp field is set. + */ + public boolean hasCommitTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return The commitTimestamp. + */ + public com.google.protobuf.Timestamp getCommitTimestamp() { + if (commitTimestampBuilder_ == null) { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } else { + return commitTimestampBuilder_.getMessage(); + } + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder setCommitTimestamp(com.google.protobuf.Timestamp value) { + if (commitTimestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + commitTimestamp_ = value; + } else { + commitTimestampBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder setCommitTimestamp(com.google.protobuf.Timestamp.Builder builderForValue) { + if (commitTimestampBuilder_ == null) { + commitTimestamp_ = builderForValue.build(); + } else { + commitTimestampBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder mergeCommitTimestamp(com.google.protobuf.Timestamp value) { + if (commitTimestampBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && commitTimestamp_ != null + && commitTimestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getCommitTimestampBuilder().mergeFrom(value); + } else { + commitTimestamp_ = value; + } + } else { + commitTimestampBuilder_.mergeFrom(value); + } + if (commitTimestamp_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder clearCommitTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); + commitTimestamp_ = null; + if (commitTimestampBuilder_ != null) { + commitTimestampBuilder_.dispose(); + commitTimestampBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public com.google.protobuf.Timestamp.Builder getCommitTimestampBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getCommitTimestampFieldBuilder().getBuilder(); + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public com.google.protobuf.TimestampOrBuilder getCommitTimestampOrBuilder() { + if (commitTimestampBuilder_ != null) { + return commitTimestampBuilder_.getMessageOrBuilder(); + } else { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } + } + + /** + * + * + *
+       * Indicates the timestamp in which the change was committed.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getCommitTimestampFieldBuilder() { + if (commitTimestampBuilder_ == null) { + commitTimestampBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getCommitTimestamp(), getParentForChildren(), isClean()); + commitTimestamp_ = null; + } + return commitTimestampBuilder_; + } + + private java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       *
+       * The record sequence number ordering across partitions is only meaningful
+       * in the context of a specific transaction. Record sequence numbers are
+       * unique across partitions for a specific transaction. Sort the
+       * DataChangeRecords for the same
+       * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+       * by
+       * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+       * to reconstruct the ordering of the changes within the transaction.
+       * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       *
+       * The record sequence number ordering across partitions is only meaningful
+       * in the context of a specific transaction. Record sequence numbers are
+       * unique across partitions for a specific transaction. Sort the
+       * DataChangeRecords for the same
+       * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+       * by
+       * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+       * to reconstruct the ordering of the changes within the transaction.
+       * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       *
+       * The record sequence number ordering across partitions is only meaningful
+       * in the context of a specific transaction. Record sequence numbers are
+       * unique across partitions for a specific transaction. Sort the
+       * DataChangeRecords for the same
+       * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+       * by
+       * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+       * to reconstruct the ordering of the changes within the transaction.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequence(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       *
+       * The record sequence number ordering across partitions is only meaningful
+       * in the context of a specific transaction. Record sequence numbers are
+       * unique across partitions for a specific transaction. Sort the
+       * DataChangeRecords for the same
+       * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+       * by
+       * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+       * to reconstruct the ordering of the changes within the transaction.
+       * 
+ * + * string record_sequence = 2; + * + * @return This builder for chaining. + */ + public Builder clearRecordSequence() { + recordSequence_ = getDefaultInstance().getRecordSequence(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       *
+       * The record sequence number ordering across partitions is only meaningful
+       * in the context of a specific transaction. Record sequence numbers are
+       * unique across partitions for a specific transaction. Sort the
+       * DataChangeRecords for the same
+       * [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id]
+       * by
+       * [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence]
+       * to reconstruct the ordering of the changes within the transaction.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The bytes for recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequenceBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object serverTransactionId_ = ""; + + /** + * + * + *
+       * Provides a globally unique string that represents the transaction in
+       * which the change was committed. Multiple transactions can have the same
+       * commit timestamp, but each transaction has a unique
+       * server_transaction_id.
+       * 
+ * + * string server_transaction_id = 3; + * + * @return The serverTransactionId. + */ + public java.lang.String getServerTransactionId() { + java.lang.Object ref = serverTransactionId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serverTransactionId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Provides a globally unique string that represents the transaction in
+       * which the change was committed. Multiple transactions can have the same
+       * commit timestamp, but each transaction has a unique
+       * server_transaction_id.
+       * 
+ * + * string server_transaction_id = 3; + * + * @return The bytes for serverTransactionId. + */ + public com.google.protobuf.ByteString getServerTransactionIdBytes() { + java.lang.Object ref = serverTransactionId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + serverTransactionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Provides a globally unique string that represents the transaction in
+       * which the change was committed. Multiple transactions can have the same
+       * commit timestamp, but each transaction has a unique
+       * server_transaction_id.
+       * 
+ * + * string server_transaction_id = 3; + * + * @param value The serverTransactionId to set. + * @return This builder for chaining. + */ + public Builder setServerTransactionId(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + serverTransactionId_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+       * Provides a globally unique string that represents the transaction in
+       * which the change was committed. Multiple transactions can have the same
+       * commit timestamp, but each transaction has a unique
+       * server_transaction_id.
+       * 
+ * + * string server_transaction_id = 3; + * + * @return This builder for chaining. + */ + public Builder clearServerTransactionId() { + serverTransactionId_ = getDefaultInstance().getServerTransactionId(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + + /** + * + * + *
+       * Provides a globally unique string that represents the transaction in
+       * which the change was committed. Multiple transactions can have the same
+       * commit timestamp, but each transaction has a unique
+       * server_transaction_id.
+       * 
+ * + * string server_transaction_id = 3; + * + * @param value The bytes for serverTransactionId to set. + * @return This builder for chaining. + */ + public Builder setServerTransactionIdBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + serverTransactionId_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private boolean isLastRecordInTransactionInPartition_; + + /** + * + * + *
+       * Indicates whether this is the last record for a transaction in the
+       *  current partition. Clients can use this field to determine when all
+       *  records for a transaction in the current partition have been received.
+       * 
+ * + * bool is_last_record_in_transaction_in_partition = 4; + * + * @return The isLastRecordInTransactionInPartition. + */ + @java.lang.Override + public boolean getIsLastRecordInTransactionInPartition() { + return isLastRecordInTransactionInPartition_; + } + + /** + * + * + *
+       * Indicates whether this is the last record for a transaction in the
+       *  current partition. Clients can use this field to determine when all
+       *  records for a transaction in the current partition have been received.
+       * 
+ * + * bool is_last_record_in_transaction_in_partition = 4; + * + * @param value The isLastRecordInTransactionInPartition to set. + * @return This builder for chaining. + */ + public Builder setIsLastRecordInTransactionInPartition(boolean value) { + + isLastRecordInTransactionInPartition_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates whether this is the last record for a transaction in the
+       *  current partition. Clients can use this field to determine when all
+       *  records for a transaction in the current partition have been received.
+       * 
+ * + * bool is_last_record_in_transaction_in_partition = 4; + * + * @return This builder for chaining. + */ + public Builder clearIsLastRecordInTransactionInPartition() { + bitField0_ = (bitField0_ & ~0x00000008); + isLastRecordInTransactionInPartition_ = false; + onChanged(); + return this; + } + + private java.lang.Object table_ = ""; + + /** + * + * + *
+       * Name of the table affected by the change.
+       * 
+ * + * string table = 5; + * + * @return The table. + */ + public java.lang.String getTable() { + java.lang.Object ref = table_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + table_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Name of the table affected by the change.
+       * 
+ * + * string table = 5; + * + * @return The bytes for table. + */ + public com.google.protobuf.ByteString getTableBytes() { + java.lang.Object ref = table_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + table_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Name of the table affected by the change.
+       * 
+ * + * string table = 5; + * + * @param value The table to set. + * @return This builder for chaining. + */ + public Builder setTable(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + table_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + /** + * + * + *
+       * Name of the table affected by the change.
+       * 
+ * + * string table = 5; + * + * @return This builder for chaining. + */ + public Builder clearTable() { + table_ = getDefaultInstance().getTable(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + + /** + * + * + *
+       * Name of the table affected by the change.
+       * 
+ * + * string table = 5; + * + * @param value The bytes for table to set. + * @return This builder for chaining. + */ + public Builder setTableBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + table_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + private java.util.List< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata> + columnMetadata_ = java.util.Collections.emptyList(); + + private void ensureColumnMetadataIsMutable() { + if (!((bitField0_ & 0x00000020) != 0)) { + columnMetadata_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata>( + columnMetadata_); + bitField0_ |= 0x00000020; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder> + columnMetadataBuilder_; + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata> + getColumnMetadataList() { + if (columnMetadataBuilder_ == null) { + return java.util.Collections.unmodifiableList(columnMetadata_); + } else { + return columnMetadataBuilder_.getMessageList(); + } + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public int getColumnMetadataCount() { + if (columnMetadataBuilder_ == null) { + return columnMetadata_.size(); + } else { + return columnMetadataBuilder_.getCount(); + } + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + getColumnMetadata(int index) { + if (columnMetadataBuilder_ == null) { + return columnMetadata_.get(index); + } else { + return columnMetadataBuilder_.getMessage(index); + } + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder setColumnMetadata( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata value) { + if (columnMetadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnMetadataIsMutable(); + columnMetadata_.set(index, value); + onChanged(); + } else { + columnMetadataBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder setColumnMetadata( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + builderForValue) { + if (columnMetadataBuilder_ == null) { + ensureColumnMetadataIsMutable(); + columnMetadata_.set(index, builderForValue.build()); + onChanged(); + } else { + columnMetadataBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder addColumnMetadata( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata value) { + if (columnMetadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnMetadataIsMutable(); + columnMetadata_.add(value); + onChanged(); + } else { + columnMetadataBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder addColumnMetadata( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata value) { + if (columnMetadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureColumnMetadataIsMutable(); + columnMetadata_.add(index, value); + onChanged(); + } else { + columnMetadataBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder addColumnMetadata( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + builderForValue) { + if (columnMetadataBuilder_ == null) { + ensureColumnMetadataIsMutable(); + columnMetadata_.add(builderForValue.build()); + onChanged(); + } else { + columnMetadataBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder addColumnMetadata( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + builderForValue) { + if (columnMetadataBuilder_ == null) { + ensureColumnMetadataIsMutable(); + columnMetadata_.add(index, builderForValue.build()); + onChanged(); + } else { + columnMetadataBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder addAllColumnMetadata( + java.lang.Iterable< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata> + values) { + if (columnMetadataBuilder_ == null) { + ensureColumnMetadataIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, columnMetadata_); + onChanged(); + } else { + columnMetadataBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder clearColumnMetadata() { + if (columnMetadataBuilder_ == null) { + columnMetadata_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + columnMetadataBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public Builder removeColumnMetadata(int index) { + if (columnMetadataBuilder_ == null) { + ensureColumnMetadataIsMutable(); + columnMetadata_.remove(index); + onChanged(); + } else { + columnMetadataBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + getColumnMetadataBuilder(int index) { + return getColumnMetadataFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder + getColumnMetadataOrBuilder(int index) { + if (columnMetadataBuilder_ == null) { + return columnMetadata_.get(index); + } else { + return columnMetadataBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder> + getColumnMetadataOrBuilderList() { + if (columnMetadataBuilder_ != null) { + return columnMetadataBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(columnMetadata_); + } + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + addColumnMetadataBuilder() { + return getColumnMetadataFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + .getDefaultInstance()); + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder + addColumnMetadataBuilder(int index) { + return getColumnMetadataFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata + .getDefaultInstance()); + } + + /** + * + * + *
+       * Provides metadata describing the columns associated with the
+       * [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed
+       * below.
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata column_metadata = 6; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder> + getColumnMetadataBuilderList() { + return getColumnMetadataFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadataOrBuilder> + getColumnMetadataFieldBuilder() { + if (columnMetadataBuilder_ == null) { + columnMetadataBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ColumnMetadata.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord + .ColumnMetadataOrBuilder>( + columnMetadata_, + ((bitField0_ & 0x00000020) != 0), + getParentForChildren(), + isClean()); + columnMetadata_ = null; + } + return columnMetadataBuilder_; + } + + private java.util.List mods_ = + java.util.Collections.emptyList(); + + private void ensureModsIsMutable() { + if (!((bitField0_ & 0x00000040) != 0)) { + mods_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod>(mods_); + bitField0_ |= 0x00000040; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder> + modsBuilder_; + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public java.util.List + getModsList() { + if (modsBuilder_ == null) { + return java.util.Collections.unmodifiableList(mods_); + } else { + return modsBuilder_.getMessageList(); + } + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public int getModsCount() { + if (modsBuilder_ == null) { + return mods_.size(); + } else { + return modsBuilder_.getCount(); + } + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod getMods(int index) { + if (modsBuilder_ == null) { + return mods_.get(index); + } else { + return modsBuilder_.getMessage(index); + } + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder setMods( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod value) { + if (modsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureModsIsMutable(); + mods_.set(index, value); + onChanged(); + } else { + modsBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder setMods( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder builderForValue) { + if (modsBuilder_ == null) { + ensureModsIsMutable(); + mods_.set(index, builderForValue.build()); + onChanged(); + } else { + modsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder addMods(com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod value) { + if (modsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureModsIsMutable(); + mods_.add(value); + onChanged(); + } else { + modsBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder addMods( + int index, com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod value) { + if (modsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureModsIsMutable(); + mods_.add(index, value); + onChanged(); + } else { + modsBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder addMods( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder builderForValue) { + if (modsBuilder_ == null) { + ensureModsIsMutable(); + mods_.add(builderForValue.build()); + onChanged(); + } else { + modsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder addMods( + int index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder builderForValue) { + if (modsBuilder_ == null) { + ensureModsIsMutable(); + mods_.add(index, builderForValue.build()); + onChanged(); + } else { + modsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder addAllMods( + java.lang.Iterable< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod> + values) { + if (modsBuilder_ == null) { + ensureModsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, mods_); + onChanged(); + } else { + modsBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder clearMods() { + if (modsBuilder_ == null) { + mods_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + } else { + modsBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public Builder removeMods(int index) { + if (modsBuilder_ == null) { + ensureModsIsMutable(); + mods_.remove(index); + onChanged(); + } else { + modsBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder getModsBuilder( + int index) { + return getModsFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder + getModsOrBuilder(int index) { + if (modsBuilder_ == null) { + return mods_.get(index); + } else { + return modsBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public java.util.List< + ? extends com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder> + getModsOrBuilderList() { + if (modsBuilder_ != null) { + return modsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(mods_); + } + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder + addModsBuilder() { + return getModsFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.getDefaultInstance()); + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder addModsBuilder( + int index) { + return getModsFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.getDefaultInstance()); + } + + /** + * + * + *
+       * Describes the changes that were made.
+       * 
+ * + * repeated .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod mods = 7; + */ + public java.util.List + getModsBuilderList() { + return getModsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder> + getModsFieldBuilder() { + if (modsBuilder_ == null) { + modsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModOrBuilder>( + mods_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean()); + mods_ = null; + } + return modsBuilder_; + } + + private int modType_ = 0; + + /** + * + * + *
+       * Describes the type of change.
+       * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return The enum numeric value on the wire for modType. + */ + @java.lang.Override + public int getModTypeValue() { + return modType_; + } + + /** + * + * + *
+       * Describes the type of change.
+       * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @param value The enum numeric value on the wire for modType to set. + * @return This builder for chaining. + */ + public Builder setModTypeValue(int value) { + modType_ = value; + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + + /** + * + * + *
+       * Describes the type of change.
+       * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return The modType. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType getModType() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType result = + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.forNumber(modType_); + return result == null + ? com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.UNRECOGNIZED + : result; + } + + /** + * + * + *
+       * Describes the type of change.
+       * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @param value The modType to set. + * @return This builder for chaining. + */ + public Builder setModType( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000080; + modType_ = value.getNumber(); + onChanged(); + return this; + } + + /** + * + * + *
+       * Describes the type of change.
+       * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType mod_type = 8; + * + * @return This builder for chaining. + */ + public Builder clearModType() { + bitField0_ = (bitField0_ & ~0x00000080); + modType_ = 0; + onChanged(); + return this; + } + + private int valueCaptureType_ = 0; + + /** + * + * + *
+       * Describes the value capture type that was specified in the change stream
+       * configuration when this change was captured.
+       * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return The enum numeric value on the wire for valueCaptureType. + */ + @java.lang.Override + public int getValueCaptureTypeValue() { + return valueCaptureType_; + } + + /** + * + * + *
+       * Describes the value capture type that was specified in the change stream
+       * configuration when this change was captured.
+       * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @param value The enum numeric value on the wire for valueCaptureType to set. + * @return This builder for chaining. + */ + public Builder setValueCaptureTypeValue(int value) { + valueCaptureType_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + + /** + * + * + *
+       * Describes the value capture type that was specified in the change stream
+       * configuration when this change was captured.
+       * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return The valueCaptureType. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType + getValueCaptureType() { + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType result = + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType.forNumber( + valueCaptureType_); + return result == null + ? com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType + .UNRECOGNIZED + : result; + } + + /** + * + * + *
+       * Describes the value capture type that was specified in the change stream
+       * configuration when this change was captured.
+       * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @param value The valueCaptureType to set. + * @return This builder for chaining. + */ + public Builder setValueCaptureType( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000100; + valueCaptureType_ = value.getNumber(); + onChanged(); + return this; + } + + /** + * + * + *
+       * Describes the value capture type that was specified in the change stream
+       * configuration when this change was captured.
+       * 
+ * + * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType value_capture_type = 9; + * + * + * @return This builder for chaining. + */ + public Builder clearValueCaptureType() { + bitField0_ = (bitField0_ & ~0x00000100); + valueCaptureType_ = 0; + onChanged(); + return this; + } + + private int numberOfRecordsInTransaction_; + + /** + * + * + *
+       * Indicates the number of data change records that are part of this
+       * transaction across all change stream partitions. This value can be used
+       * to assemble all the records associated with a particular transaction.
+       * 
+ * + * int32 number_of_records_in_transaction = 10; + * + * @return The numberOfRecordsInTransaction. + */ + @java.lang.Override + public int getNumberOfRecordsInTransaction() { + return numberOfRecordsInTransaction_; + } + + /** + * + * + *
+       * Indicates the number of data change records that are part of this
+       * transaction across all change stream partitions. This value can be used
+       * to assemble all the records associated with a particular transaction.
+       * 
+ * + * int32 number_of_records_in_transaction = 10; + * + * @param value The numberOfRecordsInTransaction to set. + * @return This builder for chaining. + */ + public Builder setNumberOfRecordsInTransaction(int value) { + + numberOfRecordsInTransaction_ = value; + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the number of data change records that are part of this
+       * transaction across all change stream partitions. This value can be used
+       * to assemble all the records associated with a particular transaction.
+       * 
+ * + * int32 number_of_records_in_transaction = 10; + * + * @return This builder for chaining. + */ + public Builder clearNumberOfRecordsInTransaction() { + bitField0_ = (bitField0_ & ~0x00000200); + numberOfRecordsInTransaction_ = 0; + onChanged(); + return this; + } + + private int numberOfPartitionsInTransaction_; + + /** + * + * + *
+       * Indicates the number of partitions that return data change records for
+       * this transaction. This value can be helpful in assembling all records
+       * associated with a particular transaction.
+       * 
+ * + * int32 number_of_partitions_in_transaction = 11; + * + * @return The numberOfPartitionsInTransaction. + */ + @java.lang.Override + public int getNumberOfPartitionsInTransaction() { + return numberOfPartitionsInTransaction_; + } + + /** + * + * + *
+       * Indicates the number of partitions that return data change records for
+       * this transaction. This value can be helpful in assembling all records
+       * associated with a particular transaction.
+       * 
+ * + * int32 number_of_partitions_in_transaction = 11; + * + * @param value The numberOfPartitionsInTransaction to set. + * @return This builder for chaining. + */ + public Builder setNumberOfPartitionsInTransaction(int value) { + + numberOfPartitionsInTransaction_ = value; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the number of partitions that return data change records for
+       * this transaction. This value can be helpful in assembling all records
+       * associated with a particular transaction.
+       * 
+ * + * int32 number_of_partitions_in_transaction = 11; + * + * @return This builder for chaining. + */ + public Builder clearNumberOfPartitionsInTransaction() { + bitField0_ = (bitField0_ & ~0x00000400); + numberOfPartitionsInTransaction_ = 0; + onChanged(); + return this; + } + + private java.lang.Object transactionTag_ = ""; + + /** + * + * + *
+       * Indicates the transaction tag associated with this transaction.
+       * 
+ * + * string transaction_tag = 12; + * + * @return The transactionTag. + */ + public java.lang.String getTransactionTag() { + java.lang.Object ref = transactionTag_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + transactionTag_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Indicates the transaction tag associated with this transaction.
+       * 
+ * + * string transaction_tag = 12; + * + * @return The bytes for transactionTag. + */ + public com.google.protobuf.ByteString getTransactionTagBytes() { + java.lang.Object ref = transactionTag_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + transactionTag_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Indicates the transaction tag associated with this transaction.
+       * 
+ * + * string transaction_tag = 12; + * + * @param value The transactionTag to set. + * @return This builder for chaining. + */ + public Builder setTransactionTag(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + transactionTag_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the transaction tag associated with this transaction.
+       * 
+ * + * string transaction_tag = 12; + * + * @return This builder for chaining. + */ + public Builder clearTransactionTag() { + transactionTag_ = getDefaultInstance().getTransactionTag(); + bitField0_ = (bitField0_ & ~0x00000800); + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the transaction tag associated with this transaction.
+       * 
+ * + * string transaction_tag = 12; + * + * @param value The bytes for transactionTag to set. + * @return This builder for chaining. + */ + public Builder setTransactionTagBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + transactionTag_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + + private boolean isSystemTransaction_; + + /** + * + * + *
+       * Indicates whether the transaction is a system transaction. System
+       * transactions include those issued by time-to-live (TTL), column backfill,
+       * etc.
+       * 
+ * + * bool is_system_transaction = 13; + * + * @return The isSystemTransaction. + */ + @java.lang.Override + public boolean getIsSystemTransaction() { + return isSystemTransaction_; + } + + /** + * + * + *
+       * Indicates whether the transaction is a system transaction. System
+       * transactions include those issued by time-to-live (TTL), column backfill,
+       * etc.
+       * 
+ * + * bool is_system_transaction = 13; + * + * @param value The isSystemTransaction to set. + * @return This builder for chaining. + */ + public Builder setIsSystemTransaction(boolean value) { + + isSystemTransaction_ = value; + bitField0_ |= 0x00001000; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates whether the transaction is a system transaction. System
+       * transactions include those issued by time-to-live (TTL), column backfill,
+       * etc.
+       * 
+ * + * bool is_system_transaction = 13; + * + * @return This builder for chaining. + */ + public Builder clearIsSystemTransaction() { + bitField0_ = (bitField0_ & ~0x00001000); + isSystemTransaction_ = false; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.DataChangeRecord) + private static final com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DataChangeRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface HeartbeatRecordOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * Indicates the timestamp at which the query has returned all the records
+     * in the change stream partition with timestamp <= heartbeat timestamp.
+     * The heartbeat timestamp will not be the same as the timestamps of other
+     * record types in the same partition.
+     * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + * + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + + /** + * + * + *
+     * Indicates the timestamp at which the query has returned all the records
+     * in the change stream partition with timestamp <= heartbeat timestamp.
+     * The heartbeat timestamp will not be the same as the timestamps of other
+     * record types in the same partition.
+     * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + * + * @return The timestamp. + */ + com.google.protobuf.Timestamp getTimestamp(); + + /** + * + * + *
+     * Indicates the timestamp at which the query has returned all the records
+     * in the change stream partition with timestamp <= heartbeat timestamp.
+     * The heartbeat timestamp will not be the same as the timestamps of other
+     * record types in the same partition.
+     * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder(); + } + + /** + * + * + *
+   * A heartbeat record is returned as a progress indicator, when there are no
+   * data changes or any other partition record types in the change stream
+   * partition.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.HeartbeatRecord} + */ + public static final class HeartbeatRecord extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) + HeartbeatRecordOrBuilder { + private static final long serialVersionUID = 0L; + + // Use HeartbeatRecord.newBuilder() to construct. + private HeartbeatRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private HeartbeatRecord() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new HeartbeatRecord(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.class, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder.class); + } + + private int bitField0_; + public static final int TIMESTAMP_FIELD_NUMBER = 1; + private com.google.protobuf.Timestamp timestamp_; + + /** + * + * + *
+     * Indicates the timestamp at which the query has returned all the records
+     * in the change stream partition with timestamp <= heartbeat timestamp.
+     * The heartbeat timestamp will not be the same as the timestamps of other
+     * record types in the same partition.
+     * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + * + * @return Whether the timestamp field is set. + */ + @java.lang.Override + public boolean hasTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+     * Indicates the timestamp at which the query has returned all the records
+     * in the change stream partition with timestamp <= heartbeat timestamp.
+     * The heartbeat timestamp will not be the same as the timestamps of other
+     * record types in the same partition.
+     * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + * + * @return The timestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getTimestamp() { + return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } + + /** + * + * + *
+     * Indicates the timestamp at which the query has returned all the records
+     * in the change stream partition with timestamp <= heartbeat timestamp.
+     * The heartbeat timestamp will not be the same as the timestamps of other
+     * record types in the same partition.
+     * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() { + return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getTimestamp()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTimestamp()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord other = + (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) obj; + + if (hasTimestamp() != other.hasTimestamp()) return false; + if (hasTimestamp()) { + if (!getTimestamp().equals(other.getTimestamp())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasTimestamp()) { + hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getTimestamp().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+     * A heartbeat record is returned as a progress indicator, when there are no
+     * data changes or any other partition record types in the change stream
+     * partition.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.HeartbeatRecord} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.class, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder.class); + } + + // Construct using com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getTimestampFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + timestamp_ = null; + if (timestampBuilder_ != null) { + timestampBuilder_.dispose(); + timestampBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_HeartbeatRecord_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord build() { + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord result = + new com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord other) { + if (other == com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance()) + return this; + if (other.hasTimestamp()) { + mergeTimestamp(other.getTimestamp()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.Timestamp timestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + timestampBuilder_; + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + * + * @return Whether the timestamp field is set. + */ + public boolean hasTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + * + * @return The timestamp. + */ + public com.google.protobuf.Timestamp getTimestamp() { + if (timestampBuilder_ == null) { + return timestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : timestamp_; + } else { + return timestampBuilder_.getMessage(); + } + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + public Builder setTimestamp(com.google.protobuf.Timestamp value) { + if (timestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timestamp_ = value; + } else { + timestampBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + public Builder setTimestamp(com.google.protobuf.Timestamp.Builder builderForValue) { + if (timestampBuilder_ == null) { + timestamp_ = builderForValue.build(); + } else { + timestampBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + public Builder mergeTimestamp(com.google.protobuf.Timestamp value) { + if (timestampBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && timestamp_ != null + && timestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getTimestampBuilder().mergeFrom(value); + } else { + timestamp_ = value; + } + } else { + timestampBuilder_.mergeFrom(value); + } + if (timestamp_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + public Builder clearTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); + timestamp_ = null; + if (timestampBuilder_ != null) { + timestampBuilder_.dispose(); + timestampBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + public com.google.protobuf.Timestamp.Builder getTimestampBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getTimestampFieldBuilder().getBuilder(); + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() { + if (timestampBuilder_ != null) { + return timestampBuilder_.getMessageOrBuilder(); + } else { + return timestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : timestamp_; + } + } + + /** + * + * + *
+       * Indicates the timestamp at which the query has returned all the records
+       * in the change stream partition with timestamp <= heartbeat timestamp.
+       * The heartbeat timestamp will not be the same as the timestamps of other
+       * record types in the same partition.
+       * 
+ * + * .google.protobuf.Timestamp timestamp = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getTimestampFieldBuilder() { + if (timestampBuilder_ == null) { + timestampBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getTimestamp(), getParentForChildren(), isClean()); + timestamp_ = null; + } + return timestampBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) + private static final com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public HeartbeatRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface PartitionStartRecordOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * Start timestamp at which the partitions should be queried to return
+     * change stream records with timestamps >= start_timestamp.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + * + * @return Whether the startTimestamp field is set. + */ + boolean hasStartTimestamp(); + + /** + * + * + *
+     * Start timestamp at which the partitions should be queried to return
+     * change stream records with timestamps >= start_timestamp.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + * + * @return The startTimestamp. + */ + com.google.protobuf.Timestamp getStartTimestamp(); + + /** + * + * + *
+     * Start timestamp at which the partitions should be queried to return
+     * change stream records with timestamps >= start_timestamp.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + com.google.protobuf.TimestampOrBuilder getStartTimestampOrBuilder(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + java.lang.String getRecordSequence(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + com.google.protobuf.ByteString getRecordSequenceBytes(); + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @return A list containing the partitionTokens. + */ + java.util.List getPartitionTokensList(); + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @return The count of partitionTokens. + */ + int getPartitionTokensCount(); + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index of the element to return. + * @return The partitionTokens at the given index. + */ + java.lang.String getPartitionTokens(int index); + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index of the value to return. + * @return The bytes of the partitionTokens at the given index. + */ + com.google.protobuf.ByteString getPartitionTokensBytes(int index); + } + + /** + * + * + *
+   * A partition start record serves as a notification that the client should
+   * schedule the partitions to be queried. PartitionStartRecord returns
+   * information about one or more partitions.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionStartRecord} + */ + public static final class PartitionStartRecord extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) + PartitionStartRecordOrBuilder { + private static final long serialVersionUID = 0L; + + // Use PartitionStartRecord.newBuilder() to construct. + private PartitionStartRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private PartitionStartRecord() { + recordSequence_ = ""; + partitionTokens_ = com.google.protobuf.LazyStringArrayList.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new PartitionStartRecord(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder.class); + } + + private int bitField0_; + public static final int START_TIMESTAMP_FIELD_NUMBER = 1; + private com.google.protobuf.Timestamp startTimestamp_; + + /** + * + * + *
+     * Start timestamp at which the partitions should be queried to return
+     * change stream records with timestamps >= start_timestamp.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + * + * @return Whether the startTimestamp field is set. + */ + @java.lang.Override + public boolean hasStartTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+     * Start timestamp at which the partitions should be queried to return
+     * change stream records with timestamps >= start_timestamp.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + * + * @return The startTimestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getStartTimestamp() { + return startTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : startTimestamp_; + } + + /** + * + * + *
+     * Start timestamp at which the partitions should be queried to return
+     * change stream records with timestamps >= start_timestamp.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getStartTimestampOrBuilder() { + return startTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : startTimestamp_; + } + + public static final int RECORD_SEQUENCE_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + @java.lang.Override + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } + } + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + @java.lang.Override + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PARTITION_TOKENS_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList partitionTokens_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @return A list containing the partitionTokens. + */ + public com.google.protobuf.ProtocolStringList getPartitionTokensList() { + return partitionTokens_; + } + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @return The count of partitionTokens. + */ + public int getPartitionTokensCount() { + return partitionTokens_.size(); + } + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index of the element to return. + * @return The partitionTokens at the given index. + */ + public java.lang.String getPartitionTokens(int index) { + return partitionTokens_.get(index); + } + + /** + * + * + *
+     * Unique partition identifiers to be used in queries.
+     * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index of the value to return. + * @return The bytes of the partitionTokens at the given index. + */ + public com.google.protobuf.ByteString getPartitionTokensBytes(int index) { + return partitionTokens_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getStartTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, recordSequence_); + } + for (int i = 0; i < partitionTokens_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, partitionTokens_.getRaw(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getStartTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, recordSequence_); + } + { + int dataSize = 0; + for (int i = 0; i < partitionTokens_.size(); i++) { + dataSize += computeStringSizeNoTag(partitionTokens_.getRaw(i)); + } + size += dataSize; + size += 1 * getPartitionTokensList().size(); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord other = + (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) obj; + + if (hasStartTimestamp() != other.hasStartTimestamp()) return false; + if (hasStartTimestamp()) { + if (!getStartTimestamp().equals(other.getStartTimestamp())) return false; + } + if (!getRecordSequence().equals(other.getRecordSequence())) return false; + if (!getPartitionTokensList().equals(other.getPartitionTokensList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasStartTimestamp()) { + hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getStartTimestamp().hashCode(); + } + hash = (37 * hash) + RECORD_SEQUENCE_FIELD_NUMBER; + hash = (53 * hash) + getRecordSequence().hashCode(); + if (getPartitionTokensCount() > 0) { + hash = (37 * hash) + PARTITION_TOKENS_FIELD_NUMBER; + hash = (53 * hash) + getPartitionTokensList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+     * A partition start record serves as a notification that the client should
+     * schedule the partitions to be queried. PartitionStartRecord returns
+     * information about one or more partitions.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionStartRecord} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder.class); + } + + // Construct using com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getStartTimestampFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + startTimestamp_ = null; + if (startTimestampBuilder_ != null) { + startTimestampBuilder_.dispose(); + startTimestampBuilder_ = null; + } + recordSequence_ = ""; + partitionTokens_ = com.google.protobuf.LazyStringArrayList.emptyList(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionStartRecord_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord build() { + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord result = + new com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.startTimestamp_ = + startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.recordSequence_ = recordSequence_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + partitionTokens_.makeImmutable(); + result.partitionTokens_ = partitionTokens_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance()) + return this; + if (other.hasStartTimestamp()) { + mergeStartTimestamp(other.getStartTimestamp()); + } + if (!other.getRecordSequence().isEmpty()) { + recordSequence_ = other.recordSequence_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.partitionTokens_.isEmpty()) { + if (partitionTokens_.isEmpty()) { + partitionTokens_ = other.partitionTokens_; + bitField0_ |= 0x00000004; + } else { + ensurePartitionTokensIsMutable(); + partitionTokens_.addAll(other.partitionTokens_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage( + getStartTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + recordSequence_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + java.lang.String s = input.readStringRequireUtf8(); + ensurePartitionTokensIsMutable(); + partitionTokens_.add(s); + break; + } // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.Timestamp startTimestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + startTimestampBuilder_; + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + * + * @return Whether the startTimestamp field is set. + */ + public boolean hasStartTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + * + * @return The startTimestamp. + */ + public com.google.protobuf.Timestamp getStartTimestamp() { + if (startTimestampBuilder_ == null) { + return startTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : startTimestamp_; + } else { + return startTimestampBuilder_.getMessage(); + } + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + public Builder setStartTimestamp(com.google.protobuf.Timestamp value) { + if (startTimestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + startTimestamp_ = value; + } else { + startTimestampBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + public Builder setStartTimestamp(com.google.protobuf.Timestamp.Builder builderForValue) { + if (startTimestampBuilder_ == null) { + startTimestamp_ = builderForValue.build(); + } else { + startTimestampBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + public Builder mergeStartTimestamp(com.google.protobuf.Timestamp value) { + if (startTimestampBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && startTimestamp_ != null + && startTimestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getStartTimestampBuilder().mergeFrom(value); + } else { + startTimestamp_ = value; + } + } else { + startTimestampBuilder_.mergeFrom(value); + } + if (startTimestamp_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + public Builder clearStartTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); + startTimestamp_ = null; + if (startTimestampBuilder_ != null) { + startTimestampBuilder_.dispose(); + startTimestampBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + public com.google.protobuf.Timestamp.Builder getStartTimestampBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getStartTimestampFieldBuilder().getBuilder(); + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + public com.google.protobuf.TimestampOrBuilder getStartTimestampOrBuilder() { + if (startTimestampBuilder_ != null) { + return startTimestampBuilder_.getMessageOrBuilder(); + } else { + return startTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : startTimestamp_; + } + } + + /** + * + * + *
+       * Start timestamp at which the partitions should be queried to return
+       * change stream records with timestamps >= start_timestamp.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp start_timestamp = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getStartTimestampFieldBuilder() { + if (startTimestampBuilder_ == null) { + startTimestampBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getStartTimestamp(), getParentForChildren(), isClean()); + startTimestamp_ = null; + } + return startTimestampBuilder_; + } + + private java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequence(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return This builder for chaining. + */ + public Builder clearRecordSequence() { + recordSequence_ = getDefaultInstance().getRecordSequence(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The bytes for recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequenceBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringArrayList partitionTokens_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + + private void ensurePartitionTokensIsMutable() { + if (!partitionTokens_.isModifiable()) { + partitionTokens_ = new com.google.protobuf.LazyStringArrayList(partitionTokens_); + } + bitField0_ |= 0x00000004; + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @return A list containing the partitionTokens. + */ + public com.google.protobuf.ProtocolStringList getPartitionTokensList() { + partitionTokens_.makeImmutable(); + return partitionTokens_; + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @return The count of partitionTokens. + */ + public int getPartitionTokensCount() { + return partitionTokens_.size(); + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index of the element to return. + * @return The partitionTokens at the given index. + */ + public java.lang.String getPartitionTokens(int index) { + return partitionTokens_.get(index); + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index of the value to return. + * @return The bytes of the partitionTokens at the given index. + */ + public com.google.protobuf.ByteString getPartitionTokensBytes(int index) { + return partitionTokens_.getByteString(index); + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @param index The index to set the value at. + * @param value The partitionTokens to set. + * @return This builder for chaining. + */ + public Builder setPartitionTokens(int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePartitionTokensIsMutable(); + partitionTokens_.set(index, value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @param value The partitionTokens to add. + * @return This builder for chaining. + */ + public Builder addPartitionTokens(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePartitionTokensIsMutable(); + partitionTokens_.add(value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @param values The partitionTokens to add. + * @return This builder for chaining. + */ + public Builder addAllPartitionTokens(java.lang.Iterable values) { + ensurePartitionTokensIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, partitionTokens_); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @return This builder for chaining. + */ + public Builder clearPartitionTokens() { + partitionTokens_ = com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + ; + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifiers to be used in queries.
+       * 
+ * + * repeated string partition_tokens = 3; + * + * @param value The bytes of the partitionTokens to add. + * @return This builder for chaining. + */ + public Builder addPartitionTokensBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensurePartitionTokensIsMutable(); + partitionTokens_.add(value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) + private static final com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PartitionStartRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface PartitionEndRecordOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * End timestamp at which the change stream partition is terminated. All
+     * changes generated by this partition will have timestamps <=
+     * end_timestamp. DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition. PartitionEndRecord is the last record returned for a
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + * + * @return Whether the endTimestamp field is set. + */ + boolean hasEndTimestamp(); + + /** + * + * + *
+     * End timestamp at which the change stream partition is terminated. All
+     * changes generated by this partition will have timestamps <=
+     * end_timestamp. DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition. PartitionEndRecord is the last record returned for a
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + * + * @return The endTimestamp. + */ + com.google.protobuf.Timestamp getEndTimestamp(); + + /** + * + * + *
+     * End timestamp at which the change stream partition is terminated. All
+     * changes generated by this partition will have timestamps <=
+     * end_timestamp. DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition. PartitionEndRecord is the last record returned for a
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + com.google.protobuf.TimestampOrBuilder getEndTimestampOrBuilder(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + java.lang.String getRecordSequence(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + com.google.protobuf.ByteString getRecordSequenceBytes(); + + /** + * + * + *
+     * Unique partition identifier describing the terminated change stream
+     * partition.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEndRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The partitionToken. + */ + java.lang.String getPartitionToken(); + + /** + * + * + *
+     * Unique partition identifier describing the terminated change stream
+     * partition.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEndRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The bytes for partitionToken. + */ + com.google.protobuf.ByteString getPartitionTokenBytes(); + } + + /** + * + * + *
+   * A partition end record serves as a notification that the client should stop
+   * reading the partition. No further records are expected to be retrieved on
+   * it.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEndRecord} + */ + public static final class PartitionEndRecord extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) + PartitionEndRecordOrBuilder { + private static final long serialVersionUID = 0L; + + // Use PartitionEndRecord.newBuilder() to construct. + private PartitionEndRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private PartitionEndRecord() { + recordSequence_ = ""; + partitionToken_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new PartitionEndRecord(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder.class); + } + + private int bitField0_; + public static final int END_TIMESTAMP_FIELD_NUMBER = 1; + private com.google.protobuf.Timestamp endTimestamp_; + + /** + * + * + *
+     * End timestamp at which the change stream partition is terminated. All
+     * changes generated by this partition will have timestamps <=
+     * end_timestamp. DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition. PartitionEndRecord is the last record returned for a
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + * + * @return Whether the endTimestamp field is set. + */ + @java.lang.Override + public boolean hasEndTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+     * End timestamp at which the change stream partition is terminated. All
+     * changes generated by this partition will have timestamps <=
+     * end_timestamp. DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition. PartitionEndRecord is the last record returned for a
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + * + * @return The endTimestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getEndTimestamp() { + return endTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : endTimestamp_; + } + + /** + * + * + *
+     * End timestamp at which the change stream partition is terminated. All
+     * changes generated by this partition will have timestamps <=
+     * end_timestamp. DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition. PartitionEndRecord is the last record returned for a
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getEndTimestampOrBuilder() { + return endTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : endTimestamp_; + } + + public static final int RECORD_SEQUENCE_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + @java.lang.Override + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } + } + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + @java.lang.Override + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PARTITION_TOKEN_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private volatile java.lang.Object partitionToken_ = ""; + + /** + * + * + *
+     * Unique partition identifier describing the terminated change stream
+     * partition.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEndRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The partitionToken. + */ + @java.lang.Override + public java.lang.String getPartitionToken() { + java.lang.Object ref = partitionToken_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + partitionToken_ = s; + return s; + } + } + + /** + * + * + *
+     * Unique partition identifier describing the terminated change stream
+     * partition.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEndRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The bytes for partitionToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPartitionTokenBytes() { + java.lang.Object ref = partitionToken_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + partitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getEndTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, recordSequence_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(partitionToken_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, partitionToken_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, recordSequence_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(partitionToken_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, partitionToken_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord other = + (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) obj; + + if (hasEndTimestamp() != other.hasEndTimestamp()) return false; + if (hasEndTimestamp()) { + if (!getEndTimestamp().equals(other.getEndTimestamp())) return false; + } + if (!getRecordSequence().equals(other.getRecordSequence())) return false; + if (!getPartitionToken().equals(other.getPartitionToken())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasEndTimestamp()) { + hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getEndTimestamp().hashCode(); + } + hash = (37 * hash) + RECORD_SEQUENCE_FIELD_NUMBER; + hash = (53 * hash) + getRecordSequence().hashCode(); + hash = (37 * hash) + PARTITION_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPartitionToken().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+     * A partition end record serves as a notification that the client should stop
+     * reading the partition. No further records are expected to be retrieved on
+     * it.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEndRecord} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder.class); + } + + // Construct using com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getEndTimestampFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + endTimestamp_ = null; + if (endTimestampBuilder_ != null) { + endTimestampBuilder_.dispose(); + endTimestampBuilder_ = null; + } + recordSequence_ = ""; + partitionToken_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEndRecord_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord build() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord result = + new com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.endTimestamp_ = + endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.recordSequence_ = recordSequence_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.partitionToken_ = partitionToken_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance()) + return this; + if (other.hasEndTimestamp()) { + mergeEndTimestamp(other.getEndTimestamp()); + } + if (!other.getRecordSequence().isEmpty()) { + recordSequence_ = other.recordSequence_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getPartitionToken().isEmpty()) { + partitionToken_ = other.partitionToken_; + bitField0_ |= 0x00000004; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + recordSequence_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + partitionToken_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.Timestamp endTimestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + endTimestampBuilder_; + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + * + * @return Whether the endTimestamp field is set. + */ + public boolean hasEndTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + * + * @return The endTimestamp. + */ + public com.google.protobuf.Timestamp getEndTimestamp() { + if (endTimestampBuilder_ == null) { + return endTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : endTimestamp_; + } else { + return endTimestampBuilder_.getMessage(); + } + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + public Builder setEndTimestamp(com.google.protobuf.Timestamp value) { + if (endTimestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + endTimestamp_ = value; + } else { + endTimestampBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + public Builder setEndTimestamp(com.google.protobuf.Timestamp.Builder builderForValue) { + if (endTimestampBuilder_ == null) { + endTimestamp_ = builderForValue.build(); + } else { + endTimestampBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + public Builder mergeEndTimestamp(com.google.protobuf.Timestamp value) { + if (endTimestampBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && endTimestamp_ != null + && endTimestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getEndTimestampBuilder().mergeFrom(value); + } else { + endTimestamp_ = value; + } + } else { + endTimestampBuilder_.mergeFrom(value); + } + if (endTimestamp_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + public Builder clearEndTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); + endTimestamp_ = null; + if (endTimestampBuilder_ != null) { + endTimestampBuilder_.dispose(); + endTimestampBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + public com.google.protobuf.Timestamp.Builder getEndTimestampBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getEndTimestampFieldBuilder().getBuilder(); + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + public com.google.protobuf.TimestampOrBuilder getEndTimestampOrBuilder() { + if (endTimestampBuilder_ != null) { + return endTimestampBuilder_.getMessageOrBuilder(); + } else { + return endTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : endTimestamp_; + } + } + + /** + * + * + *
+       * End timestamp at which the change stream partition is terminated. All
+       * changes generated by this partition will have timestamps <=
+       * end_timestamp. DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition. PartitionEndRecord is the last record returned for a
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp end_timestamp = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getEndTimestampFieldBuilder() { + if (endTimestampBuilder_ == null) { + endTimestampBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getEndTimestamp(), getParentForChildren(), isClean()); + endTimestamp_ = null; + } + return endTimestampBuilder_; + } + + private java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequence(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return This builder for chaining. + */ + public Builder clearRecordSequence() { + recordSequence_ = getDefaultInstance().getRecordSequence(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The bytes for recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequenceBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object partitionToken_ = ""; + + /** + * + * + *
+       * Unique partition identifier describing the terminated change stream
+       * partition.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEndRecord.
+       * 
+ * + * string partition_token = 3; + * + * @return The partitionToken. + */ + public java.lang.String getPartitionToken() { + java.lang.Object ref = partitionToken_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + partitionToken_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Unique partition identifier describing the terminated change stream
+       * partition.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEndRecord.
+       * 
+ * + * string partition_token = 3; + * + * @return The bytes for partitionToken. + */ + public com.google.protobuf.ByteString getPartitionTokenBytes() { + java.lang.Object ref = partitionToken_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + partitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Unique partition identifier describing the terminated change stream
+       * partition.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEndRecord.
+       * 
+ * + * string partition_token = 3; + * + * @param value The partitionToken to set. + * @return This builder for chaining. + */ + public Builder setPartitionToken(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + partitionToken_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifier describing the terminated change stream
+       * partition.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEndRecord.
+       * 
+ * + * string partition_token = 3; + * + * @return This builder for chaining. + */ + public Builder clearPartitionToken() { + partitionToken_ = getDefaultInstance().getPartitionToken(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifier describing the terminated change stream
+       * partition.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEndRecord.
+       * 
+ * + * string partition_token = 3; + * + * @param value The bytes for partitionToken to set. + * @return This builder for chaining. + */ + public Builder setPartitionTokenBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + partitionToken_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) + private static final com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PartitionEndRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface PartitionEventRecordOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * Indicates the commit timestamp at which the key range change occurred.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return Whether the commitTimestamp field is set. + */ + boolean hasCommitTimestamp(); + + /** + * + * + *
+     * Indicates the commit timestamp at which the key range change occurred.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return The commitTimestamp. + */ + com.google.protobuf.Timestamp getCommitTimestamp(); + + /** + * + * + *
+     * Indicates the commit timestamp at which the key range change occurred.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + com.google.protobuf.TimestampOrBuilder getCommitTimestampOrBuilder(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + java.lang.String getRecordSequence(); + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + com.google.protobuf.ByteString getRecordSequenceBytes(); + + /** + * + * + *
+     * Unique partition identifier describing the partition this event
+     * occurred on.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEventRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The partitionToken. + */ + java.lang.String getPartitionToken(); + + /** + * + * + *
+     * Unique partition identifier describing the partition this event
+     * occurred on.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEventRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The bytes for partitionToken. + */ + com.google.protobuf.ByteString getPartitionTokenBytes(); + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + java.util.List + getMoveInEventsList(); + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent getMoveInEvents( + int index); + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + int getMoveInEventsCount(); + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder> + getMoveInEventsOrBuilderList(); + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder + getMoveInEventsOrBuilder(int index); + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + java.util.List + getMoveOutEventsList(); + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent getMoveOutEvents( + int index); + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + int getMoveOutEventsCount(); + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder> + getMoveOutEventsOrBuilderList(); + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder + getMoveOutEventsOrBuilder(int index); + } + + /** + * + * + *
+   * A partition event record describes key range changes for a change stream
+   * partition. The changes to a row defined by its primary key can be captured
+   * in one change stream partition for a specific time range, and then be
+   * captured in a different change stream partition for a different time range.
+   * This movement of key ranges across change stream partitions is a reflection
+   * of activities, such as Spanner's dynamic splitting and load balancing, etc.
+   * Processing this event is needed if users want to guarantee processing of
+   * the changes for any key in timestamp order. If time ordered processing of
+   * changes for a primary key is not needed, this event can be ignored.
+   * To guarantee time ordered processing for each primary key, if the event
+   * describes move-ins, the reader of this partition needs to wait until the
+   * readers of the source partitions have processed all records with timestamps
+   * <= this PartitionEventRecord.commit_timestamp, before advancing beyond this
+   * PartitionEventRecord. If the event describes move-outs, the reader can
+   * notify the readers of the destination partitions that they can continue
+   * processing.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEventRecord} + */ + public static final class PartitionEventRecord extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) + PartitionEventRecordOrBuilder { + private static final long serialVersionUID = 0L; + + // Use PartitionEventRecord.newBuilder() to construct. + private PartitionEventRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private PartitionEventRecord() { + recordSequence_ = ""; + partitionToken_ = ""; + moveInEvents_ = java.util.Collections.emptyList(); + moveOutEvents_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new PartitionEventRecord(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder.class); + } + + public interface MoveInEventOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * An unique partition identifier describing the source change stream
+       * partition that recorded changes for the key range that is moving
+       * into this partition.
+       * 
+ * + * string source_partition_token = 1; + * + * @return The sourcePartitionToken. + */ + java.lang.String getSourcePartitionToken(); + + /** + * + * + *
+       * An unique partition identifier describing the source change stream
+       * partition that recorded changes for the key range that is moving
+       * into this partition.
+       * 
+ * + * string source_partition_token = 1; + * + * @return The bytes for sourcePartitionToken. + */ + com.google.protobuf.ByteString getSourcePartitionTokenBytes(); + } + + /** + * + * + *
+     * Describes move-in of the key ranges into the change stream partition
+     * identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * To maintain processing the changes for a particular key in timestamp
+     * order, the query processing the change stream partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+     * should not advance beyond the partition event record commit timestamp
+     * until the queries processing the source change stream partitions have
+     * processed all change stream records with timestamps <= the partition
+     * event record commit timestamp.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent} + */ + public static final class MoveInEvent extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) + MoveInEventOrBuilder { + private static final long serialVersionUID = 0L; + + // Use MoveInEvent.newBuilder() to construct. + private MoveInEvent(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private MoveInEvent() { + sourcePartitionToken_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new MoveInEvent(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + .class); + } + + public static final int SOURCE_PARTITION_TOKEN_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object sourcePartitionToken_ = ""; + + /** + * + * + *
+       * An unique partition identifier describing the source change stream
+       * partition that recorded changes for the key range that is moving
+       * into this partition.
+       * 
+ * + * string source_partition_token = 1; + * + * @return The sourcePartitionToken. + */ + @java.lang.Override + public java.lang.String getSourcePartitionToken() { + java.lang.Object ref = sourcePartitionToken_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourcePartitionToken_ = s; + return s; + } + } + + /** + * + * + *
+       * An unique partition identifier describing the source change stream
+       * partition that recorded changes for the key range that is moving
+       * into this partition.
+       * 
+ * + * string source_partition_token = 1; + * + * @return The bytes for sourcePartitionToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSourcePartitionTokenBytes() { + java.lang.Object ref = sourcePartitionToken_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourcePartitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourcePartitionToken_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sourcePartitionToken_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourcePartitionToken_)) { + size += + com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sourcePartitionToken_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj + instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent other = + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) obj; + + if (!getSourcePartitionToken().equals(other.getSourcePartitionToken())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SOURCE_PARTITION_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getSourcePartitionToken().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+       * Describes move-in of the key ranges into the change stream partition
+       * identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * To maintain processing the changes for a particular key in timestamp
+       * order, the query processing the change stream partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * should not advance beyond the partition event record commit timestamp
+       * until the queries processing the source change stream partitions have
+       * processed all change stream records with timestamps <= the partition
+       * event record commit timestamp.
+       * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + .class); + } + + // Construct using + // com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + sourcePartitionToken_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveInEvent_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + .getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent build() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent result = + buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent result = + new com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.sourcePartitionToken_ = sourcePartitionToken_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other + instanceof + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) { + return mergeFrom( + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + .getDefaultInstance()) return this; + if (!other.getSourcePartitionToken().isEmpty()) { + sourcePartitionToken_ = other.sourcePartitionToken_; + bitField0_ |= 0x00000001; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + sourcePartitionToken_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object sourcePartitionToken_ = ""; + + /** + * + * + *
+         * An unique partition identifier describing the source change stream
+         * partition that recorded changes for the key range that is moving
+         * into this partition.
+         * 
+ * + * string source_partition_token = 1; + * + * @return The sourcePartitionToken. + */ + public java.lang.String getSourcePartitionToken() { + java.lang.Object ref = sourcePartitionToken_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourcePartitionToken_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+         * An unique partition identifier describing the source change stream
+         * partition that recorded changes for the key range that is moving
+         * into this partition.
+         * 
+ * + * string source_partition_token = 1; + * + * @return The bytes for sourcePartitionToken. + */ + public com.google.protobuf.ByteString getSourcePartitionTokenBytes() { + java.lang.Object ref = sourcePartitionToken_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourcePartitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+         * An unique partition identifier describing the source change stream
+         * partition that recorded changes for the key range that is moving
+         * into this partition.
+         * 
+ * + * string source_partition_token = 1; + * + * @param value The sourcePartitionToken to set. + * @return This builder for chaining. + */ + public Builder setSourcePartitionToken(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + sourcePartitionToken_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+         * An unique partition identifier describing the source change stream
+         * partition that recorded changes for the key range that is moving
+         * into this partition.
+         * 
+ * + * string source_partition_token = 1; + * + * @return This builder for chaining. + */ + public Builder clearSourcePartitionToken() { + sourcePartitionToken_ = getDefaultInstance().getSourcePartitionToken(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + * + * + *
+         * An unique partition identifier describing the source change stream
+         * partition that recorded changes for the key range that is moving
+         * into this partition.
+         * 
+ * + * string source_partition_token = 1; + * + * @param value The bytes for sourcePartitionToken to set. + * @return This builder for chaining. + */ + public Builder setSourcePartitionTokenBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + sourcePartitionToken_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent) + private static final com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = + new com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public MoveInEvent parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface MoveOutEventOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+       * An unique partition identifier describing the destination change
+       * stream partition that will record changes for the key range that is
+       * moving out of this partition.
+       * 
+ * + * string destination_partition_token = 1; + * + * @return The destinationPartitionToken. + */ + java.lang.String getDestinationPartitionToken(); + + /** + * + * + *
+       * An unique partition identifier describing the destination change
+       * stream partition that will record changes for the key range that is
+       * moving out of this partition.
+       * 
+ * + * string destination_partition_token = 1; + * + * @return The bytes for destinationPartitionToken. + */ + com.google.protobuf.ByteString getDestinationPartitionTokenBytes(); + } + + /** + * + * + *
+     * Describes move-out of the key ranges out of the change stream partition
+     * identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * To maintain processing the changes for a particular key in timestamp
+     * order, the query processing the
+     * [MoveOutEvent][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent]
+     * in the partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+     * should inform the queries processing the destination partitions that
+     * they can unblock and proceed processing records past the
+     * [commit_timestamp][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.commit_timestamp].
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent} + */ + public static final class MoveOutEvent extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) + MoveOutEventOrBuilder { + private static final long serialVersionUID = 0L; + + // Use MoveOutEvent.newBuilder() to construct. + private MoveOutEvent(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private MoveOutEvent() { + destinationPartitionToken_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new MoveOutEvent(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + .class); + } + + public static final int DESTINATION_PARTITION_TOKEN_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object destinationPartitionToken_ = ""; + + /** + * + * + *
+       * An unique partition identifier describing the destination change
+       * stream partition that will record changes for the key range that is
+       * moving out of this partition.
+       * 
+ * + * string destination_partition_token = 1; + * + * @return The destinationPartitionToken. + */ + @java.lang.Override + public java.lang.String getDestinationPartitionToken() { + java.lang.Object ref = destinationPartitionToken_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + destinationPartitionToken_ = s; + return s; + } + } + + /** + * + * + *
+       * An unique partition identifier describing the destination change
+       * stream partition that will record changes for the key range that is
+       * moving out of this partition.
+       * 
+ * + * string destination_partition_token = 1; + * + * @return The bytes for destinationPartitionToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getDestinationPartitionTokenBytes() { + java.lang.Object ref = destinationPartitionToken_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + destinationPartitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationPartitionToken_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, destinationPartitionToken_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationPartitionToken_)) { + size += + com.google.protobuf.GeneratedMessageV3.computeStringSize( + 1, destinationPartitionToken_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj + instanceof + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent other = + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) obj; + + if (!getDestinationPartitionToken().equals(other.getDestinationPartitionToken())) + return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DESTINATION_PARTITION_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getDestinationPartitionToken().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+       * Describes move-out of the key ranges out of the change stream partition
+       * identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * To maintain processing the changes for a particular key in timestamp
+       * order, the query processing the
+       * [MoveOutEvent][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent]
+       * in the partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * should inform the queries processing the destination partitions that
+       * they can unblock and proceed processing records past the
+       * [commit_timestamp][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.commit_timestamp].
+       * 
+ * + * Protobuf type {@code + * google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + .class); + } + + // Construct using + // com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + destinationPartitionToken_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_MoveOutEvent_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + .getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent build() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent result = + buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent result = + new com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.destinationPartitionToken_ = destinationPartitionToken_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other + instanceof + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) { + return mergeFrom( + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + .getDefaultInstance()) return this; + if (!other.getDestinationPartitionToken().isEmpty()) { + destinationPartitionToken_ = other.destinationPartitionToken_; + bitField0_ |= 0x00000001; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + destinationPartitionToken_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object destinationPartitionToken_ = ""; + + /** + * + * + *
+         * An unique partition identifier describing the destination change
+         * stream partition that will record changes for the key range that is
+         * moving out of this partition.
+         * 
+ * + * string destination_partition_token = 1; + * + * @return The destinationPartitionToken. + */ + public java.lang.String getDestinationPartitionToken() { + java.lang.Object ref = destinationPartitionToken_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + destinationPartitionToken_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+         * An unique partition identifier describing the destination change
+         * stream partition that will record changes for the key range that is
+         * moving out of this partition.
+         * 
+ * + * string destination_partition_token = 1; + * + * @return The bytes for destinationPartitionToken. + */ + public com.google.protobuf.ByteString getDestinationPartitionTokenBytes() { + java.lang.Object ref = destinationPartitionToken_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + destinationPartitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+         * An unique partition identifier describing the destination change
+         * stream partition that will record changes for the key range that is
+         * moving out of this partition.
+         * 
+ * + * string destination_partition_token = 1; + * + * @param value The destinationPartitionToken to set. + * @return This builder for chaining. + */ + public Builder setDestinationPartitionToken(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + destinationPartitionToken_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+         * An unique partition identifier describing the destination change
+         * stream partition that will record changes for the key range that is
+         * moving out of this partition.
+         * 
+ * + * string destination_partition_token = 1; + * + * @return This builder for chaining. + */ + public Builder clearDestinationPartitionToken() { + destinationPartitionToken_ = getDefaultInstance().getDestinationPartitionToken(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + * + * + *
+         * An unique partition identifier describing the destination change
+         * stream partition that will record changes for the key range that is
+         * moving out of this partition.
+         * 
+ * + * string destination_partition_token = 1; + * + * @param value The bytes for destinationPartitionToken to set. + * @return This builder for chaining. + */ + public Builder setDestinationPartitionTokenBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + destinationPartitionToken_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent) + private static final com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + .MoveOutEvent + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = + new com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public MoveOutEvent parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + public static final int COMMIT_TIMESTAMP_FIELD_NUMBER = 1; + private com.google.protobuf.Timestamp commitTimestamp_; + + /** + * + * + *
+     * Indicates the commit timestamp at which the key range change occurred.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return Whether the commitTimestamp field is set. + */ + @java.lang.Override + public boolean hasCommitTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+     * Indicates the commit timestamp at which the key range change occurred.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return The commitTimestamp. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getCommitTimestamp() { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } + + /** + * + * + *
+     * Indicates the commit timestamp at which the key range change occurred.
+     * DataChangeRecord.commit_timestamps,
+     * PartitionStartRecord.start_timestamps,
+     * PartitionEventRecord.commit_timestamps, and
+     * PartitionEndRecord.end_timestamps can have the same value in the same
+     * partition.
+     * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getCommitTimestampOrBuilder() { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } + + public static final int RECORD_SEQUENCE_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + @java.lang.Override + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } + } + + /** + * + * + *
+     * Record sequence numbers are unique and monotonically increasing (but not
+     * necessarily contiguous) for a specific timestamp across record
+     * types in the same partition. To guarantee ordered processing, the reader
+     * should process records (of potentially different types) in
+     * record_sequence order for a specific timestamp in the same partition.
+     * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + @java.lang.Override + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PARTITION_TOKEN_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private volatile java.lang.Object partitionToken_ = ""; + + /** + * + * + *
+     * Unique partition identifier describing the partition this event
+     * occurred on.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEventRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The partitionToken. + */ + @java.lang.Override + public java.lang.String getPartitionToken() { + java.lang.Object ref = partitionToken_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + partitionToken_ = s; + return s; + } + } + + /** + * + * + *
+     * Unique partition identifier describing the partition this event
+     * occurred on.
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+     * is equal to the partition token of the change stream partition currently
+     * queried to return this PartitionEventRecord.
+     * 
+ * + * string partition_token = 3; + * + * @return The bytes for partitionToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPartitionTokenBytes() { + java.lang.Object ref = partitionToken_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + partitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int MOVE_IN_EVENTS_FIELD_NUMBER = 4; + + @SuppressWarnings("serial") + private java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent> + moveInEvents_; + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + @java.lang.Override + public java.util.List + getMoveInEventsList() { + return moveInEvents_; + } + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + @java.lang.Override + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder> + getMoveInEventsOrBuilderList() { + return moveInEvents_; + } + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + @java.lang.Override + public int getMoveInEventsCount() { + return moveInEvents_.size(); + } + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + getMoveInEvents(int index) { + return moveInEvents_.get(index); + } + + /** + * + * + *
+     * Set when one or more key ranges are moved into the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved into partition (P1) from partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_in_events {
+     *     source_partition_token: "P2"
+     *   }
+     *   move_in_events {
+     *     source_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_out_events {
+     *     destination_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder + getMoveInEventsOrBuilder(int index) { + return moveInEvents_.get(index); + } + + public static final int MOVE_OUT_EVENTS_FIELD_NUMBER = 5; + + @SuppressWarnings("serial") + private java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent> + moveOutEvents_; + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + @java.lang.Override + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent> + getMoveOutEventsList() { + return moveOutEvents_; + } + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + @java.lang.Override + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder> + getMoveOutEventsOrBuilderList() { + return moveOutEvents_; + } + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + @java.lang.Override + public int getMoveOutEventsCount() { + return moveOutEvents_.size(); + } + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + getMoveOutEvents(int index) { + return moveOutEvents_.get(index); + } + + /** + * + * + *
+     * Set when one or more key ranges are moved out of the change stream
+     * partition identified by
+     * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+     *
+     * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+     * and partition (P3) in a single transaction at timestamp T.
+     *
+     * The PartitionEventRecord returned in P1 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P1"
+     *   move_out_events {
+     *     destination_partition_token: "P2"
+     *   }
+     *   move_out_events {
+     *     destination_partition_token: "P3"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P2 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P2"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     *
+     * The PartitionEventRecord returned in P3 will reflect the move as:
+     *
+     * PartitionEventRecord {
+     *   commit_timestamp: T
+     *   partition_token: "P3"
+     *   move_in_events {
+     *     source_partition_token: "P1"
+     *   }
+     * }
+     * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder + getMoveOutEventsOrBuilder(int index) { + return moveOutEvents_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getCommitTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, recordSequence_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(partitionToken_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, partitionToken_); + } + for (int i = 0; i < moveInEvents_.size(); i++) { + output.writeMessage(4, moveInEvents_.get(i)); + } + for (int i = 0; i < moveOutEvents_.size(); i++) { + output.writeMessage(5, moveOutEvents_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getCommitTimestamp()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(recordSequence_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, recordSequence_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(partitionToken_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, partitionToken_); + } + for (int i = 0; i < moveInEvents_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, moveInEvents_.get(i)); + } + for (int i = 0; i < moveOutEvents_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, moveOutEvents_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord other = + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) obj; + + if (hasCommitTimestamp() != other.hasCommitTimestamp()) return false; + if (hasCommitTimestamp()) { + if (!getCommitTimestamp().equals(other.getCommitTimestamp())) return false; + } + if (!getRecordSequence().equals(other.getRecordSequence())) return false; + if (!getPartitionToken().equals(other.getPartitionToken())) return false; + if (!getMoveInEventsList().equals(other.getMoveInEventsList())) return false; + if (!getMoveOutEventsList().equals(other.getMoveOutEventsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasCommitTimestamp()) { + hash = (37 * hash) + COMMIT_TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getCommitTimestamp().hashCode(); + } + hash = (37 * hash) + RECORD_SEQUENCE_FIELD_NUMBER; + hash = (53 * hash) + getRecordSequence().hashCode(); + hash = (37 * hash) + PARTITION_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPartitionToken().hashCode(); + if (getMoveInEventsCount() > 0) { + hash = (37 * hash) + MOVE_IN_EVENTS_FIELD_NUMBER; + hash = (53 * hash) + getMoveInEventsList().hashCode(); + } + if (getMoveOutEventsCount() > 0) { + hash = (37 * hash) + MOVE_OUT_EVENTS_FIELD_NUMBER; + hash = (53 * hash) + getMoveOutEventsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+     * A partition event record describes key range changes for a change stream
+     * partition. The changes to a row defined by its primary key can be captured
+     * in one change stream partition for a specific time range, and then be
+     * captured in a different change stream partition for a different time range.
+     * This movement of key ranges across change stream partitions is a reflection
+     * of activities, such as Spanner's dynamic splitting and load balancing, etc.
+     * Processing this event is needed if users want to guarantee processing of
+     * the changes for any key in timestamp order. If time ordered processing of
+     * changes for a primary key is not needed, this event can be ignored.
+     * To guarantee time ordered processing for each primary key, if the event
+     * describes move-ins, the reader of this partition needs to wait until the
+     * readers of the source partitions have processed all records with timestamps
+     * <= this PartitionEventRecord.commit_timestamp, before advancing beyond this
+     * PartitionEventRecord. If the event describes move-outs, the reader can
+     * notify the readers of the destination partitions that they can continue
+     * processing.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord.PartitionEventRecord} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.class, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder.class); + } + + // Construct using com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getCommitTimestampFieldBuilder(); + getMoveInEventsFieldBuilder(); + getMoveOutEventsFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + commitTimestamp_ = null; + if (commitTimestampBuilder_ != null) { + commitTimestampBuilder_.dispose(); + commitTimestampBuilder_ = null; + } + recordSequence_ = ""; + partitionToken_ = ""; + if (moveInEventsBuilder_ == null) { + moveInEvents_ = java.util.Collections.emptyList(); + } else { + moveInEvents_ = null; + moveInEventsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + if (moveOutEventsBuilder_ == null) { + moveOutEvents_ = java.util.Collections.emptyList(); + } else { + moveOutEvents_ = null; + moveOutEventsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_PartitionEventRecord_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord build() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord buildPartial() { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord result = + new com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord result) { + if (moveInEventsBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0)) { + moveInEvents_ = java.util.Collections.unmodifiableList(moveInEvents_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.moveInEvents_ = moveInEvents_; + } else { + result.moveInEvents_ = moveInEventsBuilder_.build(); + } + if (moveOutEventsBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0)) { + moveOutEvents_ = java.util.Collections.unmodifiableList(moveOutEvents_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.moveOutEvents_ = moveOutEvents_; + } else { + result.moveOutEvents_ = moveOutEventsBuilder_.build(); + } + } + + private void buildPartial0( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.commitTimestamp_ = + commitTimestampBuilder_ == null ? commitTimestamp_ : commitTimestampBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.recordSequence_ = recordSequence_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.partitionToken_ = partitionToken_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord other) { + if (other + == com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance()) + return this; + if (other.hasCommitTimestamp()) { + mergeCommitTimestamp(other.getCommitTimestamp()); + } + if (!other.getRecordSequence().isEmpty()) { + recordSequence_ = other.recordSequence_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getPartitionToken().isEmpty()) { + partitionToken_ = other.partitionToken_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (moveInEventsBuilder_ == null) { + if (!other.moveInEvents_.isEmpty()) { + if (moveInEvents_.isEmpty()) { + moveInEvents_ = other.moveInEvents_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureMoveInEventsIsMutable(); + moveInEvents_.addAll(other.moveInEvents_); + } + onChanged(); + } + } else { + if (!other.moveInEvents_.isEmpty()) { + if (moveInEventsBuilder_.isEmpty()) { + moveInEventsBuilder_.dispose(); + moveInEventsBuilder_ = null; + moveInEvents_ = other.moveInEvents_; + bitField0_ = (bitField0_ & ~0x00000008); + moveInEventsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getMoveInEventsFieldBuilder() + : null; + } else { + moveInEventsBuilder_.addAllMessages(other.moveInEvents_); + } + } + } + if (moveOutEventsBuilder_ == null) { + if (!other.moveOutEvents_.isEmpty()) { + if (moveOutEvents_.isEmpty()) { + moveOutEvents_ = other.moveOutEvents_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureMoveOutEventsIsMutable(); + moveOutEvents_.addAll(other.moveOutEvents_); + } + onChanged(); + } + } else { + if (!other.moveOutEvents_.isEmpty()) { + if (moveOutEventsBuilder_.isEmpty()) { + moveOutEventsBuilder_.dispose(); + moveOutEventsBuilder_ = null; + moveOutEvents_ = other.moveOutEvents_; + bitField0_ = (bitField0_ & ~0x00000010); + moveOutEventsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getMoveOutEventsFieldBuilder() + : null; + } else { + moveOutEventsBuilder_.addAllMessages(other.moveOutEvents_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage( + getCommitTimestampFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + recordSequence_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + partitionToken_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 34: + { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + .parser(), + extensionRegistry); + if (moveInEventsBuilder_ == null) { + ensureMoveInEventsIsMutable(); + moveInEvents_.add(m); + } else { + moveInEventsBuilder_.addMessage(m); + } + break; + } // case 34 + case 42: + { + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent m = + input.readMessage( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + .parser(), + extensionRegistry); + if (moveOutEventsBuilder_ == null) { + ensureMoveOutEventsIsMutable(); + moveOutEvents_.add(m); + } else { + moveOutEventsBuilder_.addMessage(m); + } + break; + } // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.Timestamp commitTimestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + commitTimestampBuilder_; + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return Whether the commitTimestamp field is set. + */ + public boolean hasCommitTimestamp() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + * + * @return The commitTimestamp. + */ + public com.google.protobuf.Timestamp getCommitTimestamp() { + if (commitTimestampBuilder_ == null) { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } else { + return commitTimestampBuilder_.getMessage(); + } + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder setCommitTimestamp(com.google.protobuf.Timestamp value) { + if (commitTimestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + commitTimestamp_ = value; + } else { + commitTimestampBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder setCommitTimestamp(com.google.protobuf.Timestamp.Builder builderForValue) { + if (commitTimestampBuilder_ == null) { + commitTimestamp_ = builderForValue.build(); + } else { + commitTimestampBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder mergeCommitTimestamp(com.google.protobuf.Timestamp value) { + if (commitTimestampBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && commitTimestamp_ != null + && commitTimestamp_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getCommitTimestampBuilder().mergeFrom(value); + } else { + commitTimestamp_ = value; + } + } else { + commitTimestampBuilder_.mergeFrom(value); + } + if (commitTimestamp_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public Builder clearCommitTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); + commitTimestamp_ = null; + if (commitTimestampBuilder_ != null) { + commitTimestampBuilder_.dispose(); + commitTimestampBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public com.google.protobuf.Timestamp.Builder getCommitTimestampBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getCommitTimestampFieldBuilder().getBuilder(); + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + public com.google.protobuf.TimestampOrBuilder getCommitTimestampOrBuilder() { + if (commitTimestampBuilder_ != null) { + return commitTimestampBuilder_.getMessageOrBuilder(); + } else { + return commitTimestamp_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : commitTimestamp_; + } + } + + /** + * + * + *
+       * Indicates the commit timestamp at which the key range change occurred.
+       * DataChangeRecord.commit_timestamps,
+       * PartitionStartRecord.start_timestamps,
+       * PartitionEventRecord.commit_timestamps, and
+       * PartitionEndRecord.end_timestamps can have the same value in the same
+       * partition.
+       * 
+ * + * .google.protobuf.Timestamp commit_timestamp = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getCommitTimestampFieldBuilder() { + if (commitTimestampBuilder_ == null) { + commitTimestampBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getCommitTimestamp(), getParentForChildren(), isClean()); + commitTimestamp_ = null; + } + return commitTimestampBuilder_; + } + + private java.lang.Object recordSequence_ = ""; + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return The recordSequence. + */ + public java.lang.String getRecordSequence() { + java.lang.Object ref = recordSequence_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + recordSequence_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return The bytes for recordSequence. + */ + public com.google.protobuf.ByteString getRecordSequenceBytes() { + java.lang.Object ref = recordSequence_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + recordSequence_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequence(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @return This builder for chaining. + */ + public Builder clearRecordSequence() { + recordSequence_ = getDefaultInstance().getRecordSequence(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * + * + *
+       * Record sequence numbers are unique and monotonically increasing (but not
+       * necessarily contiguous) for a specific timestamp across record
+       * types in the same partition. To guarantee ordered processing, the reader
+       * should process records (of potentially different types) in
+       * record_sequence order for a specific timestamp in the same partition.
+       * 
+ * + * string record_sequence = 2; + * + * @param value The bytes for recordSequence to set. + * @return This builder for chaining. + */ + public Builder setRecordSequenceBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + recordSequence_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object partitionToken_ = ""; + + /** + * + * + *
+       * Unique partition identifier describing the partition this event
+       * occurred on.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEventRecord.
+       * 
+ * + * string partition_token = 3; + * + * @return The partitionToken. + */ + public java.lang.String getPartitionToken() { + java.lang.Object ref = partitionToken_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + partitionToken_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+       * Unique partition identifier describing the partition this event
+       * occurred on.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEventRecord.
+       * 
+ * + * string partition_token = 3; + * + * @return The bytes for partitionToken. + */ + public com.google.protobuf.ByteString getPartitionTokenBytes() { + java.lang.Object ref = partitionToken_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + partitionToken_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+       * Unique partition identifier describing the partition this event
+       * occurred on.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEventRecord.
+       * 
+ * + * string partition_token = 3; + * + * @param value The partitionToken to set. + * @return This builder for chaining. + */ + public Builder setPartitionToken(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + partitionToken_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifier describing the partition this event
+       * occurred on.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEventRecord.
+       * 
+ * + * string partition_token = 3; + * + * @return This builder for chaining. + */ + public Builder clearPartitionToken() { + partitionToken_ = getDefaultInstance().getPartitionToken(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + + /** + * + * + *
+       * Unique partition identifier describing the partition this event
+       * occurred on.
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]
+       * is equal to the partition token of the change stream partition currently
+       * queried to return this PartitionEventRecord.
+       * 
+ * + * string partition_token = 3; + * + * @param value The bytes for partitionToken to set. + * @return This builder for chaining. + */ + public Builder setPartitionTokenBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + partitionToken_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent> + moveInEvents_ = java.util.Collections.emptyList(); + + private void ensureMoveInEventsIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + moveInEvents_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent>( + moveInEvents_); + bitField0_ |= 0x00000008; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder> + moveInEventsBuilder_; + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent> + getMoveInEventsList() { + if (moveInEventsBuilder_ == null) { + return java.util.Collections.unmodifiableList(moveInEvents_); + } else { + return moveInEventsBuilder_.getMessageList(); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public int getMoveInEventsCount() { + if (moveInEventsBuilder_ == null) { + return moveInEvents_.size(); + } else { + return moveInEventsBuilder_.getCount(); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + getMoveInEvents(int index) { + if (moveInEventsBuilder_ == null) { + return moveInEvents_.get(index); + } else { + return moveInEventsBuilder_.getMessage(index); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder setMoveInEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent value) { + if (moveInEventsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMoveInEventsIsMutable(); + moveInEvents_.set(index, value); + onChanged(); + } else { + moveInEventsBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder setMoveInEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + builderForValue) { + if (moveInEventsBuilder_ == null) { + ensureMoveInEventsIsMutable(); + moveInEvents_.set(index, builderForValue.build()); + onChanged(); + } else { + moveInEventsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder addMoveInEvents( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent value) { + if (moveInEventsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMoveInEventsIsMutable(); + moveInEvents_.add(value); + onChanged(); + } else { + moveInEventsBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder addMoveInEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent value) { + if (moveInEventsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMoveInEventsIsMutable(); + moveInEvents_.add(index, value); + onChanged(); + } else { + moveInEventsBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder addMoveInEvents( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + builderForValue) { + if (moveInEventsBuilder_ == null) { + ensureMoveInEventsIsMutable(); + moveInEvents_.add(builderForValue.build()); + onChanged(); + } else { + moveInEventsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder addMoveInEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + builderForValue) { + if (moveInEventsBuilder_ == null) { + ensureMoveInEventsIsMutable(); + moveInEvents_.add(index, builderForValue.build()); + onChanged(); + } else { + moveInEventsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder addAllMoveInEvents( + java.lang.Iterable< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent> + values) { + if (moveInEventsBuilder_ == null) { + ensureMoveInEventsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, moveInEvents_); + onChanged(); + } else { + moveInEventsBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder clearMoveInEvents() { + if (moveInEventsBuilder_ == null) { + moveInEvents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + } else { + moveInEventsBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public Builder removeMoveInEvents(int index) { + if (moveInEventsBuilder_ == null) { + ensureMoveInEventsIsMutable(); + moveInEvents_.remove(index); + onChanged(); + } else { + moveInEventsBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + getMoveInEventsBuilder(int index) { + return getMoveInEventsFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder + getMoveInEventsOrBuilder(int index) { + if (moveInEventsBuilder_ == null) { + return moveInEvents_.get(index); + } else { + return moveInEventsBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + .MoveInEventOrBuilder> + getMoveInEventsOrBuilderList() { + if (moveInEventsBuilder_ != null) { + return moveInEventsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(moveInEvents_); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + addMoveInEventsBuilder() { + return getMoveInEventsFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + .getDefaultInstance()); + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder + addMoveInEventsBuilder(int index) { + return getMoveInEventsFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent + .getDefaultInstance()); + } + + /** + * + * + *
+       * Set when one or more key ranges are moved into the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved into partition (P1) from partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_in_events {
+       *     source_partition_token: "P2"
+       *   }
+       *   move_in_events {
+       *     source_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_out_events {
+       *     destination_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent move_in_events = 4; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder> + getMoveInEventsBuilderList() { + return getMoveInEventsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEventOrBuilder> + getMoveInEventsFieldBuilder() { + if (moveInEventsBuilder_ == null) { + moveInEventsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveInEvent.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + .MoveInEventOrBuilder>( + moveInEvents_, + ((bitField0_ & 0x00000008) != 0), + getParentForChildren(), + isClean()); + moveInEvents_ = null; + } + return moveInEventsBuilder_; + } + + private java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent> + moveOutEvents_ = java.util.Collections.emptyList(); + + private void ensureMoveOutEventsIsMutable() { + if (!((bitField0_ & 0x00000010) != 0)) { + moveOutEvents_ = + new java.util.ArrayList< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent>( + moveOutEvents_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder> + moveOutEventsBuilder_; + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent> + getMoveOutEventsList() { + if (moveOutEventsBuilder_ == null) { + return java.util.Collections.unmodifiableList(moveOutEvents_); + } else { + return moveOutEventsBuilder_.getMessageList(); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public int getMoveOutEventsCount() { + if (moveOutEventsBuilder_ == null) { + return moveOutEvents_.size(); + } else { + return moveOutEventsBuilder_.getCount(); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + getMoveOutEvents(int index) { + if (moveOutEventsBuilder_ == null) { + return moveOutEvents_.get(index); + } else { + return moveOutEventsBuilder_.getMessage(index); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder setMoveOutEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent value) { + if (moveOutEventsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMoveOutEventsIsMutable(); + moveOutEvents_.set(index, value); + onChanged(); + } else { + moveOutEventsBuilder_.setMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder setMoveOutEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + builderForValue) { + if (moveOutEventsBuilder_ == null) { + ensureMoveOutEventsIsMutable(); + moveOutEvents_.set(index, builderForValue.build()); + onChanged(); + } else { + moveOutEventsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder addMoveOutEvents( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent value) { + if (moveOutEventsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMoveOutEventsIsMutable(); + moveOutEvents_.add(value); + onChanged(); + } else { + moveOutEventsBuilder_.addMessage(value); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder addMoveOutEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent value) { + if (moveOutEventsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureMoveOutEventsIsMutable(); + moveOutEvents_.add(index, value); + onChanged(); + } else { + moveOutEventsBuilder_.addMessage(index, value); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder addMoveOutEvents( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + builderForValue) { + if (moveOutEventsBuilder_ == null) { + ensureMoveOutEventsIsMutable(); + moveOutEvents_.add(builderForValue.build()); + onChanged(); + } else { + moveOutEventsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder addMoveOutEvents( + int index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + builderForValue) { + if (moveOutEventsBuilder_ == null) { + ensureMoveOutEventsIsMutable(); + moveOutEvents_.add(index, builderForValue.build()); + onChanged(); + } else { + moveOutEventsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder addAllMoveOutEvents( + java.lang.Iterable< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent> + values) { + if (moveOutEventsBuilder_ == null) { + ensureMoveOutEventsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, moveOutEvents_); + onChanged(); + } else { + moveOutEventsBuilder_.addAllMessages(values); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder clearMoveOutEvents() { + if (moveOutEventsBuilder_ == null) { + moveOutEvents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + moveOutEventsBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public Builder removeMoveOutEvents(int index) { + if (moveOutEventsBuilder_ == null) { + ensureMoveOutEventsIsMutable(); + moveOutEvents_.remove(index); + onChanged(); + } else { + moveOutEventsBuilder_.remove(index); + } + return this; + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + getMoveOutEventsBuilder(int index) { + return getMoveOutEventsFieldBuilder().getBuilder(index); + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder + getMoveOutEventsOrBuilder(int index) { + if (moveOutEventsBuilder_ == null) { + return moveOutEvents_.get(index); + } else { + return moveOutEventsBuilder_.getMessageOrBuilder(index); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public java.util.List< + ? extends + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + .MoveOutEventOrBuilder> + getMoveOutEventsOrBuilderList() { + if (moveOutEventsBuilder_ != null) { + return moveOutEventsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(moveOutEvents_); + } + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + addMoveOutEventsBuilder() { + return getMoveOutEventsFieldBuilder() + .addBuilder( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + .getDefaultInstance()); + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder + addMoveOutEventsBuilder(int index) { + return getMoveOutEventsFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + .getDefaultInstance()); + } + + /** + * + * + *
+       * Set when one or more key ranges are moved out of the change stream
+       * partition identified by
+       * [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token].
+       *
+       * Example: Two key ranges are moved out of partition (P1) to partition (P2)
+       * and partition (P3) in a single transaction at timestamp T.
+       *
+       * The PartitionEventRecord returned in P1 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P1"
+       *   move_out_events {
+       *     destination_partition_token: "P2"
+       *   }
+       *   move_out_events {
+       *     destination_partition_token: "P3"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P2 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P2"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       *
+       * The PartitionEventRecord returned in P3 will reflect the move as:
+       *
+       * PartitionEventRecord {
+       *   commit_timestamp: T
+       *   partition_token: "P3"
+       *   move_in_events {
+       *     source_partition_token: "P1"
+       *   }
+       * }
+       * 
+ * + * + * repeated .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent move_out_events = 5; + * + */ + public java.util.List< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder> + getMoveOutEventsBuilderList() { + return getMoveOutEventsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEventOrBuilder> + getMoveOutEventsFieldBuilder() { + if (moveOutEventsBuilder_ == null) { + moveOutEventsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent + .Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + .MoveOutEventOrBuilder>( + moveOutEvents_, + ((bitField0_ & 0x00000010) != 0), + getParentForChildren(), + isClean()); + moveOutEvents_ = null; + } + return moveOutEventsBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) + private static final com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord(); + } + + public static com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PartitionEventRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int recordCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object record_; + + public enum RecordCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + DATA_CHANGE_RECORD(1), + HEARTBEAT_RECORD(2), + PARTITION_START_RECORD(3), + PARTITION_END_RECORD(4), + PARTITION_EVENT_RECORD(5), + RECORD_NOT_SET(0); + private final int value; + + private RecordCase(int value) { + this.value = value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static RecordCase valueOf(int value) { + return forNumber(value); + } + + public static RecordCase forNumber(int value) { + switch (value) { + case 1: + return DATA_CHANGE_RECORD; + case 2: + return HEARTBEAT_RECORD; + case 3: + return PARTITION_START_RECORD; + case 4: + return PARTITION_END_RECORD; + case 5: + return PARTITION_EVENT_RECORD; + case 0: + return RECORD_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public RecordCase getRecordCase() { + return RecordCase.forNumber(recordCase_); + } + + public static final int DATA_CHANGE_RECORD_FIELD_NUMBER = 1; + + /** + * + * + *
+   * Data change record describing a data change for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + * + * @return Whether the dataChangeRecord field is set. + */ + @java.lang.Override + public boolean hasDataChangeRecord() { + return recordCase_ == 1; + } + + /** + * + * + *
+   * Data change record describing a data change for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + * + * @return The dataChangeRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord getDataChangeRecord() { + if (recordCase_ == 1) { + return (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } + + /** + * + * + *
+   * Data change record describing a data change for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder + getDataChangeRecordOrBuilder() { + if (recordCase_ == 1) { + return (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } + + public static final int HEARTBEAT_RECORD_FIELD_NUMBER = 2; + + /** + * + * + *
+   * Heartbeat record describing a heartbeat for a change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + * + * @return Whether the heartbeatRecord field is set. + */ + @java.lang.Override + public boolean hasHeartbeatRecord() { + return recordCase_ == 2; + } + + /** + * + * + *
+   * Heartbeat record describing a heartbeat for a change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + * + * @return The heartbeatRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord getHeartbeatRecord() { + if (recordCase_ == 2) { + return (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } + + /** + * + * + *
+   * Heartbeat record describing a heartbeat for a change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder + getHeartbeatRecordOrBuilder() { + if (recordCase_ == 2) { + return (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } + + public static final int PARTITION_START_RECORD_FIELD_NUMBER = 3; + + /** + * + * + *
+   * Partition start record describing a new change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + * + * @return Whether the partitionStartRecord field is set. + */ + @java.lang.Override + public boolean hasPartitionStartRecord() { + return recordCase_ == 3; + } + + /** + * + * + *
+   * Partition start record describing a new change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + * + * @return The partitionStartRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord getPartitionStartRecord() { + if (recordCase_ == 3) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } + + /** + * + * + *
+   * Partition start record describing a new change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder + getPartitionStartRecordOrBuilder() { + if (recordCase_ == 3) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } + + public static final int PARTITION_END_RECORD_FIELD_NUMBER = 4; + + /** + * + * + *
+   * Partition end record describing a terminated change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + * @return Whether the partitionEndRecord field is set. + */ + @java.lang.Override + public boolean hasPartitionEndRecord() { + return recordCase_ == 4; + } + + /** + * + * + *
+   * Partition end record describing a terminated change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + * @return The partitionEndRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord getPartitionEndRecord() { + if (recordCase_ == 4) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } + + /** + * + * + *
+   * Partition end record describing a terminated change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder + getPartitionEndRecordOrBuilder() { + if (recordCase_ == 4) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } + + public static final int PARTITION_EVENT_RECORD_FIELD_NUMBER = 5; + + /** + * + * + *
+   * Partition event record describing key range changes for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + * + * @return Whether the partitionEventRecord field is set. + */ + @java.lang.Override + public boolean hasPartitionEventRecord() { + return recordCase_ == 5; + } + + /** + * + * + *
+   * Partition event record describing key range changes for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + * + * @return The partitionEventRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord getPartitionEventRecord() { + if (recordCase_ == 5) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } + + /** + * + * + *
+   * Partition event record describing key range changes for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder + getPartitionEventRecordOrBuilder() { + if (recordCase_ == 5) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (recordCase_ == 1) { + output.writeMessage(1, (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_); + } + if (recordCase_ == 2) { + output.writeMessage(2, (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_); + } + if (recordCase_ == 3) { + output.writeMessage( + 3, (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_); + } + if (recordCase_ == 4) { + output.writeMessage(4, (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_); + } + if (recordCase_ == 5) { + output.writeMessage( + 5, (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (recordCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_); + } + if (recordCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 2, (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_); + } + if (recordCase_ == 3) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 3, (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_); + } + if (recordCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_); + } + if (recordCase_ == 5) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 5, (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ChangeStreamRecord)) { + return super.equals(obj); + } + com.google.spanner.v1.ChangeStreamRecord other = (com.google.spanner.v1.ChangeStreamRecord) obj; + + if (!getRecordCase().equals(other.getRecordCase())) return false; + switch (recordCase_) { + case 1: + if (!getDataChangeRecord().equals(other.getDataChangeRecord())) return false; + break; + case 2: + if (!getHeartbeatRecord().equals(other.getHeartbeatRecord())) return false; + break; + case 3: + if (!getPartitionStartRecord().equals(other.getPartitionStartRecord())) return false; + break; + case 4: + if (!getPartitionEndRecord().equals(other.getPartitionEndRecord())) return false; + break; + case 5: + if (!getPartitionEventRecord().equals(other.getPartitionEventRecord())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (recordCase_) { + case 1: + hash = (37 * hash) + DATA_CHANGE_RECORD_FIELD_NUMBER; + hash = (53 * hash) + getDataChangeRecord().hashCode(); + break; + case 2: + hash = (37 * hash) + HEARTBEAT_RECORD_FIELD_NUMBER; + hash = (53 * hash) + getHeartbeatRecord().hashCode(); + break; + case 3: + hash = (37 * hash) + PARTITION_START_RECORD_FIELD_NUMBER; + hash = (53 * hash) + getPartitionStartRecord().hashCode(); + break; + case 4: + hash = (37 * hash) + PARTITION_END_RECORD_FIELD_NUMBER; + hash = (53 * hash) + getPartitionEndRecord().hashCode(); + break; + case 5: + hash = (37 * hash) + PARTITION_EVENT_RECORD_FIELD_NUMBER; + hash = (53 * hash) + getPartitionEventRecord().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ChangeStreamRecord parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.spanner.v1.ChangeStreamRecord prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+   * Spanner Change Streams enable customers to capture and stream out changes to
+   * their Spanner databases in real-time. A change stream
+   * can be created with option partition_mode='IMMUTABLE_KEY_RANGE' or
+   * partition_mode='MUTABLE_KEY_RANGE'.
+   *
+   * This message is only used in Change Streams created with the option
+   * partition_mode='MUTABLE_KEY_RANGE'. Spanner automatically creates a special
+   * Table-Valued Function (TVF) along with each Change Streams. The function
+   * provides access to the change stream's records. The function is named
+   * READ_<change_stream_name> (where <change_stream_name> is the
+   * name of the change stream), and it returns a table with only one column
+   * called ChangeRecord.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ChangeStreamRecord} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ChangeStreamRecord) + com.google.spanner.v1.ChangeStreamRecordOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ChangeStreamRecord.class, + com.google.spanner.v1.ChangeStreamRecord.Builder.class); + } + + // Construct using com.google.spanner.v1.ChangeStreamRecord.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (dataChangeRecordBuilder_ != null) { + dataChangeRecordBuilder_.clear(); + } + if (heartbeatRecordBuilder_ != null) { + heartbeatRecordBuilder_.clear(); + } + if (partitionStartRecordBuilder_ != null) { + partitionStartRecordBuilder_.clear(); + } + if (partitionEndRecordBuilder_ != null) { + partitionEndRecordBuilder_.clear(); + } + if (partitionEventRecordBuilder_ != null) { + partitionEventRecordBuilder_.clear(); + } + recordCase_ = 0; + record_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.ChangeStreamProto + .internal_static_google_spanner_v1_ChangeStreamRecord_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord getDefaultInstanceForType() { + return com.google.spanner.v1.ChangeStreamRecord.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord build() { + com.google.spanner.v1.ChangeStreamRecord result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord buildPartial() { + com.google.spanner.v1.ChangeStreamRecord result = + new com.google.spanner.v1.ChangeStreamRecord(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.v1.ChangeStreamRecord result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.spanner.v1.ChangeStreamRecord result) { + result.recordCase_ = recordCase_; + result.record_ = this.record_; + if (recordCase_ == 1 && dataChangeRecordBuilder_ != null) { + result.record_ = dataChangeRecordBuilder_.build(); + } + if (recordCase_ == 2 && heartbeatRecordBuilder_ != null) { + result.record_ = heartbeatRecordBuilder_.build(); + } + if (recordCase_ == 3 && partitionStartRecordBuilder_ != null) { + result.record_ = partitionStartRecordBuilder_.build(); + } + if (recordCase_ == 4 && partitionEndRecordBuilder_ != null) { + result.record_ = partitionEndRecordBuilder_.build(); + } + if (recordCase_ == 5 && partitionEventRecordBuilder_ != null) { + result.record_ = partitionEventRecordBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ChangeStreamRecord) { + return mergeFrom((com.google.spanner.v1.ChangeStreamRecord) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ChangeStreamRecord other) { + if (other == com.google.spanner.v1.ChangeStreamRecord.getDefaultInstance()) return this; + switch (other.getRecordCase()) { + case DATA_CHANGE_RECORD: + { + mergeDataChangeRecord(other.getDataChangeRecord()); + break; + } + case HEARTBEAT_RECORD: + { + mergeHeartbeatRecord(other.getHeartbeatRecord()); + break; + } + case PARTITION_START_RECORD: + { + mergePartitionStartRecord(other.getPartitionStartRecord()); + break; + } + case PARTITION_END_RECORD: + { + mergePartitionEndRecord(other.getPartitionEndRecord()); + break; + } + case PARTITION_EVENT_RECORD: + { + mergePartitionEventRecord(other.getPartitionEventRecord()); + break; + } + case RECORD_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage( + getDataChangeRecordFieldBuilder().getBuilder(), extensionRegistry); + recordCase_ = 1; + break; + } // case 10 + case 18: + { + input.readMessage(getHeartbeatRecordFieldBuilder().getBuilder(), extensionRegistry); + recordCase_ = 2; + break; + } // case 18 + case 26: + { + input.readMessage( + getPartitionStartRecordFieldBuilder().getBuilder(), extensionRegistry); + recordCase_ = 3; + break; + } // case 26 + case 34: + { + input.readMessage( + getPartitionEndRecordFieldBuilder().getBuilder(), extensionRegistry); + recordCase_ = 4; + break; + } // case 34 + case 42: + { + input.readMessage( + getPartitionEventRecordFieldBuilder().getBuilder(), extensionRegistry); + recordCase_ = 5; + break; + } // case 42 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int recordCase_ = 0; + private java.lang.Object record_; + + public RecordCase getRecordCase() { + return RecordCase.forNumber(recordCase_); + } + + public Builder clearRecord() { + recordCase_ = 0; + record_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder> + dataChangeRecordBuilder_; + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + * + * @return Whether the dataChangeRecord field is set. + */ + @java.lang.Override + public boolean hasDataChangeRecord() { + return recordCase_ == 1; + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + * + * @return The dataChangeRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord getDataChangeRecord() { + if (dataChangeRecordBuilder_ == null) { + if (recordCase_ == 1) { + return (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } else { + if (recordCase_ == 1) { + return dataChangeRecordBuilder_.getMessage(); + } + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + public Builder setDataChangeRecord( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord value) { + if (dataChangeRecordBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + record_ = value; + onChanged(); + } else { + dataChangeRecordBuilder_.setMessage(value); + } + recordCase_ = 1; + return this; + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + public Builder setDataChangeRecord( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder builderForValue) { + if (dataChangeRecordBuilder_ == null) { + record_ = builderForValue.build(); + onChanged(); + } else { + dataChangeRecordBuilder_.setMessage(builderForValue.build()); + } + recordCase_ = 1; + return this; + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + public Builder mergeDataChangeRecord( + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord value) { + if (dataChangeRecordBuilder_ == null) { + if (recordCase_ == 1 + && record_ + != com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance()) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.newBuilder( + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_) + .mergeFrom(value) + .buildPartial(); + } else { + record_ = value; + } + onChanged(); + } else { + if (recordCase_ == 1) { + dataChangeRecordBuilder_.mergeFrom(value); + } else { + dataChangeRecordBuilder_.setMessage(value); + } + } + recordCase_ = 1; + return this; + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + public Builder clearDataChangeRecord() { + if (dataChangeRecordBuilder_ == null) { + if (recordCase_ == 1) { + recordCase_ = 0; + record_ = null; + onChanged(); + } + } else { + if (recordCase_ == 1) { + recordCase_ = 0; + record_ = null; + } + dataChangeRecordBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder + getDataChangeRecordBuilder() { + return getDataChangeRecordFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder + getDataChangeRecordOrBuilder() { + if ((recordCase_ == 1) && (dataChangeRecordBuilder_ != null)) { + return dataChangeRecordBuilder_.getMessageOrBuilder(); + } else { + if (recordCase_ == 1) { + return (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Data change record describing a data change for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder> + getDataChangeRecordFieldBuilder() { + if (dataChangeRecordBuilder_ == null) { + if (!(recordCase_ == 1)) { + record_ = com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.getDefaultInstance(); + } + dataChangeRecordBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder>( + (com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord) record_, + getParentForChildren(), + isClean()); + record_ = null; + } + recordCase_ = 1; + onChanged(); + return dataChangeRecordBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder> + heartbeatRecordBuilder_; + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + * + * @return Whether the heartbeatRecord field is set. + */ + @java.lang.Override + public boolean hasHeartbeatRecord() { + return recordCase_ == 2; + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + * + * @return The heartbeatRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord getHeartbeatRecord() { + if (heartbeatRecordBuilder_ == null) { + if (recordCase_ == 2) { + return (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } else { + if (recordCase_ == 2) { + return heartbeatRecordBuilder_.getMessage(); + } + return com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + public Builder setHeartbeatRecord( + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord value) { + if (heartbeatRecordBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + record_ = value; + onChanged(); + } else { + heartbeatRecordBuilder_.setMessage(value); + } + recordCase_ = 2; + return this; + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + public Builder setHeartbeatRecord( + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder builderForValue) { + if (heartbeatRecordBuilder_ == null) { + record_ = builderForValue.build(); + onChanged(); + } else { + heartbeatRecordBuilder_.setMessage(builderForValue.build()); + } + recordCase_ = 2; + return this; + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + public Builder mergeHeartbeatRecord( + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord value) { + if (heartbeatRecordBuilder_ == null) { + if (recordCase_ == 2 + && record_ + != com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance()) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.newBuilder( + (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_) + .mergeFrom(value) + .buildPartial(); + } else { + record_ = value; + } + onChanged(); + } else { + if (recordCase_ == 2) { + heartbeatRecordBuilder_.mergeFrom(value); + } else { + heartbeatRecordBuilder_.setMessage(value); + } + } + recordCase_ = 2; + return this; + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + public Builder clearHeartbeatRecord() { + if (heartbeatRecordBuilder_ == null) { + if (recordCase_ == 2) { + recordCase_ = 0; + record_ = null; + onChanged(); + } + } else { + if (recordCase_ == 2) { + recordCase_ = 0; + record_ = null; + } + heartbeatRecordBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder + getHeartbeatRecordBuilder() { + return getHeartbeatRecordFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder + getHeartbeatRecordOrBuilder() { + if ((recordCase_ == 2) && (heartbeatRecordBuilder_ != null)) { + return heartbeatRecordBuilder_.getMessageOrBuilder(); + } else { + if (recordCase_ == 2) { + return (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Heartbeat record describing a heartbeat for a change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder> + getHeartbeatRecordFieldBuilder() { + if (heartbeatRecordBuilder_ == null) { + if (!(recordCase_ == 2)) { + record_ = com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.getDefaultInstance(); + } + heartbeatRecordBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder>( + (com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord) record_, + getParentForChildren(), + isClean()); + record_ = null; + } + recordCase_ = 2; + onChanged(); + return heartbeatRecordBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder> + partitionStartRecordBuilder_; + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + * + * @return Whether the partitionStartRecord field is set. + */ + @java.lang.Override + public boolean hasPartitionStartRecord() { + return recordCase_ == 3; + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + * + * @return The partitionStartRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord getPartitionStartRecord() { + if (partitionStartRecordBuilder_ == null) { + if (recordCase_ == 3) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } else { + if (recordCase_ == 3) { + return partitionStartRecordBuilder_.getMessage(); + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + public Builder setPartitionStartRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord value) { + if (partitionStartRecordBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + record_ = value; + onChanged(); + } else { + partitionStartRecordBuilder_.setMessage(value); + } + recordCase_ = 3; + return this; + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + public Builder setPartitionStartRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder builderForValue) { + if (partitionStartRecordBuilder_ == null) { + record_ = builderForValue.build(); + onChanged(); + } else { + partitionStartRecordBuilder_.setMessage(builderForValue.build()); + } + recordCase_ = 3; + return this; + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + public Builder mergePartitionStartRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord value) { + if (partitionStartRecordBuilder_ == null) { + if (recordCase_ == 3 + && record_ + != com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord + .getDefaultInstance()) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.newBuilder( + (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_) + .mergeFrom(value) + .buildPartial(); + } else { + record_ = value; + } + onChanged(); + } else { + if (recordCase_ == 3) { + partitionStartRecordBuilder_.mergeFrom(value); + } else { + partitionStartRecordBuilder_.setMessage(value); + } + } + recordCase_ = 3; + return this; + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + public Builder clearPartitionStartRecord() { + if (partitionStartRecordBuilder_ == null) { + if (recordCase_ == 3) { + recordCase_ = 0; + record_ = null; + onChanged(); + } + } else { + if (recordCase_ == 3) { + recordCase_ = 0; + record_ = null; + } + partitionStartRecordBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder + getPartitionStartRecordBuilder() { + return getPartitionStartRecordFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder + getPartitionStartRecordOrBuilder() { + if ((recordCase_ == 3) && (partitionStartRecordBuilder_ != null)) { + return partitionStartRecordBuilder_.getMessageOrBuilder(); + } else { + if (recordCase_ == 3) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Partition start record describing a new change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder> + getPartitionStartRecordFieldBuilder() { + if (partitionStartRecordBuilder_ == null) { + if (!(recordCase_ == 3)) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.getDefaultInstance(); + } + partitionStartRecordBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder>( + (com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord) record_, + getParentForChildren(), + isClean()); + record_ = null; + } + recordCase_ = 3; + onChanged(); + return partitionStartRecordBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder> + partitionEndRecordBuilder_; + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + * + * @return Whether the partitionEndRecord field is set. + */ + @java.lang.Override + public boolean hasPartitionEndRecord() { + return recordCase_ == 4; + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + * + * @return The partitionEndRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord getPartitionEndRecord() { + if (partitionEndRecordBuilder_ == null) { + if (recordCase_ == 4) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } else { + if (recordCase_ == 4) { + return partitionEndRecordBuilder_.getMessage(); + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + public Builder setPartitionEndRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord value) { + if (partitionEndRecordBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + record_ = value; + onChanged(); + } else { + partitionEndRecordBuilder_.setMessage(value); + } + recordCase_ = 4; + return this; + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + public Builder setPartitionEndRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder builderForValue) { + if (partitionEndRecordBuilder_ == null) { + record_ = builderForValue.build(); + onChanged(); + } else { + partitionEndRecordBuilder_.setMessage(builderForValue.build()); + } + recordCase_ = 4; + return this; + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + public Builder mergePartitionEndRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord value) { + if (partitionEndRecordBuilder_ == null) { + if (recordCase_ == 4 + && record_ + != com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord + .getDefaultInstance()) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.newBuilder( + (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_) + .mergeFrom(value) + .buildPartial(); + } else { + record_ = value; + } + onChanged(); + } else { + if (recordCase_ == 4) { + partitionEndRecordBuilder_.mergeFrom(value); + } else { + partitionEndRecordBuilder_.setMessage(value); + } + } + recordCase_ = 4; + return this; + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + public Builder clearPartitionEndRecord() { + if (partitionEndRecordBuilder_ == null) { + if (recordCase_ == 4) { + recordCase_ = 0; + record_ = null; + onChanged(); + } + } else { + if (recordCase_ == 4) { + recordCase_ = 0; + record_ = null; + } + partitionEndRecordBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder + getPartitionEndRecordBuilder() { + return getPartitionEndRecordFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder + getPartitionEndRecordOrBuilder() { + if ((recordCase_ == 4) && (partitionEndRecordBuilder_ != null)) { + return partitionEndRecordBuilder_.getMessageOrBuilder(); + } else { + if (recordCase_ == 4) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Partition end record describing a terminated change stream partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder> + getPartitionEndRecordFieldBuilder() { + if (partitionEndRecordBuilder_ == null) { + if (!(recordCase_ == 4)) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.getDefaultInstance(); + } + partitionEndRecordBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder>( + (com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord) record_, + getParentForChildren(), + isClean()); + record_ = null; + } + recordCase_ = 4; + onChanged(); + return partitionEndRecordBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder> + partitionEventRecordBuilder_; + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + * + * @return Whether the partitionEventRecord field is set. + */ + @java.lang.Override + public boolean hasPartitionEventRecord() { + return recordCase_ == 5; + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + * + * @return The partitionEventRecord. + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord getPartitionEventRecord() { + if (partitionEventRecordBuilder_ == null) { + if (recordCase_ == 5) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } else { + if (recordCase_ == 5) { + return partitionEventRecordBuilder_.getMessage(); + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + public Builder setPartitionEventRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord value) { + if (partitionEventRecordBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + record_ = value; + onChanged(); + } else { + partitionEventRecordBuilder_.setMessage(value); + } + recordCase_ = 5; + return this; + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + public Builder setPartitionEventRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder builderForValue) { + if (partitionEventRecordBuilder_ == null) { + record_ = builderForValue.build(); + onChanged(); + } else { + partitionEventRecordBuilder_.setMessage(builderForValue.build()); + } + recordCase_ = 5; + return this; + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + public Builder mergePartitionEventRecord( + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord value) { + if (partitionEventRecordBuilder_ == null) { + if (recordCase_ == 5 + && record_ + != com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord + .getDefaultInstance()) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.newBuilder( + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_) + .mergeFrom(value) + .buildPartial(); + } else { + record_ = value; + } + onChanged(); + } else { + if (recordCase_ == 5) { + partitionEventRecordBuilder_.mergeFrom(value); + } else { + partitionEventRecordBuilder_.setMessage(value); + } + } + recordCase_ = 5; + return this; + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + public Builder clearPartitionEventRecord() { + if (partitionEventRecordBuilder_ == null) { + if (recordCase_ == 5) { + recordCase_ = 0; + record_ = null; + onChanged(); + } + } else { + if (recordCase_ == 5) { + recordCase_ = 0; + record_ = null; + } + partitionEventRecordBuilder_.clear(); + } + return this; + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder + getPartitionEventRecordBuilder() { + return getPartitionEventRecordFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder + getPartitionEventRecordOrBuilder() { + if ((recordCase_ == 5) && (partitionEventRecordBuilder_ != null)) { + return partitionEventRecordBuilder_.getMessageOrBuilder(); + } else { + if (recordCase_ == 5) { + return (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_; + } + return com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } + } + + /** + * + * + *
+     * Partition event record describing key range changes for a change stream
+     * partition.
+     * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder> + getPartitionEventRecordFieldBuilder() { + if (partitionEventRecordBuilder_ == null) { + if (!(recordCase_ == 5)) { + record_ = + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.getDefaultInstance(); + } + partitionEventRecordBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.Builder, + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder>( + (com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord) record_, + getParentForChildren(), + isClean()); + record_ = null; + } + recordCase_ = 5; + onChanged(); + return partitionEventRecordBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ChangeStreamRecord) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ChangeStreamRecord) + private static final com.google.spanner.v1.ChangeStreamRecord DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ChangeStreamRecord(); + } + + public static com.google.spanner.v1.ChangeStreamRecord getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ChangeStreamRecord parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ChangeStreamRecord getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamRecordOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamRecordOrBuilder.java new file mode 100644 index 00000000000..f98c16cad35 --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ChangeStreamRecordOrBuilder.java @@ -0,0 +1,228 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/change_stream.proto + +// Protobuf Java Version: 3.25.8 +package com.google.spanner.v1; + +public interface ChangeStreamRecordOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ChangeStreamRecord) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Data change record describing a data change for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + * + * @return Whether the dataChangeRecord field is set. + */ + boolean hasDataChangeRecord(); + + /** + * + * + *
+   * Data change record describing a data change for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + * + * @return The dataChangeRecord. + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecord getDataChangeRecord(); + + /** + * + * + *
+   * Data change record describing a data change for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.DataChangeRecord data_change_record = 1; + */ + com.google.spanner.v1.ChangeStreamRecord.DataChangeRecordOrBuilder getDataChangeRecordOrBuilder(); + + /** + * + * + *
+   * Heartbeat record describing a heartbeat for a change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + * + * @return Whether the heartbeatRecord field is set. + */ + boolean hasHeartbeatRecord(); + + /** + * + * + *
+   * Heartbeat record describing a heartbeat for a change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + * + * @return The heartbeatRecord. + */ + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecord getHeartbeatRecord(); + + /** + * + * + *
+   * Heartbeat record describing a heartbeat for a change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.HeartbeatRecord heartbeat_record = 2; + */ + com.google.spanner.v1.ChangeStreamRecord.HeartbeatRecordOrBuilder getHeartbeatRecordOrBuilder(); + + /** + * + * + *
+   * Partition start record describing a new change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + * + * @return Whether the partitionStartRecord field is set. + */ + boolean hasPartitionStartRecord(); + + /** + * + * + *
+   * Partition start record describing a new change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + * + * @return The partitionStartRecord. + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecord getPartitionStartRecord(); + + /** + * + * + *
+   * Partition start record describing a new change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionStartRecord partition_start_record = 3; + * + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionStartRecordOrBuilder + getPartitionStartRecordOrBuilder(); + + /** + * + * + *
+   * Partition end record describing a terminated change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + * @return Whether the partitionEndRecord field is set. + */ + boolean hasPartitionEndRecord(); + + /** + * + * + *
+   * Partition end record describing a terminated change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + * + * @return The partitionEndRecord. + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecord getPartitionEndRecord(); + + /** + * + * + *
+   * Partition end record describing a terminated change stream partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEndRecord partition_end_record = 4; + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEndRecordOrBuilder + getPartitionEndRecordOrBuilder(); + + /** + * + * + *
+   * Partition event record describing key range changes for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + * + * @return Whether the partitionEventRecord field is set. + */ + boolean hasPartitionEventRecord(); + + /** + * + * + *
+   * Partition event record describing key range changes for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + * + * @return The partitionEventRecord. + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecord getPartitionEventRecord(); + + /** + * + * + *
+   * Partition event record describing key range changes for a change stream
+   * partition.
+   * 
+ * + * .google.spanner.v1.ChangeStreamRecord.PartitionEventRecord partition_event_record = 5; + * + */ + com.google.spanner.v1.ChangeStreamRecord.PartitionEventRecordOrBuilder + getPartitionEventRecordOrBuilder(); + + com.google.spanner.v1.ChangeStreamRecord.RecordCase getRecordCase(); +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java index 20fad71b4dd..53b0dc73282 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java index c95dae88236..a59ee4466b3 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface CommitRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java index dc0e1a3d93f..c80fd37e814 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/commit_response.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java index e41709331c8..7319b6760c0 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/commit_response.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface CommitResponseOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java index e4197fc4797..d68e82f1c35 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/commit_response.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class CommitResponseProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequest.java index cd592f0f858..73c09945452 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequestOrBuilder.java index 60855e618fa..d1cc03b399b 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CreateSessionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface CreateSessionRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequest.java index 9d652dea34d..c85d25840a9 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequestOrBuilder.java index 56efe65e573..3b9fd21702c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DeleteSessionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface DeleteSessionRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java index b05429fa588..f2802f745be 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java index bb057c8e645..25405eec0e1 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface DirectedReadOptionsOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java index 78a7452fb6e..660f2552af8 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java index 2d8fd487552..f248d5b2d0d 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ExecuteBatchDmlRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java index 531955984ee..331200367fb 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java index da9f07d75b5..476b32ea983 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ExecuteBatchDmlResponseOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java index e3512b3f04e..5c08a58d0a0 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java index 833c2c797a1..3ccde99ff82 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ExecuteSqlRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequest.java index fee861214b9..365733d9238 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequestOrBuilder.java index 0dd2c393267..3d42182345a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/GetSessionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface GetSessionRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRange.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRange.java index 42cd0e955ef..fd382b3a7ee 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRange.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRange.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/keys.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRangeOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRangeOrBuilder.java index 38e9131be1f..feab2ddf47a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRangeOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeyRangeOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/keys.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface KeyRangeOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySet.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySet.java index 3da1c876a42..74891a28554 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySet.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySet.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/keys.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySetOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySetOrBuilder.java index 0530bbe5b15..e2e423c325e 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySetOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeySetOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/keys.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface KeySetOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java index ccc937665ee..d15ec6a2792 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/KeysProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/keys.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class KeysProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java index ac312ffe128..77b18f3b134 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java index c8e0ee5ce30..a054b5e70c0 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ListSessionsRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java index 3da08c00222..84cf5b11307 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java index d0fa8ae6b1e..410a805beda 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ListSessionsResponseOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java index b4e8d0eef7a..5af42128eaf 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java index b982fd51cc0..108138be840 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface MultiplexedSessionPrecommitTokenOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Mutation.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Mutation.java index 096be0342e3..f3a0f904e71 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Mutation.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Mutation.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/mutation.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationOrBuilder.java index 85363a25c1c..c50dcd8b558 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/mutation.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface MutationOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java index c417f17d754..9af035418c0 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MutationProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/mutation.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class MutationProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java index c82f44412d7..1f13ad6aeb5 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java index 50b8ae59d85..547b2008ad1 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PartialResultSetOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Partition.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Partition.java index 8b02e46d977..26260a40cae 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Partition.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Partition.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptions.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptions.java index 8be7344e838..fe64beb1d6f 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptions.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptionsOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptionsOrBuilder.java index 6da95e75946..28befed7ab7 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PartitionOptionsOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOrBuilder.java index d869db62090..9a495275406 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PartitionOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java index 1dbb43dfe9a..3180c9b48ec 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java index 773f377d053..db5570df53e 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PartitionQueryRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java index 443b2c28f9a..c82d29e239f 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java index 411eaf65af1..446b9078180 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PartitionReadRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponse.java index 978083d0a22..fc5d60e234d 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponseOrBuilder.java index fe1334e1e7b..5a03ad7891c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PartitionResponseOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNode.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNode.java index 2748ceb2f93..be91dfdf577 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNode.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNode.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/query_plan.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNodeOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNodeOrBuilder.java index aa673766d8a..dea5935593c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNodeOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PlanNodeOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/query_plan.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface PlanNodeOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlan.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlan.java index e47d989d0e7..394641a2ae0 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlan.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlan.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/query_plan.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanOrBuilder.java index 40753a84c3f..219ed420801 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/query_plan.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface QueryPlanOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java index 1d15175cce6..e252525aec6 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/QueryPlanProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/query_plan.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class QueryPlanProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java index ce0f8ad4043..bd3294af900 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java index 5e7f98aef31..09909ff935b 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ReadRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptions.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptions.java index e883e08e76a..a918e14e308 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptions.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptionsOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptionsOrBuilder.java index 0e2e75fa88c..7fb354d75ec 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RequestOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface RequestOptionsOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java index 9ac5d9eee0c..b156628d752 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java index 395b2a59545..d1e9fa29d21 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java index 4326f5ccbcc..6211490b372 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ResultSetMetadataOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java index 997d61f3fc1..5465f016666 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ResultSetOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java index cc50ebbf8e1..291fd570667 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class ResultSetProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStats.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStats.java index 856fc25c391..f6492060a1a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStats.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStats.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStatsOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStatsOrBuilder.java index 44993b45398..26f1ae7c33c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStatsOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetStatsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/result_set.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface ResultSetStatsOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequest.java index b3bc8abcb59..461aa11e5d1 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequestOrBuilder.java index 6f699d135fb..8de96871f20 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/RollbackRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface RollbackRequestOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Session.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Session.java index d9bb5fa7e03..6ca8532d86c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Session.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Session.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionOrBuilder.java index 9708f70cac6..4ad812a2cad 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface SessionOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java index 8a9e1215314..cc3a13e16a5 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/spanner.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class SpannerProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructType.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructType.java index 9d45686b058..a1755405cd8 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructType.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructType.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java index 8435a598c5d..7c92ac22f68 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface StructTypeOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Transaction.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Transaction.java index ff343e23366..92b64c5873b 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Transaction.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Transaction.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java index bf2f1b492c9..e3c7e2989cd 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptionsOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptionsOrBuilder.java index 5f0f8fb1779..143d0d815ab 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptionsOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface TransactionOptionsOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java index 8f283b5af2d..b41d1cb47e4 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface TransactionOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java index 7c8b6760bdc..e682eb52204 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class TransactionProto { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelector.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelector.java index ed482d15d54..2219f7a90b2 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelector.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelector.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelectorOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelectorOrBuilder.java index 6271172b5b1..38a78bb4618 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelectorOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionSelectorOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/transaction.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface TransactionSelectorOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Type.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Type.java index 6924351bbd5..d420ebf450a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Type.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/Type.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java index 0625073e763..bd8e0bea2a8 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeCode.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeCode.java index c97c9078575..438c99a009f 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeCode.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeCode.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; /** diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java index e35750cdee6..68b785c340f 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public interface TypeOrBuilder diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java index 1ab3b1616c7..6ea74cf77a9 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/spanner/v1/type.proto -// Protobuf Java Version: 3.25.5 +// Protobuf Java Version: 3.25.8 package com.google.spanner.v1; public final class TypeProto { diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/change_stream.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/change_stream.proto new file mode 100644 index 00000000000..53c71078d0e --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/change_stream.proto @@ -0,0 +1,451 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.spanner.v1; + +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; +import "google/spanner/v1/type.proto"; + +option csharp_namespace = "Google.Cloud.Spanner.V1"; +option go_package = "cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb"; +option java_multiple_files = true; +option java_outer_classname = "ChangeStreamProto"; +option java_package = "com.google.spanner.v1"; +option php_namespace = "Google\\Cloud\\Spanner\\V1"; +option ruby_package = "Google::Cloud::Spanner::V1"; + +// Spanner Change Streams enable customers to capture and stream out changes to +// their Spanner databases in real-time. A change stream +// can be created with option partition_mode='IMMUTABLE_KEY_RANGE' or +// partition_mode='MUTABLE_KEY_RANGE'. +// +// This message is only used in Change Streams created with the option +// partition_mode='MUTABLE_KEY_RANGE'. Spanner automatically creates a special +// Table-Valued Function (TVF) along with each Change Streams. The function +// provides access to the change stream's records. The function is named +// READ_ (where is the +// name of the change stream), and it returns a table with only one column +// called ChangeRecord. +message ChangeStreamRecord { + // A data change record contains a set of changes to a table with the same + // modification type (insert, update, or delete) committed at the same commit + // timestamp in one change stream partition for the same transaction. Multiple + // data change records can be returned for the same transaction across + // multiple change stream partitions. + message DataChangeRecord { + // Metadata for a column. + message ColumnMetadata { + // Name of the column. + string name = 1; + + // Type of the column. + Type type = 2; + + // Indicates whether the column is a primary key column. + bool is_primary_key = 3; + + // Ordinal position of the column based on the original table definition + // in the schema starting with a value of 1. + int64 ordinal_position = 4; + } + + // Returns the value and associated metadata for a particular field of the + // [Mod][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.Mod]. + message ModValue { + // Index within the repeated + // [column_metadata][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.column_metadata] + // field, to obtain the column metadata for the column that was modified. + int32 column_metadata_index = 1; + + // The value of the column. + google.protobuf.Value value = 2; + } + + // A mod describes all data changes in a watched table row. + message Mod { + // Returns the value of the primary key of the modified row. + repeated ModValue keys = 1; + + // Returns the old values before the change for the modified columns. + // Always empty for + // [INSERT][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.INSERT], + // or if old values are not being captured specified by + // [value_capture_type][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ValueCaptureType]. + repeated ModValue old_values = 2; + + // Returns the new values after the change for the modified columns. + // Always empty for + // [DELETE][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.ModType.DELETE]. + repeated ModValue new_values = 3; + } + + // Mod type describes the type of change Spanner applied to the data. For + // example, if the client submits an INSERT_OR_UPDATE request, Spanner will + // perform an insert if there is no existing row and return ModType INSERT. + // Alternatively, if there is an existing row, Spanner will perform an + // update and return ModType UPDATE. + enum ModType { + // Not specified. + MOD_TYPE_UNSPECIFIED = 0; + + // Indicates data was inserted. + INSERT = 10; + + // Indicates existing data was updated. + UPDATE = 20; + + // Indicates existing data was deleted. + DELETE = 30; + } + + // Value capture type describes which values are recorded in the data + // change record. + enum ValueCaptureType { + // Not specified. + VALUE_CAPTURE_TYPE_UNSPECIFIED = 0; + + // Records both old and new values of the modified watched columns. + OLD_AND_NEW_VALUES = 10; + + // Records only new values of the modified watched columns. + NEW_VALUES = 20; + + // Records new values of all watched columns, including modified and + // unmodified columns. + NEW_ROW = 30; + + // Records the new values of all watched columns, including modified and + // unmodified columns. Also records the old values of the modified + // columns. + NEW_ROW_AND_OLD_VALUES = 40; + } + + // Indicates the timestamp in which the change was committed. + // DataChangeRecord.commit_timestamps, + // PartitionStartRecord.start_timestamps, + // PartitionEventRecord.commit_timestamps, and + // PartitionEndRecord.end_timestamps can have the same value in the same + // partition. + google.protobuf.Timestamp commit_timestamp = 1; + + // Record sequence numbers are unique and monotonically increasing (but not + // necessarily contiguous) for a specific timestamp across record + // types in the same partition. To guarantee ordered processing, the reader + // should process records (of potentially different types) in + // record_sequence order for a specific timestamp in the same partition. + // + // The record sequence number ordering across partitions is only meaningful + // in the context of a specific transaction. Record sequence numbers are + // unique across partitions for a specific transaction. Sort the + // DataChangeRecords for the same + // [server_transaction_id][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.server_transaction_id] + // by + // [record_sequence][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.record_sequence] + // to reconstruct the ordering of the changes within the transaction. + string record_sequence = 2; + + // Provides a globally unique string that represents the transaction in + // which the change was committed. Multiple transactions can have the same + // commit timestamp, but each transaction has a unique + // server_transaction_id. + string server_transaction_id = 3; + + // Indicates whether this is the last record for a transaction in the + // current partition. Clients can use this field to determine when all + // records for a transaction in the current partition have been received. + bool is_last_record_in_transaction_in_partition = 4; + + // Name of the table affected by the change. + string table = 5; + + // Provides metadata describing the columns associated with the + // [mods][google.spanner.v1.ChangeStreamRecord.DataChangeRecord.mods] listed + // below. + repeated ColumnMetadata column_metadata = 6; + + // Describes the changes that were made. + repeated Mod mods = 7; + + // Describes the type of change. + ModType mod_type = 8; + + // Describes the value capture type that was specified in the change stream + // configuration when this change was captured. + ValueCaptureType value_capture_type = 9; + + // Indicates the number of data change records that are part of this + // transaction across all change stream partitions. This value can be used + // to assemble all the records associated with a particular transaction. + int32 number_of_records_in_transaction = 10; + + // Indicates the number of partitions that return data change records for + // this transaction. This value can be helpful in assembling all records + // associated with a particular transaction. + int32 number_of_partitions_in_transaction = 11; + + // Indicates the transaction tag associated with this transaction. + string transaction_tag = 12; + + // Indicates whether the transaction is a system transaction. System + // transactions include those issued by time-to-live (TTL), column backfill, + // etc. + bool is_system_transaction = 13; + } + + // A heartbeat record is returned as a progress indicator, when there are no + // data changes or any other partition record types in the change stream + // partition. + message HeartbeatRecord { + // Indicates the timestamp at which the query has returned all the records + // in the change stream partition with timestamp <= heartbeat timestamp. + // The heartbeat timestamp will not be the same as the timestamps of other + // record types in the same partition. + google.protobuf.Timestamp timestamp = 1; + } + + // A partition start record serves as a notification that the client should + // schedule the partitions to be queried. PartitionStartRecord returns + // information about one or more partitions. + message PartitionStartRecord { + // Start timestamp at which the partitions should be queried to return + // change stream records with timestamps >= start_timestamp. + // DataChangeRecord.commit_timestamps, + // PartitionStartRecord.start_timestamps, + // PartitionEventRecord.commit_timestamps, and + // PartitionEndRecord.end_timestamps can have the same value in the same + // partition. + google.protobuf.Timestamp start_timestamp = 1; + + // Record sequence numbers are unique and monotonically increasing (but not + // necessarily contiguous) for a specific timestamp across record + // types in the same partition. To guarantee ordered processing, the reader + // should process records (of potentially different types) in + // record_sequence order for a specific timestamp in the same partition. + string record_sequence = 2; + + // Unique partition identifiers to be used in queries. + repeated string partition_tokens = 3; + } + + // A partition end record serves as a notification that the client should stop + // reading the partition. No further records are expected to be retrieved on + // it. + message PartitionEndRecord { + // End timestamp at which the change stream partition is terminated. All + // changes generated by this partition will have timestamps <= + // end_timestamp. DataChangeRecord.commit_timestamps, + // PartitionStartRecord.start_timestamps, + // PartitionEventRecord.commit_timestamps, and + // PartitionEndRecord.end_timestamps can have the same value in the same + // partition. PartitionEndRecord is the last record returned for a + // partition. + google.protobuf.Timestamp end_timestamp = 1; + + // Record sequence numbers are unique and monotonically increasing (but not + // necessarily contiguous) for a specific timestamp across record + // types in the same partition. To guarantee ordered processing, the reader + // should process records (of potentially different types) in + // record_sequence order for a specific timestamp in the same partition. + string record_sequence = 2; + + // Unique partition identifier describing the terminated change stream + // partition. + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEndRecord.partition_token] + // is equal to the partition token of the change stream partition currently + // queried to return this PartitionEndRecord. + string partition_token = 3; + } + + // A partition event record describes key range changes for a change stream + // partition. The changes to a row defined by its primary key can be captured + // in one change stream partition for a specific time range, and then be + // captured in a different change stream partition for a different time range. + // This movement of key ranges across change stream partitions is a reflection + // of activities, such as Spanner's dynamic splitting and load balancing, etc. + // Processing this event is needed if users want to guarantee processing of + // the changes for any key in timestamp order. If time ordered processing of + // changes for a primary key is not needed, this event can be ignored. + // To guarantee time ordered processing for each primary key, if the event + // describes move-ins, the reader of this partition needs to wait until the + // readers of the source partitions have processed all records with timestamps + // <= this PartitionEventRecord.commit_timestamp, before advancing beyond this + // PartitionEventRecord. If the event describes move-outs, the reader can + // notify the readers of the destination partitions that they can continue + // processing. + message PartitionEventRecord { + // Describes move-in of the key ranges into the change stream partition + // identified by + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]. + // + // To maintain processing the changes for a particular key in timestamp + // order, the query processing the change stream partition identified by + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token] + // should not advance beyond the partition event record commit timestamp + // until the queries processing the source change stream partitions have + // processed all change stream records with timestamps <= the partition + // event record commit timestamp. + message MoveInEvent { + // An unique partition identifier describing the source change stream + // partition that recorded changes for the key range that is moving + // into this partition. + string source_partition_token = 1; + } + + // Describes move-out of the key ranges out of the change stream partition + // identified by + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]. + // + // To maintain processing the changes for a particular key in timestamp + // order, the query processing the + // [MoveOutEvent][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.MoveOutEvent] + // in the partition identified by + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token] + // should inform the queries processing the destination partitions that + // they can unblock and proceed processing records past the + // [commit_timestamp][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.commit_timestamp]. + message MoveOutEvent { + // An unique partition identifier describing the destination change + // stream partition that will record changes for the key range that is + // moving out of this partition. + string destination_partition_token = 1; + } + + // Indicates the commit timestamp at which the key range change occurred. + // DataChangeRecord.commit_timestamps, + // PartitionStartRecord.start_timestamps, + // PartitionEventRecord.commit_timestamps, and + // PartitionEndRecord.end_timestamps can have the same value in the same + // partition. + google.protobuf.Timestamp commit_timestamp = 1; + + // Record sequence numbers are unique and monotonically increasing (but not + // necessarily contiguous) for a specific timestamp across record + // types in the same partition. To guarantee ordered processing, the reader + // should process records (of potentially different types) in + // record_sequence order for a specific timestamp in the same partition. + string record_sequence = 2; + + // Unique partition identifier describing the partition this event + // occurred on. + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token] + // is equal to the partition token of the change stream partition currently + // queried to return this PartitionEventRecord. + string partition_token = 3; + + // Set when one or more key ranges are moved into the change stream + // partition identified by + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]. + // + // Example: Two key ranges are moved into partition (P1) from partition (P2) + // and partition (P3) in a single transaction at timestamp T. + // + // The PartitionEventRecord returned in P1 will reflect the move as: + // + // PartitionEventRecord { + // commit_timestamp: T + // partition_token: "P1" + // move_in_events { + // source_partition_token: "P2" + // } + // move_in_events { + // source_partition_token: "P3" + // } + // } + // + // The PartitionEventRecord returned in P2 will reflect the move as: + // + // PartitionEventRecord { + // commit_timestamp: T + // partition_token: "P2" + // move_out_events { + // destination_partition_token: "P1" + // } + // } + // + // The PartitionEventRecord returned in P3 will reflect the move as: + // + // PartitionEventRecord { + // commit_timestamp: T + // partition_token: "P3" + // move_out_events { + // destination_partition_token: "P1" + // } + // } + repeated MoveInEvent move_in_events = 4; + + // Set when one or more key ranges are moved out of the change stream + // partition identified by + // [partition_token][google.spanner.v1.ChangeStreamRecord.PartitionEventRecord.partition_token]. + // + // Example: Two key ranges are moved out of partition (P1) to partition (P2) + // and partition (P3) in a single transaction at timestamp T. + // + // The PartitionEventRecord returned in P1 will reflect the move as: + // + // PartitionEventRecord { + // commit_timestamp: T + // partition_token: "P1" + // move_out_events { + // destination_partition_token: "P2" + // } + // move_out_events { + // destination_partition_token: "P3" + // } + // } + // + // The PartitionEventRecord returned in P2 will reflect the move as: + // + // PartitionEventRecord { + // commit_timestamp: T + // partition_token: "P2" + // move_in_events { + // source_partition_token: "P1" + // } + // } + // + // The PartitionEventRecord returned in P3 will reflect the move as: + // + // PartitionEventRecord { + // commit_timestamp: T + // partition_token: "P3" + // move_in_events { + // source_partition_token: "P1" + // } + // } + repeated MoveOutEvent move_out_events = 5; + } + + // One of the change stream subrecords. + oneof record { + // Data change record describing a data change for a change stream + // partition. + DataChangeRecord data_change_record = 1; + + // Heartbeat record describing a heartbeat for a change stream partition. + HeartbeatRecord heartbeat_record = 2; + + // Partition start record describing a new change stream partition. + PartitionStartRecord partition_start_record = 3; + + // Partition end record describing a terminated change stream partition. + PartitionEndRecord partition_end_record = 4; + + // Partition event record describing key range changes for a change stream + // partition. + PartitionEventRecord partition_event_record = 5; + } +} diff --git a/renovate.json b/renovate.json index 0fe0b5f774b..fbbf782f1cf 100644 --- a/renovate.json +++ b/renovate.json @@ -20,17 +20,6 @@ ".github/workflows/samples.yaml" ], "customManagers": [ - { - "customType": "regex", - "fileMatch": [ - "^.kokoro/presubmit/graalvm-native.*.cfg$" - ], - "matchStrings": [ - "value: \"gcr.io/cloud-devrel-public-resources/graalvm.*:(?.*?)\"" - ], - "depNameTemplate": "com.google.cloud:sdk-platform-java-config", - "datasourceTemplate": "maven" - }, { "customType": "regex", "fileMatch": [ @@ -104,4 +93,4 @@ ], "semanticCommits": true, "dependencyDashboard": true -} \ No newline at end of file +} diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 065b9b81b63..51fed236a68 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -23,8 +23,8 @@ 1.8 UTF-8 0.31.1 - 2.54.0 - 3.54.0 + 2.62.0 + 3.63.0
@@ -33,7 +33,7 @@ com.google.cloud google-cloud-spanner - 6.89.0 + 6.93.0 @@ -145,7 +145,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false diff --git a/samples/pom.xml b/samples/pom.xml index 7f027400da9..d72a58cea5d 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -18,7 +18,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -39,7 +39,7 @@ org.apache.maven.plugins maven-deploy-plugin - 3.1.3 + 3.1.4 true diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 1d84c1ab5fb..fd51e511025 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -23,8 +23,8 @@ 1.8 UTF-8 0.31.1 - 2.54.0 - 3.54.0 + 2.62.0 + 3.63.0
@@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.96.1 @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 71949e27f82..6d0b1f0b7df 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -16,7 +16,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -34,7 +34,7 @@ com.google.cloud libraries-bom - 26.57.0 + 26.62.0 pom import @@ -126,7 +126,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false @@ -155,7 +155,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false diff --git a/samples/snippets/src/main/java/com/example/spanner/DatabaseAddSplitPointsSample.java b/samples/snippets/src/main/java/com/example/spanner/DatabaseAddSplitPointsSample.java index 05c650dbfb7..390ac6c3b21 100644 --- a/samples/snippets/src/main/java/com/example/spanner/DatabaseAddSplitPointsSample.java +++ b/samples/snippets/src/main/java/com/example/spanner/DatabaseAddSplitPointsSample.java @@ -66,8 +66,7 @@ static void addSplitPoints(String projectId, String instanceId, String databaseI com.google.spanner.admin.database.v1.SplitPoints splitPointForTable = SplitPoints.newBuilder() .setTable("Singers") - .setKeys( - 0, + .addKeys( com.google.spanner.admin.database.v1.SplitPoints.Key.newBuilder() .setKeyParts( ListValue.newBuilder() @@ -79,8 +78,7 @@ static void addSplitPoints(String projectId, String instanceId, String databaseI com.google.spanner.admin.database.v1.SplitPoints splitPointForIndex = SplitPoints.newBuilder() .setIndex("SingersByFirstLastName") - .setKeys( - 0, + .addKeys( com.google.spanner.admin.database.v1.SplitPoints.Key.newBuilder() .setKeyParts( ListValue.newBuilder() @@ -93,16 +91,14 @@ static void addSplitPoints(String projectId, String instanceId, String databaseI com.google.spanner.admin.database.v1.SplitPoints splitPointForIndexWitTableKey = SplitPoints.newBuilder() .setIndex("SingersByFirstLastName") - .setKeys( - 0, + .addKeys( com.google.spanner.admin.database.v1.SplitPoints.Key.newBuilder() .setKeyParts( ListValue.newBuilder() .addValues(Value.newBuilder().setStringValue("Jane").build()) .addValues(Value.newBuilder().setStringValue("Doe").build()) .build())) - .setKeys( - 1, + .addKeys( com.google.spanner.admin.database.v1.SplitPoints.Key.newBuilder() .setKeyParts( ListValue.newBuilder() diff --git a/samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java b/samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java new file mode 100644 index 00000000000..ef03ed7d88a --- /dev/null +++ b/samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java @@ -0,0 +1,70 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Options; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.Statement; + +/** + * Sample showing how to set the last statement option when a DML statement is the last statement in + * a transaction. + */ +public class LastStatementSample { + + static void insertAndUpdateUsingLastStatement() { + // TODO(developer): Replace these variables before running the sample. + final String projectId = "my-project"; + final String instanceId = "my-instance"; + final String databaseId = "my-database"; + + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + final DatabaseClient databaseClient = + spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); + insertAndUpdateUsingLastStatement(databaseClient); + } + } + + // [START spanner_dml_last_statement] + static void insertAndUpdateUsingLastStatement(DatabaseClient client) { + client + .readWriteTransaction() + .run( + transaction -> { + transaction.executeUpdate( + Statement.of( + "INSERT Singers (SingerId, FirstName, LastName)\n" + + "VALUES (54213, 'John', 'Do')")); + System.out.println("New singer inserted."); + + // Pass in the `lastStatement` option to the last DML statement of the transaction. + transaction.executeUpdate( + Statement.of( + "UPDATE Singers SET Singers.LastName = 'Doe' WHERE SingerId = 54213\n"), + Options.lastStatement()); + System.out.println("Singer last name updated."); + + return null; + }); + } + // [END spanner_dml_last_statement] + +} diff --git a/samples/snippets/src/main/java/com/example/spanner/PgLastStatementSample.java b/samples/snippets/src/main/java/com/example/spanner/PgLastStatementSample.java new file mode 100644 index 00000000000..1c583a71b39 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/spanner/PgLastStatementSample.java @@ -0,0 +1,69 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Options; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.Statement; + +/** + * Sample showing how to set the last statement option when a DML statement is the last statement in + * a transaction. + */ +public class PgLastStatementSample { + + static void insertAndUpdateUsingLastStatement() { + // TODO(developer): Replace these variables before running the sample. + final String projectId = "my-project"; + final String instanceId = "my-instance"; + final String databaseId = "my-database"; + + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + final DatabaseClient databaseClient = + spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); + insertAndUpdateUsingLastStatement(databaseClient); + } + } + + // [START spanner_postgresql_dml_last_statement] + static void insertAndUpdateUsingLastStatement(DatabaseClient client) { + client + .readWriteTransaction() + .run( + transaction -> { + transaction.executeUpdate( + Statement.of( + "INSERT INTO Singers (SingerId, FirstName, LastName) " + + "VALUES (54214, 'John', 'Do')")); + System.out.println("New singer inserted."); + + // Pass in the `lastStatement` option to the last DML statement of the transaction. + transaction.executeUpdate( + Statement.of("UPDATE Singers SET LastName = 'Doe' WHERE SingerId = 54214\n"), + Options.lastStatement()); + System.out.println("Singer last name updated."); + + return null; + }); + } + // [END spanner_postgresql_dml_last_statement] + +} diff --git a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java index d406225c28b..0004f47bb02 100644 --- a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java +++ b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java @@ -32,6 +32,7 @@ import com.google.cloud.spanner.KeyRange; import com.google.cloud.spanner.KeySet; import com.google.cloud.spanner.Mutation; +import com.google.cloud.spanner.Options; import com.google.cloud.spanner.ReadOnlyTransaction; import com.google.cloud.spanner.ResultSet; import com.google.cloud.spanner.Spanner; @@ -39,6 +40,7 @@ import com.google.cloud.spanner.SpannerException; import com.google.cloud.spanner.SpannerExceptionFactory; import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.SpannerOptions.Builder.DefaultReadWriteTransactionOptions; import com.google.cloud.spanner.Statement; import com.google.cloud.spanner.Struct; import com.google.cloud.spanner.TimestampBound; @@ -71,6 +73,7 @@ import com.google.spanner.admin.database.v1.RestoreDatabaseRequest; import com.google.spanner.admin.database.v1.RestoreInfo; import com.google.spanner.v1.ExecuteSqlRequest.QueryOptions; +import com.google.spanner.v1.TransactionOptions.IsolationLevel; import java.math.BigDecimal; import java.time.Instant; import java.time.ZoneId; @@ -679,24 +682,25 @@ static void readOnlyTransaction(DatabaseClient dbClient) { // ReadOnlyTransaction must be closed by calling close() on it to release resources held by it. // We use a try-with-resource block to automatically do so. try (ReadOnlyTransaction transaction = dbClient.readOnlyTransaction()) { - ResultSet queryResultSet = + try (ResultSet queryResultSet = transaction.executeQuery( - Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums")); - while (queryResultSet.next()) { - System.out.printf( - "%d %d %s\n", - queryResultSet.getLong(0), queryResultSet.getLong(1), queryResultSet.getString(2)); - } + Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { + while (queryResultSet.next()) { + System.out.printf( + "%d %d %s\n", + queryResultSet.getLong(0), queryResultSet.getLong(1), queryResultSet.getString(2)); + } + } // queryResultSet.close() is automatically called here try (ResultSet readResultSet = transaction.read( - "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { + "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) { while (readResultSet.next()) { System.out.printf( "%d %d %s\n", readResultSet.getLong(0), readResultSet.getLong(1), readResultSet.getString(2)); } - } - } + } // readResultSet.close() is automatically called here + } // transaction.close() is automatically called here } // [END spanner_read_only_transaction] @@ -1551,6 +1555,47 @@ static void queryWithQueryOptions(DatabaseClient dbClient) { } // [END spanner_query_with_query_options] + // [START spanner_isolation_level_settings] + static void isolationLevelSetting(DatabaseId db) { + // The isolation level specified at the client-level will be applied to all + // RW transactions. + DefaultReadWriteTransactionOptions transactionOptions = + DefaultReadWriteTransactionOptions.newBuilder() + .setIsolationLevel(IsolationLevel.SERIALIZABLE) + .build(); + SpannerOptions options = + SpannerOptions.newBuilder() + .setDefaultTransactionOptions(transactionOptions) + .build(); + Spanner spanner = options.getService(); + DatabaseClient dbClient = spanner.getDatabaseClient(db); + dbClient + // The isolation level specified at the transaction-level takes precedence + // over the isolation level configured at the client-level. + .readWriteTransaction(Options.isolationLevel(IsolationLevel.REPEATABLE_READ)) + .run(transaction -> { + // Read an AlbumTitle. + String selectSql = + "SELECT AlbumTitle from Albums WHERE SingerId = 1 and AlbumId = 1"; + ResultSet resultSet = transaction.executeQuery(Statement.of(selectSql)); + String title = null; + while (resultSet.next()) { + title = resultSet.getString("AlbumTitle"); + } + System.out.printf("Current album title: %s\n", title); + + // Update the title. + String updateSql = + "UPDATE Albums " + + "SET AlbumTitle = 'New Album Title' " + + "WHERE SingerId = 1 and AlbumId = 1"; + long rowCount = transaction.executeUpdate(Statement.of(updateSql)); + System.out.printf("%d record updated.\n", rowCount); + return null; + }); + } + // [END spanner_isolation_level_settings] + // [START spanner_create_backup] static void createBackup(DatabaseAdminClient dbAdminClient, String projectId, String instanceId, String databaseId, String backupId, Timestamp versionTime) { @@ -2107,6 +2152,9 @@ static void run( case "querywithqueryoptions": queryWithQueryOptions(dbClient); break; + case "isolationlevelsettings": + isolationLevelSetting(database); + break; case "createbackup": createBackup(dbAdminClient, database.getInstanceId().getProject(), database.getInstanceId().getInstance(), database.getDatabase(), @@ -2217,6 +2265,7 @@ static void printUsageAndExit() { System.err.println(" SpannerExample querywithtimestampparameter my-instance example-db"); System.err.println(" SpannerExample clientwithqueryoptions my-instance example-db"); System.err.println(" SpannerExample querywithqueryoptions my-instance example-db"); + System.err.println(" SpannerExample isolationlevelsettings my-instance example-db"); System.err.println(" SpannerExample createbackup my-instance example-db"); System.err.println(" SpannerExample listbackups my-instance example-db"); System.err.println(" SpannerExample listbackupoperations my-instance example-db backup-id"); diff --git a/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java b/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java new file mode 100644 index 00000000000..3c73a7591d1 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/spanner/UnnamedParametersExample.java @@ -0,0 +1,84 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import com.google.cloud.Timestamp; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.ResultSet; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.Statement.StatementFactory; +import java.time.LocalDate; + +public class UnnamedParametersExample { + + static void executeQueryWithUnnamedParameters() { + // TODO(developer): Replace these variables before running the sample. + String projectId = "my-project"; + String instanceId = "my-instance"; + String databaseId = "my-database"; + + executeQueryWithUnnamedParameters(projectId, instanceId, databaseId); + } + + static void executeQueryWithUnnamedParameters( + String projectId, String instanceId, String databaseId) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + + DatabaseClient client = + spanner.getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); + StatementFactory statementFactory = client.getStatementFactory(); + + // Insert a row with unnamed parameters + client + .readWriteTransaction() + .run( + transaction -> { + Statement statement = statementFactory + .withUnnamedParameters("INSERT INTO Students(StudentId, Name, IsNRI, AvgMarks, " + + "JoinedAt, PinCode, CreatedAt) VALUES(?, ?, ?, ?, ?, ?, ?)", + 1000001, + "Google", + false, + (float) 34.5, + LocalDate.of(2024, 3, 31), + "123456", + Timestamp.now()); + transaction.executeUpdate(statement); + + return null; + }); + System.out.println("Row is inserted."); + + // Query the table with unnamed parameters + try (ResultSet resultSet = + client + .singleUse() + .executeQuery( + statementFactory.withUnnamedParameters( + "SELECT * FROM Students WHERE StudentId = ?", 1000001))) { + while (resultSet.next()) { + System.out.println(resultSet.getString("Name")); + } + } + System.out.println("Row is fetched."); + } + } +} diff --git a/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java b/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java index 7b2be314250..c9215b78cdc 100644 --- a/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java +++ b/samples/snippets/src/test/java/com/example/spanner/DatabaseAddSplitPointsIT.java @@ -46,7 +46,8 @@ public void setup() throws ExecutionException, InterruptedException { .get(); } - @Test + // TODO: Enable the test once the issue with split points is resolved + // @Test public void testAddSplits() throws Exception { final String out = SampleRunner.runSample( diff --git a/samples/snippets/src/test/java/com/example/spanner/LastStatementSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/LastStatementSampleIT.java new file mode 100644 index 00000000000..89026b5f92b --- /dev/null +++ b/samples/snippets/src/test/java/com/example/spanner/LastStatementSampleIT.java @@ -0,0 +1,61 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import static com.example.spanner.SampleRunner.runSample; +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.common.collect.ImmutableList; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Integration tests for {@link LastStatementSample} */ +@RunWith(JUnit4.class) +public class LastStatementSampleIT extends SampleTestBase { + + private static DatabaseId databaseId; + + @BeforeClass + public static void createTestDatabase() throws Exception { + final String database = idGenerator.generateDatabaseId(); + databaseAdminClient + .createDatabase( + instanceId, + database, + ImmutableList.of( + "CREATE TABLE Singers (" + + " SingerId INT64 NOT NULL," + + " FirstName STRING(1024)," + + " LastName STRING(1024)," + + " SingerInfo BYTES(MAX)" + + ") PRIMARY KEY (SingerId)")) + .get(); + databaseId = DatabaseId.of(projectId, instanceId, database); + } + + @Test + public void testSetLastStatementOptionSample() throws Exception { + final DatabaseClient client = spanner.getDatabaseClient(databaseId); + String out = runSample(() -> LastStatementSample.insertAndUpdateUsingLastStatement(client)); + assertThat(out).contains("New singer inserted."); + assertThat(out).contains("Singer last name updated."); + } +} diff --git a/samples/snippets/src/test/java/com/example/spanner/PgLastStatementSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/PgLastStatementSampleIT.java new file mode 100644 index 00000000000..d6d8d43f6a0 --- /dev/null +++ b/samples/snippets/src/test/java/com/example/spanner/PgLastStatementSampleIT.java @@ -0,0 +1,75 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import static com.example.spanner.SampleRunner.runSample; +import static com.google.common.truth.Truth.assertThat; + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Dialect; +import com.google.common.collect.ImmutableList; +import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; +import java.util.Collections; +import java.util.concurrent.TimeUnit; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Integration tests for {@link PgLastStatementSample} */ +@RunWith(JUnit4.class) +public class PgLastStatementSampleIT extends SampleTestBase { + + private static DatabaseId databaseId; + + @BeforeClass + public static void createTestDatabase() throws Exception { + final String database = idGenerator.generateDatabaseId(); + databaseAdminClient + .createDatabase( + databaseAdminClient + .newDatabaseBuilder(DatabaseId.of(projectId, instanceId, database)) + .setDialect(Dialect.POSTGRESQL) + .build(), + Collections.emptyList()) + .get(10, TimeUnit.MINUTES); + final OperationFuture updateOperation = + databaseAdminClient.updateDatabaseDdl( + instanceId, + database, + ImmutableList.of( + "CREATE TABLE Singers (" + + " SingerId bigint NOT NULL," + + " FirstName character varying(1024)," + + " LastName character varying(1024)," + + " PRIMARY KEY (SingerId)" + + ")"), + null); + updateOperation.get(10, TimeUnit.MINUTES); + databaseId = DatabaseId.of(projectId, instanceId, database); + } + + @Test + public void testSetLastStatementOptionSample() throws Exception { + final DatabaseClient client = spanner.getDatabaseClient(databaseId); + String out = runSample(() -> PgLastStatementSample.insertAndUpdateUsingLastStatement(client)); + assertThat(out).contains("New singer inserted."); + assertThat(out).contains("Singer last name updated."); + } +} diff --git a/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java b/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java new file mode 100644 index 00000000000..d6c900dd60e --- /dev/null +++ b/samples/snippets/src/test/java/com/example/spanner/UnnamedParametersIT.java @@ -0,0 +1,61 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import static org.junit.Assert.assertTrue; + +import com.google.cloud.spanner.DatabaseId; +import com.google.common.collect.ImmutableList; +import java.util.concurrent.ExecutionException; +import org.junit.Before; +import org.junit.Test; + +public class UnnamedParametersIT extends SampleTestBase { + private static String databaseId; + + @Before + public void setup() throws ExecutionException, InterruptedException { + databaseId = idGenerator.generateDatabaseId(); + databaseAdminClient + .createDatabase( + databaseAdminClient + .newDatabaseBuilder(DatabaseId.of(projectId, instanceId, databaseId)) + .build(), + ImmutableList.of( + "CREATE TABLE Students (" + + " StudentId INT64 NOT NULL PRIMARY KEY," + + " Name STRING(1024) NOT NULL," + + " IsNRI BOOL NOT NULL," + + " AvgMarks FLOAT32 NOT NULL," + + " JoinedAt DATE NOT NULL," + + " PinCode INT64 NOT NULL," + + " CreatedAt TIMESTAMP NOT NULL" + + ")")) + .get(); + } + + @Test + public void testUnnamedParameters() throws Exception { + final String out = + SampleRunner.runSample( + () -> UnnamedParametersExample.executeQueryWithUnnamedParameters(projectId, instanceId, + databaseId)); + assertTrue(out.contains("Row is inserted.")); + assertTrue(out.contains("Google")); + assertTrue(out.contains("Row is fetched.")); + } +} diff --git a/versions.txt b/versions.txt index 550467d1d2f..f8fb39303f1 100644 --- a/versions.txt +++ b/versions.txt @@ -1,13 +1,13 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.1-SNAPSHOT -proto-google-cloud-spanner-v1:6.92.0:6.92.1-SNAPSHOT -proto-google-cloud-spanner-admin-database-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-admin-database-v1:6.92.0:6.92.1-SNAPSHOT -google-cloud-spanner:6.92.0:6.92.1-SNAPSHOT -google-cloud-spanner-executor:6.92.0:6.92.1-SNAPSHOT -proto-google-cloud-spanner-executor-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-executor-v1:6.92.0:6.92.1-SNAPSHOT +proto-google-cloud-spanner-admin-instance-v1:6.96.1:6.96.1 +proto-google-cloud-spanner-v1:6.96.1:6.96.1 +proto-google-cloud-spanner-admin-database-v1:6.96.1:6.96.1 +grpc-google-cloud-spanner-v1:6.96.1:6.96.1 +grpc-google-cloud-spanner-admin-instance-v1:6.96.1:6.96.1 +grpc-google-cloud-spanner-admin-database-v1:6.96.1:6.96.1 +google-cloud-spanner:6.96.1:6.96.1 +google-cloud-spanner-executor:6.96.1:6.96.1 +proto-google-cloud-spanner-executor-v1:6.96.1:6.96.1 +grpc-google-cloud-spanner-executor-v1:6.96.1:6.96.1