diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 47a70ea40cf..d5500ef4424 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:32851debfefed2b66038e0141f1b5c2103bb59ba80b7475adbc10ef7abab3de7 -# created: 2023-06-22T15:06:52.039318836Z + digest: sha256:46d2d262cd285c638656c8bde468011b723dc0c7ffd6a5ecc2650fe639c82e8f +# created: 2023-07-24T14:21:17.707234503Z diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index b712292013b..a6177d5b0ef 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -10,6 +10,7 @@ branchProtectionRules: requiredStatusCheckContexts: - dependencies (17) - lint + - javadoc - units (8) - units (11) - 'Kokoro - Test: Integration' @@ -28,6 +29,7 @@ branchProtectionRules: requiredStatusCheckContexts: - dependencies (11) - lint + - javadoc - units (7) - units (8) - units (11) @@ -42,6 +44,7 @@ branchProtectionRules: requiredStatusCheckContexts: - dependencies (11) - lint + - javadoc - units (7) - units (8) - units (11) @@ -56,6 +59,7 @@ branchProtectionRules: requiredStatusCheckContexts: - dependencies (11) - lint + - javadoc - units (7) - units (8) - units (11) @@ -69,6 +73,7 @@ branchProtectionRules: requiresStrictStatusChecks: false requiredStatusCheckContexts: - lint + - javadoc - units (8) - units (11) - 'Kokoro - Test: Integration' @@ -81,6 +86,7 @@ branchProtectionRules: requiresStrictStatusChecks: false requiredStatusCheckContexts: - lint + - javadoc - units (8) - units (11) - 'Kokoro - Test: Integration' @@ -95,6 +101,7 @@ branchProtectionRules: requiresStrictStatusChecks: false requiredStatusCheckContexts: - lint + - javadoc - units (8) - units (11) - 'Kokoro - Test: Integration' @@ -109,6 +116,7 @@ branchProtectionRules: requiresStrictStatusChecks: false requiredStatusCheckContexts: - lint + - javadoc - units (8) - units (11) - 'Kokoro - Test: Integration' diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7c5a0181129..44801b1f9f5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,7 +30,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: zulu + distribution: temurin java-version: ${{matrix.java}} - run: java -version - run: .kokoro/build.sh @@ -45,13 +45,13 @@ jobs: - uses: actions/setup-java@v3 with: java-version: 8 - distribution: zulu + 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: zulu + distribution: temurin - run: .kokoro/build.sh env: JOB_TYPE: test @@ -62,13 +62,13 @@ jobs: - uses: actions/setup-java@v3 with: java-version: 8 - distribution: zulu + distribution: temurin - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV shell: bash - uses: actions/setup-java@v3 with: java-version: 11 - distribution: zulu + distribution: temurin - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV shell: bash - run: java -version @@ -84,17 +84,29 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: zulu + distribution: temurin java-version: ${{matrix.java}} - run: java -version - run: .kokoro/dependencies.sh + javadoc: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + - run: java -version + - run: .kokoro/build.sh + env: + JOB_TYPE: javadoc lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: zulu + distribution: temurin java-version: 17 - run: java -version - run: .kokoro/build.sh @@ -106,7 +118,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: zulu + distribution: temurin java-version: 17 - run: java -version - run: .kokoro/build.sh diff --git a/.github/workflows/integration-tests-against-emulator.yaml b/.github/workflows/integration-tests-against-emulator.yaml index 71fbdc4bbf4..c7918cdd0f7 100644 --- a/.github/workflows/integration-tests-against-emulator.yaml +++ b/.github/workflows/integration-tests-against-emulator.yaml @@ -24,13 +24,13 @@ jobs: - uses: actions/setup-java@v3 with: java-version: 11 - distribution: zulu + distribution: temurin - name: Compiling main library run: .kokoro/build.sh - uses: actions/setup-java@v3 with: java-version: 8 - distribution: zulu + distribution: temurin - name: Running tests run: | mvn -V -B -Dspanner.testenv.instance="" -Penable-integration-tests \ diff --git a/.github/workflows/samples.yaml b/.github/workflows/samples.yaml index 8bc427d1eee..5bfeb995425 100644 --- a/.github/workflows/samples.yaml +++ b/.github/workflows/samples.yaml @@ -21,13 +21,13 @@ jobs: with: # Java 11 to generate class file targeting Java 8 java-version: 11 - distribution: zulu + distribution: temurin - name: Compile Spanner run: mvn clean install -Dclirr.skip=true - uses: actions/setup-java@v3 with: java-version: 8 - distribution: zulu + distribution: temurin - name: Compile samples run: mvn compile working-directory: samples @@ -42,7 +42,7 @@ jobs: - uses: actions/setup-java@v3 with: java-version: ${{matrix.java}} - distribution: zulu + distribution: temurin - name: Compile Spanner run: mvn clean install -Dclirr.skip=true - name: Compile samples diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt index c80f0a87cc5..32989051e7f 100644 --- a/.kokoro/requirements.txt +++ b/.kokoro/requirements.txt @@ -1,20 +1,20 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --allow-unsafe --generate-hashes requirements.in +# pip-compile requirements.in --generate-hashes --upgrade # -attrs==22.1.0 \ - --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ - --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c +attrs==23.1.0 \ + --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ + --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 # via gcp-releasetool -cachetools==4.2.4 \ - --hash=sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693 \ - --hash=sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1 +cachetools==5.3.1 \ + --hash=sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590 \ + --hash=sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b # via google-auth -certifi==2022.12.7 \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 +certifi==2023.5.7 \ + --hash=sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7 \ + --hash=sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716 # via requests cffi==1.15.1 \ --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ @@ -82,9 +82,82 @@ cffi==1.15.1 \ --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 # via cryptography -charset-normalizer==2.0.12 \ - --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ - --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df +charset-normalizer==3.2.0 \ + --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ + --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ + --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ + --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ + --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ + --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ + --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ + --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ + --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ + --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ + --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ + --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ + --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ + --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ + --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ + --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ + --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ + --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ + --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ + --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ + --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ + --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ + --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ + --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ + --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ + --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ + --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ + --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ + --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ + --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ + --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ + --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ + --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ + --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ + --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ + --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ + --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ + --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ + --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ + --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ + --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ + --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ + --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ + --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ + --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ + --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ + --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ + --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ + --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ + --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ + --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ + --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ + --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ + --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ + --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ + --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ + --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ + --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ + --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ + --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ + --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ + --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ + --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ + --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ + --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ + --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ + --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ + --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ + --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ + --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ + --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ + --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ + --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ + --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ + --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa # via requests click==8.0.4 \ --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ @@ -97,121 +170,152 @@ colorlog==6.7.0 \ --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \ --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5 # via gcp-docuploader -cryptography==39.0.1 \ - --hash=sha256:0f8da300b5c8af9f98111ffd512910bc792b4c77392a9523624680f7956a99d4 \ - --hash=sha256:35f7c7d015d474f4011e859e93e789c87d21f6f4880ebdc29896a60403328f1f \ - --hash=sha256:5aa67414fcdfa22cf052e640cb5ddc461924a045cacf325cd164e65312d99502 \ - --hash=sha256:5d2d8b87a490bfcd407ed9d49093793d0f75198a35e6eb1a923ce1ee86c62b41 \ - --hash=sha256:6687ef6d0a6497e2b58e7c5b852b53f62142cfa7cd1555795758934da363a965 \ - --hash=sha256:6f8ba7f0328b79f08bdacc3e4e66fb4d7aab0c3584e0bd41328dce5262e26b2e \ - --hash=sha256:706843b48f9a3f9b9911979761c91541e3d90db1ca905fd63fee540a217698bc \ - --hash=sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad \ - --hash=sha256:83e17b26de248c33f3acffb922748151d71827d6021d98c70e6c1a25ddd78505 \ - --hash=sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388 \ - --hash=sha256:aec5a6c9864be7df2240c382740fcf3b96928c46604eaa7f3091f58b878c0bb6 \ - --hash=sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2 \ - --hash=sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac \ - --hash=sha256:d1f6198ee6d9148405e49887803907fe8962a23e6c6f83ea7d98f1c0de375695 \ - --hash=sha256:e124352fd3db36a9d4a21c1aa27fd5d051e621845cb87fb851c08f4f75ce8be6 \ - --hash=sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336 \ - --hash=sha256:ef8b72fa70b348724ff1218267e7f7375b8de4e8194d1636ee60510aae104cd0 \ - --hash=sha256:f0c64d1bd842ca2633e74a1a28033d139368ad959872533b1bab8c80e8240a0c \ - --hash=sha256:f24077a3b5298a5a06a8e0536e3ea9ec60e4c7ac486755e5fb6e6ea9b3500106 \ - --hash=sha256:fdd188c8a6ef8769f148f88f859884507b954cc64db6b52f66ef199bb9ad660a \ - --hash=sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8 +cryptography==41.0.2 \ + --hash=sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711 \ + --hash=sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7 \ + --hash=sha256:182be4171f9332b6741ee818ec27daff9fb00349f706629f5cbf417bd50e66fd \ + --hash=sha256:192255f539d7a89f2102d07d7375b1e0a81f7478925b3bc2e0549ebf739dae0e \ + --hash=sha256:2a034bf7d9ca894720f2ec1d8b7b5832d7e363571828037f9e0c4f18c1b58a58 \ + --hash=sha256:342f3767e25876751e14f8459ad85e77e660537ca0a066e10e75df9c9e9099f0 \ + --hash=sha256:439c3cc4c0d42fa999b83ded80a9a1fb54d53c58d6e59234cfe97f241e6c781d \ + --hash=sha256:49c3222bb8f8e800aead2e376cbef687bc9e3cb9b58b29a261210456a7783d83 \ + --hash=sha256:674b669d5daa64206c38e507808aae49904c988fa0a71c935e7006a3e1e83831 \ + --hash=sha256:7a9a3bced53b7f09da251685224d6a260c3cb291768f54954e28f03ef14e3766 \ + --hash=sha256:7af244b012711a26196450d34f483357e42aeddb04128885d95a69bd8b14b69b \ + --hash=sha256:7d230bf856164de164ecb615ccc14c7fc6de6906ddd5b491f3af90d3514c925c \ + --hash=sha256:84609ade00a6ec59a89729e87a503c6e36af98ddcd566d5f3be52e29ba993182 \ + --hash=sha256:9a6673c1828db6270b76b22cc696f40cde9043eb90373da5c2f8f2158957f42f \ + --hash=sha256:9b6d717393dbae53d4e52684ef4f022444fc1cce3c48c38cb74fca29e1f08eaa \ + --hash=sha256:9c3fe6534d59d071ee82081ca3d71eed3210f76ebd0361798c74abc2bcf347d4 \ + --hash=sha256:a719399b99377b218dac6cf547b6ec54e6ef20207b6165126a280b0ce97e0d2a \ + --hash=sha256:b332cba64d99a70c1e0836902720887fb4529ea49ea7f5462cf6640e095e11d2 \ + --hash=sha256:d124682c7a23c9764e54ca9ab5b308b14b18eba02722b8659fb238546de83a76 \ + --hash=sha256:d73f419a56d74fef257955f51b18d046f3506270a5fd2ac5febbfa259d6c0fa5 \ + --hash=sha256:f0dc40e6f7aa37af01aba07277d3d64d5a03dc66d682097541ec4da03cc140ee \ + --hash=sha256:f14ad275364c8b4e525d018f6716537ae7b6d369c094805cae45300847e0894f \ + --hash=sha256:f772610fe364372de33d76edcd313636a25684edb94cee53fd790195f5989d14 # via # gcp-releasetool # secretstorage -gcp-docuploader==0.6.4 \ - --hash=sha256:01486419e24633af78fd0167db74a2763974765ee8078ca6eb6964d0ebd388af \ - --hash=sha256:70861190c123d907b3b067da896265ead2eeb9263969d6955c9e0bb091b5ccbf +gcp-docuploader==0.6.5 \ + --hash=sha256:30221d4ac3e5a2b9c69aa52fdbef68cc3f27d0e6d0d90e220fc024584b8d2318 \ + --hash=sha256:b7458ef93f605b9d46a4bf3a8dc1755dad1f31d030c8679edf304e343b347eea # via -r requirements.in -gcp-releasetool==1.10.5 \ - --hash=sha256:174b7b102d704b254f2a26a3eda2c684fd3543320ec239baf771542a2e58e109 \ - --hash=sha256:e29d29927fe2ca493105a82958c6873bb2b90d503acac56be2c229e74de0eec9 +gcp-releasetool==1.16.0 \ + --hash=sha256:27bf19d2e87aaa884096ff941aa3c592c482be3d6a2bfe6f06afafa6af2353e3 \ + --hash=sha256:a316b197a543fd036209d0caba7a8eb4d236d8e65381c80cbc6d7efaa7606d63 # via -r requirements.in -google-api-core==2.8.2 \ - --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \ - --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50 +google-api-core==2.11.1 \ + --hash=sha256:25d29e05a0058ed5f19c61c0a78b1b53adea4d9364b464d014fbda941f6d1c9a \ + --hash=sha256:d92a5a92dc36dd4f4b9ee4e55528a90e432b059f93aee6ad857f9de8cc7ae94a # via # google-cloud-core # google-cloud-storage -google-auth==2.14.1 \ - --hash=sha256:ccaa901f31ad5cbb562615eb8b664b3dd0bf5404a67618e642307f00613eda4d \ - --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 +google-auth==2.22.0 \ + --hash=sha256:164cba9af4e6e4e40c3a4f90a1a6c12ee56f14c0b4868d1ca91b32826ab334ce \ + --hash=sha256:d61d1b40897407b574da67da1a833bdc10d5a11642566e506565d1b1a46ba873 # via # gcp-releasetool # google-api-core # google-cloud-core # google-cloud-storage -google-cloud-core==2.3.1 \ - --hash=sha256:113ba4f492467d5bd442c8d724c1a25ad7384045c3178369038840ecdd19346c \ - --hash=sha256:34334359cb04187bdc80ddcf613e462dfd7a3aabbc3fe4d118517ab4b9303d53 +google-cloud-core==2.3.3 \ + --hash=sha256:37b80273c8d7eee1ae816b3a20ae43585ea50506cb0e60f3cf5be5f87f1373cb \ + --hash=sha256:fbd11cad3e98a7e5b0343dc07cb1039a5ffd7a5bb96e1f1e27cee4bda4a90863 # via google-cloud-storage -google-cloud-storage==2.0.0 \ - --hash=sha256:a57a15aead0f9dfbd4381f1bfdbe8bf89818a4bd75bab846cafcefb2db846c47 \ - --hash=sha256:ec4be60bb223a3a960f0d01697d849b86d91cad815a84915a32ed3635e93a5e7 +google-cloud-storage==2.10.0 \ + --hash=sha256:934b31ead5f3994e5360f9ff5750982c5b6b11604dc072bc452c25965e076dc7 \ + --hash=sha256:9433cf28801671de1c80434238fb1e7e4a1ba3087470e90f70c928ea77c2b9d7 # via gcp-docuploader -google-crc32c==1.3.0 \ - --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \ - --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \ - --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \ - --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \ - --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \ - --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \ - --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \ - --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \ - --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \ - --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \ - --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \ - --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \ - --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \ - --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \ - --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \ - --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \ - --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \ - --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \ - --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \ - --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \ - --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \ - --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \ - --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \ - --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \ - --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \ - --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \ - --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \ - --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \ - --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \ - --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \ - --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \ - --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \ - --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \ - --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \ - --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \ - --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \ - --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \ - --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \ - --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \ - --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \ - --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \ - --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \ - --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3 +google-crc32c==1.5.0 \ + --hash=sha256:024894d9d3cfbc5943f8f230e23950cd4906b2fe004c72e29b209420a1e6b05a \ + --hash=sha256:02c65b9817512edc6a4ae7c7e987fea799d2e0ee40c53ec573a692bee24de876 \ + --hash=sha256:02ebb8bf46c13e36998aeaad1de9b48f4caf545e91d14041270d9dca767b780c \ + --hash=sha256:07eb3c611ce363c51a933bf6bd7f8e3878a51d124acfc89452a75120bc436289 \ + --hash=sha256:1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 \ + --hash=sha256:116a7c3c616dd14a3de8c64a965828b197e5f2d121fedd2f8c5585c547e87b02 \ + --hash=sha256:19e0a019d2c4dcc5e598cd4a4bc7b008546b0358bd322537c74ad47a5386884f \ + --hash=sha256:1c7abdac90433b09bad6c43a43af253e688c9cfc1c86d332aed13f9a7c7f65e2 \ + --hash=sha256:1e986b206dae4476f41bcec1faa057851f3889503a70e1bdb2378d406223994a \ + --hash=sha256:272d3892a1e1a2dbc39cc5cde96834c236d5327e2122d3aaa19f6614531bb6eb \ + --hash=sha256:278d2ed7c16cfc075c91378c4f47924c0625f5fc84b2d50d921b18b7975bd210 \ + --hash=sha256:2ad40e31093a4af319dadf503b2467ccdc8f67c72e4bcba97f8c10cb078207b5 \ + --hash=sha256:2e920d506ec85eb4ba50cd4228c2bec05642894d4c73c59b3a2fe20346bd00ee \ + --hash=sha256:3359fc442a743e870f4588fcf5dcbc1bf929df1fad8fb9905cd94e5edb02e84c \ + --hash=sha256:37933ec6e693e51a5b07505bd05de57eee12f3e8c32b07da7e73669398e6630a \ + --hash=sha256:398af5e3ba9cf768787eef45c803ff9614cc3e22a5b2f7d7ae116df8b11e3314 \ + --hash=sha256:3b747a674c20a67343cb61d43fdd9207ce5da6a99f629c6e2541aa0e89215bcd \ + --hash=sha256:461665ff58895f508e2866824a47bdee72497b091c730071f2b7575d5762ab65 \ + --hash=sha256:4c6fdd4fccbec90cc8a01fc00773fcd5fa28db683c116ee3cb35cd5da9ef6c37 \ + --hash=sha256:5829b792bf5822fd0a6f6eb34c5f81dd074f01d570ed7f36aa101d6fc7a0a6e4 \ + --hash=sha256:596d1f98fc70232fcb6590c439f43b350cb762fb5d61ce7b0e9db4539654cc13 \ + --hash=sha256:5ae44e10a8e3407dbe138984f21e536583f2bba1be9491239f942c2464ac0894 \ + --hash=sha256:635f5d4dd18758a1fbd1049a8e8d2fee4ffed124462d837d1a02a0e009c3ab31 \ + --hash=sha256:64e52e2b3970bd891309c113b54cf0e4384762c934d5ae56e283f9a0afcd953e \ + --hash=sha256:66741ef4ee08ea0b2cc3c86916ab66b6aef03768525627fd6a1b34968b4e3709 \ + --hash=sha256:67b741654b851abafb7bc625b6d1cdd520a379074e64b6a128e3b688c3c04740 \ + --hash=sha256:6ac08d24c1f16bd2bf5eca8eaf8304812f44af5cfe5062006ec676e7e1d50afc \ + --hash=sha256:6f998db4e71b645350b9ac28a2167e6632c239963ca9da411523bb439c5c514d \ + --hash=sha256:72218785ce41b9cfd2fc1d6a017dc1ff7acfc4c17d01053265c41a2c0cc39b8c \ + --hash=sha256:74dea7751d98034887dbd821b7aae3e1d36eda111d6ca36c206c44478035709c \ + --hash=sha256:759ce4851a4bb15ecabae28f4d2e18983c244eddd767f560165563bf9aefbc8d \ + --hash=sha256:77e2fd3057c9d78e225fa0a2160f96b64a824de17840351b26825b0848022906 \ + --hash=sha256:7c074fece789b5034b9b1404a1f8208fc2d4c6ce9decdd16e8220c5a793e6f61 \ + --hash=sha256:7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 \ + --hash=sha256:7f57f14606cd1dd0f0de396e1e53824c371e9544a822648cd76c034d209b559c \ + --hash=sha256:83c681c526a3439b5cf94f7420471705bbf96262f49a6fe546a6db5f687a3d4a \ + --hash=sha256:8485b340a6a9e76c62a7dce3c98e5f102c9219f4cfbf896a00cf48caf078d438 \ + --hash=sha256:84e6e8cd997930fc66d5bb4fde61e2b62ba19d62b7abd7a69920406f9ecca946 \ + --hash=sha256:89284716bc6a5a415d4eaa11b1726d2d60a0cd12aadf5439828353662ede9dd7 \ + --hash=sha256:8b87e1a59c38f275c0e3676fc2ab6d59eccecfd460be267ac360cc31f7bcde96 \ + --hash=sha256:8f24ed114432de109aa9fd317278518a5af2d31ac2ea6b952b2f7782b43da091 \ + --hash=sha256:98cb4d057f285bd80d8778ebc4fde6b4d509ac3f331758fb1528b733215443ae \ + --hash=sha256:998679bf62b7fb599d2878aa3ed06b9ce688b8974893e7223c60db155f26bd8d \ + --hash=sha256:9ba053c5f50430a3fcfd36f75aff9caeba0440b2d076afdb79a318d6ca245f88 \ + --hash=sha256:9c99616c853bb585301df6de07ca2cadad344fd1ada6d62bb30aec05219c45d2 \ + --hash=sha256:a1fd716e7a01f8e717490fbe2e431d2905ab8aa598b9b12f8d10abebb36b04dd \ + --hash=sha256:a2355cba1f4ad8b6988a4ca3feed5bff33f6af2d7f134852cf279c2aebfde541 \ + --hash=sha256:b1f8133c9a275df5613a451e73f36c2aea4fe13c5c8997e22cf355ebd7bd0728 \ + --hash=sha256:b8667b48e7a7ef66afba2c81e1094ef526388d35b873966d8a9a447974ed9178 \ + --hash=sha256:ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 \ + --hash=sha256:be82c3c8cfb15b30f36768797a640e800513793d6ae1724aaaafe5bf86f8f346 \ + --hash=sha256:c02ec1c5856179f171e032a31d6f8bf84e5a75c45c33b2e20a3de353b266ebd8 \ + --hash=sha256:c672d99a345849301784604bfeaeba4db0c7aae50b95be04dd651fd2a7310b93 \ + --hash=sha256:c6c777a480337ac14f38564ac88ae82d4cd238bf293f0a22295b66eb89ffced7 \ + --hash=sha256:cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 \ + --hash=sha256:cd67cf24a553339d5062eff51013780a00d6f97a39ca062781d06b3a73b15462 \ + --hash=sha256:d3515f198eaa2f0ed49f8819d5732d70698c3fa37384146079b3799b97667a94 \ + --hash=sha256:d5280312b9af0976231f9e317c20e4a61cd2f9629b7bfea6a693d1878a264ebd \ + --hash=sha256:de06adc872bcd8c2a4e0dc51250e9e65ef2ca91be023b9d13ebd67c2ba552e1e \ + --hash=sha256:e1674e4307fa3024fc897ca774e9c7562c957af85df55efe2988ed9056dc4e57 \ + --hash=sha256:e2096eddb4e7c7bdae4bd69ad364e55e07b8316653234a56552d9c988bd2d61b \ + --hash=sha256:e560628513ed34759456a416bf86b54b2476c59144a9138165c9a1575801d0d9 \ + --hash=sha256:edfedb64740750e1a3b16152620220f51d58ff1b4abceb339ca92e934775c27a \ + --hash=sha256:f13cae8cc389a440def0c8c52057f37359014ccbc9dc1f0827936bcd367c6100 \ + --hash=sha256:f314013e7dcd5cf45ab1945d92e713eec788166262ae8deb2cfacd53def27325 \ + --hash=sha256:f583edb943cf2e09c60441b910d6a20b4d9d626c75a36c8fcac01a6c96c01183 \ + --hash=sha256:fd8536e902db7e365f49e7d9029283403974ccf29b13fc7028b97e2295b33556 \ + --hash=sha256:fe70e325aa68fa4b5edf7d1a4b6f691eb04bbccac0ace68e34820d283b5f80d4 # via google-resumable-media -google-resumable-media==2.3.3 \ - --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \ - --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5 +google-resumable-media==2.5.0 \ + --hash=sha256:218931e8e2b2a73a58eb354a288e03a0fd5fb1c4583261ac6e4c078666468c93 \ + --hash=sha256:da1bd943e2e114a56d85d6848497ebf9be6a14d3db23e9fc57581e7c3e8170ec # via google-cloud-storage -googleapis-common-protos==1.56.3 \ - --hash=sha256:6f1369b58ed6cf3a4b7054a44ebe8d03b29c309257583a2bbdc064cd1e4a1442 \ - --hash=sha256:87955d7b3a73e6e803f2572a33179de23989ebba725e05ea42f24838b792e461 +googleapis-common-protos==1.59.1 \ + --hash=sha256:0cbedb6fb68f1c07e18eb4c48256320777707e7d0c55063ae56c15db3224a61e \ + --hash=sha256:b35d530fe825fb4227857bc47ad84c33c809ac96f312e13182bdeaa2abe1178a # via google-api-core idna==3.4 \ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 # via requests -importlib-metadata==4.8.3 \ - --hash=sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e \ - --hash=sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668 +importlib-metadata==6.8.0 \ + --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ + --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 + # via keyring +jaraco-classes==3.3.0 \ + --hash=sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb \ + --hash=sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621 # via keyring jeepney==0.8.0 \ --hash=sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806 \ @@ -219,139 +323,119 @@ jeepney==0.8.0 \ # via # keyring # secretstorage -jinja2==3.0.3 \ - --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ - --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 +jinja2==3.1.2 \ + --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ + --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 # via gcp-releasetool -keyring==23.4.1 \ - --hash=sha256:17e49fb0d6883c2b4445359434dba95aad84aabb29bbff044ad0ed7100232eca \ - --hash=sha256:89cbd74d4683ed164c8082fb38619341097741323b3786905c6dac04d6915a55 +keyring==24.2.0 \ + --hash=sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6 \ + --hash=sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509 # via gcp-releasetool -markupsafe==2.0.1 \ - --hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \ - --hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \ - --hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \ - --hash=sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194 \ - --hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \ - --hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \ - --hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \ - --hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \ - --hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \ - --hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \ - --hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \ - --hash=sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a \ - --hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \ - --hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \ - --hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \ - --hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \ - --hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \ - --hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \ - --hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \ - --hash=sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047 \ - --hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \ - --hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \ - --hash=sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b \ - --hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \ - --hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \ - --hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \ - --hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \ - --hash=sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1 \ - --hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \ - --hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \ - --hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \ - --hash=sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee \ - --hash=sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f \ - --hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \ - --hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \ - --hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \ - --hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \ - --hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \ - --hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \ - --hash=sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86 \ - --hash=sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6 \ - --hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \ - --hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \ - --hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \ - --hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \ - --hash=sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e \ - --hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \ - --hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \ - --hash=sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f \ - --hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \ - --hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \ - --hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \ - --hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \ - --hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \ - --hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \ - --hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \ - --hash=sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a \ - --hash=sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207 \ - --hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \ - --hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \ - --hash=sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd \ - --hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \ - --hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \ - --hash=sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9 \ - --hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \ - --hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \ - --hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \ - --hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \ - --hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872 +markupsafe==2.1.3 \ + --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ + --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ + --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ + --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ + --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ + --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ + --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ + --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ + --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ + --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ + --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ + --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ + --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ + --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ + --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ + --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ + --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ + --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ + --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ + --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ + --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ + --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ + --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ + --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ + --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ + --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ + --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ + --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ + --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ + --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ + --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ + --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ + --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ + --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ + --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ + --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ + --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ + --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ + --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ + --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ + --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ + --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ + --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ + --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ + --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ + --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ + --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ + --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ + --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 # via jinja2 -packaging==21.3 \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 +more-itertools==9.1.0 \ + --hash=sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d \ + --hash=sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3 + # via jaraco-classes +packaging==23.1 \ + --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ + --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f # via gcp-releasetool -protobuf==3.20.2 \ - --hash=sha256:03d76b7bd42ac4a6e109742a4edf81ffe26ffd87c5993126d894fe48a120396a \ - --hash=sha256:09e25909c4297d71d97612f04f41cea8fa8510096864f2835ad2f3b3df5a5559 \ - --hash=sha256:18e34a10ae10d458b027d7638a599c964b030c1739ebd035a1dfc0e22baa3bfe \ - --hash=sha256:291fb4307094bf5ccc29f424b42268640e00d5240bf0d9b86bf3079f7576474d \ - --hash=sha256:2c0b040d0b5d5d207936ca2d02f00f765906622c07d3fa19c23a16a8ca71873f \ - --hash=sha256:384164994727f274cc34b8abd41a9e7e0562801361ee77437099ff6dfedd024b \ - --hash=sha256:3cb608e5a0eb61b8e00fe641d9f0282cd0eedb603be372f91f163cbfbca0ded0 \ - --hash=sha256:5d9402bf27d11e37801d1743eada54372f986a372ec9679673bfcc5c60441151 \ - --hash=sha256:712dca319eee507a1e7df3591e639a2b112a2f4a62d40fe7832a16fd19151750 \ - --hash=sha256:7a5037af4e76c975b88c3becdf53922b5ffa3f2cddf657574a4920a3b33b80f3 \ - --hash=sha256:8228e56a865c27163d5d1d1771d94b98194aa6917bcfb6ce139cbfa8e3c27334 \ - --hash=sha256:84a1544252a933ef07bb0b5ef13afe7c36232a774affa673fc3636f7cee1db6c \ - --hash=sha256:84fe5953b18a383fd4495d375fe16e1e55e0a3afe7b4f7b4d01a3a0649fcda9d \ - --hash=sha256:9c673c8bfdf52f903081816b9e0e612186684f4eb4c17eeb729133022d6032e3 \ - --hash=sha256:a9e5ae5a8e8985c67e8944c23035a0dff2c26b0f5070b2f55b217a1c33bbe8b1 \ - --hash=sha256:b4fdb29c5a7406e3f7ef176b2a7079baa68b5b854f364c21abe327bbeec01cdb \ - --hash=sha256:c184485e0dfba4dfd451c3bd348c2e685d6523543a0f91b9fd4ae90eb09e8422 \ - --hash=sha256:c9cdf251c582c16fd6a9f5e95836c90828d51b0069ad22f463761d27c6c19019 \ - --hash=sha256:e39cf61bb8582bda88cdfebc0db163b774e7e03364bbf9ce1ead13863e81e359 \ - --hash=sha256:e8fbc522303e09036c752a0afcc5c0603e917222d8bedc02813fd73b4b4ed804 \ - --hash=sha256:f34464ab1207114e73bba0794d1257c150a2b89b7a9faf504e00af7c9fd58978 \ - --hash=sha256:f52dabc96ca99ebd2169dadbe018824ebda08a795c7684a0b7d203a290f3adb0 +protobuf==3.20.3 \ + --hash=sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7 \ + --hash=sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c \ + --hash=sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2 \ + --hash=sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b \ + --hash=sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050 \ + --hash=sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9 \ + --hash=sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7 \ + --hash=sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454 \ + --hash=sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480 \ + --hash=sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469 \ + --hash=sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c \ + --hash=sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e \ + --hash=sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db \ + --hash=sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905 \ + --hash=sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b \ + --hash=sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86 \ + --hash=sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4 \ + --hash=sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402 \ + --hash=sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7 \ + --hash=sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4 \ + --hash=sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99 \ + --hash=sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee # via # gcp-docuploader # gcp-releasetool # google-api-core - # google-cloud-storage -pyasn1==0.4.8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba +pyasn1==0.5.0 \ + --hash=sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57 \ + --hash=sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde # via # pyasn1-modules # rsa -pyasn1-modules==0.2.8 \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 +pyasn1-modules==0.3.0 \ + --hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \ + --hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d # via google-auth pycparser==2.21 \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 # via cffi -pyjwt==2.4.0 \ - --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \ - --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba +pyjwt==2.7.0 \ + --hash=sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1 \ + --hash=sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074 # via gcp-releasetool -pyparsing==3.0.9 \ - --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ - --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc - # via packaging pyperclip==1.8.2 \ --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 # via gcp-releasetool @@ -359,9 +443,9 @@ python-dateutil==2.8.2 \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 # via gcp-releasetool -requests==2.27.1 \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d +requests==2.31.0 \ + --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ + --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 # via # gcp-releasetool # google-api-core @@ -374,10 +458,6 @@ secretstorage==3.3.3 \ --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \ --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99 # via keyring -setuptools==67.3.2 \ - --hash=sha256:95f00380ef2ffa41d9bba85d95b27689d923c93dfbafed4aecd7cf988a25e012 \ - --hash=sha256:bb6d8e508de562768f2027902929f8523932fcd1fb784e6d573d2cafac995a48 - # via -r requirements.in six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 @@ -385,19 +465,26 @@ six==1.16.0 \ # gcp-docuploader # google-auth # python-dateutil -typing-extensions==4.4.0 \ - --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ - --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e +typing-extensions==4.7.1 \ + --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ + --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 # via -r requirements.in -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 - # via requests -wheel==0.38.4 \ - --hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \ - --hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8 +urllib3==1.26.16 \ + --hash=sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f \ + --hash=sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14 + # via + # google-auth + # requests +wheel==0.40.0 \ + --hash=sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 \ + --hash=sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247 # via -r requirements.in -zipp==3.6.0 \ - --hash=sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832 \ - --hash=sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc +zipp==3.16.1 \ + --hash=sha256:0b37c326d826d5ca35f2b9685cd750292740774ef16190008b00a0227c256fe0 \ + --hash=sha256:857b158da2cbf427b376da1c24fd11faecbac5a4ac7523c3607f8a01f94c2ec0 # via importlib-metadata + +# WARNING: The following packages were not pinned, but pip requires them to be +# pinned when the requirements file includes hashes and the requirement is not +# satisfied by a package already installed. Consider using the --allow-unsafe flag. +# setuptools diff --git a/CHANGELOG.md b/CHANGELOG.md index ae49696384b..d81dddc71a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## [6.44.0](https://github.com/googleapis/java-spanner/compare/v6.43.2...v6.44.0) (2023-07-27) + + +### Features + +* Enable leader aware routing by default. This update contains performance optimisations that will reduce the latency of read/write transactions that originate from a region other than the default leader region. ([55c93ac](https://github.com/googleapis/java-spanner/commit/55c93acfeb8c2a6e5cc2f99ca20d0b72fbe6f8a4)) +* Foreign key on delete cascade ([#2340](https://github.com/googleapis/java-spanner/issues/2340)) ([f659105](https://github.com/googleapis/java-spanner/commit/f6591053db1c38f0e13e35cba2087a68d3ab1b01)) + + +### Bug Fixes + +* Add imports used in sample files. ([#2532](https://github.com/googleapis/java-spanner/issues/2532)) ([9a6d3fc](https://github.com/googleapis/java-spanner/commit/9a6d3fcbaa8d44f2e08407252a69beca1e4525b1)) + + +### Documentation + +* Fixing errors ([#2536](https://github.com/googleapis/java-spanner/issues/2536)) ([8aa407f](https://github.com/googleapis/java-spanner/commit/8aa407f3e1b4c6cf66b679e698992a6a5e3034c0)) + + +### Dependencies + +* Update dependency com.google.cloud:google-cloud-monitoring to v3.22.0 ([#2525](https://github.com/googleapis/java-spanner/issues/2525)) ([be0db6f](https://github.com/googleapis/java-spanner/commit/be0db6f10509fe3e5f74aa6ca6569552e65cb87a)) +* Update dependency com.google.cloud:google-cloud-monitoring to v3.23.0 ([#2542](https://github.com/googleapis/java-spanner/issues/2542)) ([67351dd](https://github.com/googleapis/java-spanner/commit/67351dd2cb557d461421c4a0321ae6d2d0fd9dcb)) +* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.13.1 ([#2537](https://github.com/googleapis/java-spanner/issues/2537)) ([9396d8d](https://github.com/googleapis/java-spanner/commit/9396d8d8b5450dd545687af6c513b7f6c7a6c283)) +* Update dependency com.google.cloud:google-cloud-trace to v2.21.0 ([#2526](https://github.com/googleapis/java-spanner/issues/2526)) ([2d95234](https://github.com/googleapis/java-spanner/commit/2d952347e0eb7db42387d8abb91d4b11d51cef9c)) +* Update dependency com.google.cloud:google-cloud-trace to v2.22.0 ([#2543](https://github.com/googleapis/java-spanner/issues/2543)) ([47c6a43](https://github.com/googleapis/java-spanner/commit/47c6a430405ebf1c2fe392991e3f4554e9ac37aa)) +* Update dependency org.graalvm.sdk:graal-sdk to v22.3.3 ([#2533](https://github.com/googleapis/java-spanner/issues/2533)) ([0806b11](https://github.com/googleapis/java-spanner/commit/0806b116cc6650b353cee26c83929e7bcdcb1c34)) +* Update dependency org.junit.vintage:junit-vintage-engine to v5.10.0 ([#2539](https://github.com/googleapis/java-spanner/issues/2539)) ([8801b2b](https://github.com/googleapis/java-spanner/commit/8801b2bf639b7903958668a2274a6e5d457de00a)) + ## [6.43.2](https://github.com/googleapis/java-spanner/compare/v6.43.1...v6.43.2) (2023-07-09) diff --git a/README.md b/README.md index 1438843e944..39db1ddc54f 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.18.0 + 26.19.0 pom import @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-spanner - 6.43.1 + 6.43.2 ``` @@ -50,20 +50,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.18.0') +implementation platform('com.google.cloud:libraries-bom:26.19.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.43.1' +implementation 'com.google.cloud:google-cloud-spanner:6.43.2' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.43.1" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.43.2" ``` @@ -258,6 +258,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/ | Add Json Column Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AddJsonColumnSample.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/AddJsonColumnSample.java) | | Add Jsonb Column Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AddJsonbColumnSample.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/AddJsonbColumnSample.java) | | Add Numeric Column Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AddNumericColumnSample.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/AddNumericColumnSample.java) | +| Alter Table With Foreign Key Delete Cascade Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.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/AlterTableWithForeignKeyDeleteCascadeSample.java) | | Async Dml Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AsyncDmlExample.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/AsyncDmlExample.java) | | Async Query Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AsyncQueryExample.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/AsyncQueryExample.java) | | Async Query To List Async Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/AsyncQueryToListAsyncExample.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/AsyncQueryToListAsyncExample.java) | @@ -276,9 +277,11 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/ | Create Instance Config Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceConfigSample.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/CreateInstanceConfigSample.java) | | Create Instance Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceExample.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/CreateInstanceExample.java) | | Create Instance With Processing Units Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateInstanceWithProcessingUnitsExample.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/CreateInstanceWithProcessingUnitsExample.java) | +| Create Table With Foreign Key Delete Cascade Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.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/CreateTableWithForeignKeyDeleteCascadeSample.java) | | Custom Timeout And Retry Settings Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/CustomTimeoutAndRetrySettingsExample.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/CustomTimeoutAndRetrySettingsExample.java) | | Delete Instance Config Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/DeleteInstanceConfigSample.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/DeleteInstanceConfigSample.java) | | Delete Using Dml Returning Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/DeleteUsingDmlReturningSample.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/DeleteUsingDmlReturningSample.java) | +| Drop Foreign Key Constraint Delete Cascade Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.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/DropForeignKeyConstraintDeleteCascadeSample.java) | | Enable Fine Grained Access | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/EnableFineGrainedAccess.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/EnableFineGrainedAccess.java) | | Get Commit Stats Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/GetCommitStatsSample.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/GetCommitStatsSample.java) | | 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) | @@ -421,7 +424,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.43.1 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.43.2 [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/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 28e386173c1..9d9536b3695 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.43.2 + 6.44.0 pom com.google.cloud google-cloud-shared-config - 1.5.6 + 1.5.7 Google Cloud Spanner BOM @@ -53,48 +53,48 @@ com.google.cloud google-cloud-spanner - 6.43.2 + 6.44.0 com.google.cloud google-cloud-spanner-executor - 6.43.2 + 6.44.0 com.google.cloud google-cloud-spanner test-jar - 6.43.2 + 6.44.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.43.2 + 6.44.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.43.2 + 6.44.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.43.2 + 6.44.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.43.2 + 6.44.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.43.2 + 6.44.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.43.2 + 6.44.0 diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 04225a79752..c99b25ee462 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.43.2 + 6.44.0 jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.43.2 + 6.44.0 diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 3be0f786558..922ec56c90b 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.43.2 + 6.44.0 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,12 +11,12 @@ com.google.cloud google-cloud-spanner-parent - 6.43.2 + 6.44.0 google-cloud-spanner 0.31.1 - 22.3.2 + 22.3.3 com.google.cloud.spanner.GceTestEnvConfig projects/gcloud-devel/instances/spanner-testing-east1 gcloud-devel diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractLazyInitializer.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractLazyInitializer.java index bc595b14662..73436852602 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractLazyInitializer.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractLazyInitializer.java @@ -19,6 +19,8 @@ /** * Generic {@link AbstractLazyInitializer} for any heavy-weight object that might throw an exception * during initialization. The underlying object is initialized at most once. + * + * @param Object which is to be initialized lazily */ public abstract class AbstractLazyInitializer { private final Object lock = new Object(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncResultSet.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncResultSet.java index 501ae054e9f..dfedcc4f8be 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncResultSet.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncResultSet.java @@ -60,7 +60,8 @@ enum CallbackResponse { CONTINUE, /** - * Tell the cursor to suspend all callbacks until application calls {@link RowCursor#resume()}. + * Tell the cursor to suspend all callbacks until application calls {@link + * ForwardingAsyncResultSet#resume()}. */ PAUSE, @@ -68,8 +69,8 @@ enum CallbackResponse { * Tell the cursor you are done receiving results, even if there are more results sitting in the * buffer. Once you return DONE, you will receive no further callbacks. * - *

Approximately equivalent to calling {@link RowCursor#cancel()}, and then returning {@code - * PAUSE}, but more clear, immediate, and idiomatic. + *

Approximately equivalent to calling {@link ForwardingAsyncResultSet#cancel()}, and then + * returning {@code PAUSE}, but more clear, immediate, and idiomatic. * *

It is legal to commit a transaction that owns this read before actually returning {@code * DONE}. @@ -105,17 +106,18 @@ interface ReadyCallback { *

  • Callback will stop being called once any of the following occurs: *
      *
    1. Callback returns {@link CallbackResponse#DONE}. - *
    2. {@link ResultSet#tryNext()} returns {@link CursorState#DONE}. - *
    3. {@link ResultSet#tryNext()} throws an exception. + *
    4. {@link ForwardingAsyncResultSet#tryNext()} returns {@link CursorState#DONE}. + *
    5. {@link ForwardingAsyncResultSet#tryNext()} throws an exception. *
    - *
  • Callback may possibly be invoked after a call to {@link ResultSet#cancel()} call, but the - * subsequent call to {@link #tryNext()} will yield a SpannerException. + *
  • Callback may possibly be invoked after a call to {@link + * ForwardingAsyncResultSet#cancel()} call, but the subsequent call to {@link #tryNext()} + * will yield a SpannerException. *
  • Spurious callbacks are possible where cursors are not actually ready. Typically callback * should return {@link CallbackResponse#CONTINUE} any time it sees {@link * CursorState#NOT_READY}. * * - *

    Flow Control

    + *

    Flow Control

    * * If no flow control is needed (say because result sizes are known in advance to be finite in * size) then async processing is simple. The following is a code example that transfers work from diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncRunner.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncRunner.java index 1703ef1ab27..3df3b9068b2 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncRunner.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncRunner.java @@ -18,6 +18,7 @@ import com.google.api.core.ApiFuture; import com.google.cloud.Timestamp; +import io.grpc.Status.Code; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; @@ -40,8 +41,8 @@ interface AsyncWork { *

    In most cases, the implementation will not need to catch {@code SpannerException}s from * Spanner operations, instead letting these propagate to the framework. The transaction runner * will take appropriate action based on the type of exception. In particular, implementations - * should never catch an exception of type {@link SpannerErrors#isAborted}: these indicate that - * some reads may have returned inconsistent data and the transaction attempt must be aborted. + * should never catch an exception of type {@link Code#ABORTED}: these indicate that some reads + * may have returned inconsistent data and the transaction attempt must be aborted. * * @param txn the transaction * @return future over the result of the work diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncTransactionManager.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncTransactionManager.java index 391be3d190b..c6ead432046 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncTransactionManager.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/AsyncTransactionManager.java @@ -18,7 +18,7 @@ import com.google.api.core.ApiFuture; import com.google.cloud.Timestamp; -import com.google.cloud.spanner.AsyncTransactionManager.TransactionContextFuture; +import com.google.cloud.spanner.Options.TransactionOption; import com.google.cloud.spanner.TransactionManager.TransactionState; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -43,7 +43,7 @@ * so can cause resources to be leaked and deadlocks. Easiest way to guarantee this is by calling * {@link #close()} in a finally block. * - * @see DatabaseClient#transactionManagerAsync() + * @see DatabaseClient#transactionManagerAsync(TransactionOption...) */ public interface AsyncTransactionManager extends AutoCloseable { /** @@ -91,10 +91,10 @@ Timestamp get(long timeout, TimeUnit unit) /** * {@link AsyncTransactionStep} is returned by {@link - * TransactionContextFuture#then(AsyncTransactionFunction)} and {@link - * AsyncTransactionStep#then(AsyncTransactionFunction)} and allows transaction steps that should - * be executed serially to be chained together. Each step can contain one or more statements that - * may execute in parallel. + * TransactionContextFuture#then(AsyncTransactionFunction, Executor)} and {@link + * AsyncTransactionStep#then(AsyncTransactionFunction, Executor)} and allows transaction steps + * that should be executed serially to be chained together. Each step can contain one or more + * statements that may execute in parallel. * *

    Example usage: * @@ -115,6 +115,9 @@ Timestamp get(long timeout, TimeUnit unit) * executor) * .commitAsync(); * } + * + * @param + * @param */ interface AsyncTransactionStep extends ApiFuture { /** @@ -140,6 +143,9 @@ AsyncTransactionStep then( * a {@link TransactionContext} and the output value of the previous transaction step as its input * parameters. The method should return an {@link ApiFuture} that will return the result of this * step. + * + * @param + * @param */ interface AsyncTransactionFunction { /** @@ -151,8 +157,8 @@ interface AsyncTransactionFunction { * @param input the result of the previous transaction step. * @return an {@link ApiFuture} that will return the result of this step, and that will be the * input of the next transaction step. This method should never return null. - * Instead, if the method does not have a return value, the method should return {@link - * ApiFutures#immediateFuture(null)}. + * Instead, if the method does not have a return value, the method should return + * ApiFutures#immediateFuture(null). */ ApiFuture apply(TransactionContext txn, I input) throws Exception; } @@ -160,7 +166,7 @@ interface AsyncTransactionFunction { /** * Creates a new read write transaction. This must be called before doing any other operation and * can only be called once. To create a new transaction for subsequent retries, see {@link - * #resetForRetry()}. + * #resetForRetryAsync()}. */ TransactionContextFuture beginAsync(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseAdminClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseAdminClient.java index 9168c2a11dd..8372bb61fd3 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseAdminClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseAdminClient.java @@ -137,7 +137,7 @@ default OperationFuture createDatabase( * Database db = op.waitFor().getResult(); * } * - * @see also #createDatabase(String, String, Iterable) + * @see #createDatabase(String, String, Iterable) */ OperationFuture createDatabase( Database database, Iterable statements) throws SpannerException; diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClient.java index a82225d5f44..f6acf04b6ca 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClient.java @@ -368,8 +368,8 @@ CommitResponse writeAtLeastOnceWithOptions( /** * Returns a transaction manager which allows manual management of transaction lifecycle. This API - * is meant for advanced users. Most users should instead use the {@link #readWriteTransaction()} - * API instead. + * is meant for advanced users. Most users should instead use the {@link + * #readWriteTransaction(TransactionOption...)} API instead. * *

    Example of using {@link TransactionManager}. * @@ -412,7 +412,7 @@ CommitResponse writeAtLeastOnceWithOptions( * *

    Example of a read write transaction. * - *

     
    +   * 
    {@code
        * Executor executor = Executors.newSingleThreadExecutor();
        * final long singerId = my_singer_id;
        * AsyncRunner runner = client.runAsync();
    @@ -432,7 +432,7 @@ CommitResponse writeAtLeastOnceWithOptions(
        *                   .build());
        *         },
        *         executor);
    -   * 
    + * }
    * * Options for a transaction can include: * @@ -449,7 +449,7 @@ CommitResponse writeAtLeastOnceWithOptions( /** * Returns an asynchronous transaction manager which allows manual management of transaction * lifecycle. This API is meant for advanced users. Most users should instead use the {@link - * #runAsync()} API instead. + * #runAsync(TransactionOption...)} API instead. * *

    Example of using {@link AsyncTransactionManager}. * @@ -514,12 +514,13 @@ CommitResponse writeAtLeastOnceWithOptions( * *

    Partitioned DML updates are used to execute a single DML statement with a different * execution strategy that provides different, and often better, scalability properties for large, - * table-wide operations than DML in a {@link #readWriteTransaction()} transaction. Smaller scoped - * statements, such as an OLTP workload, should prefer using {@link - * TransactionContext#executeUpdate(Statement)} with {@link #readWriteTransaction()}. + * table-wide operations than DML in a {@link #readWriteTransaction(TransactionOption...)} + * transaction. Smaller scoped statements, such as an OLTP workload, should prefer using {@link + * TransactionContext#executeUpdate(Statement,UpdateOption...)} with {@link + * #readWriteTransaction(TransactionOption...)}. * *

    That said, Partitioned DML is not a drop-in replacement for standard DML used in {@link - * #readWriteTransaction()}. + * #readWriteTransaction(TransactionOption...)}. * *

      *
    • The DML statement must be fully-partitionable. Specifically, the statement must be diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/InstanceConfigInfo.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/InstanceConfigInfo.java index f2b256fff40..39d32fc8a80 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/InstanceConfigInfo.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/InstanceConfigInfo.java @@ -117,9 +117,9 @@ public List getOptionalReplicas() { } /** - * Base configuration, e.g. projects//instanceConfigs/nam3, based on which this - * configuration is created. Only set for user managed configurations. The base config must refer - * to a configuration of type GOOGLE_MANAGED. + * Base configuration, e.g. {@code projects//instanceConfigs/nam3}, based on which + * this configuration is created. Only set for user managed configurations. The base config must + * refer to a configuration of type GOOGLE_MANAGED. */ public InstanceConfigInfo getBaseConfig() { return baseConfig; diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Operation.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Operation.java index bd238d3ef8b..f8f9d1e9779 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Operation.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Operation.java @@ -32,7 +32,12 @@ import javax.annotation.Nullable; import org.threeten.bp.Duration; -/** Represents a long running operation. */ +/** + * Represents a long-running operation. + * + * @param + * @param + */ // TODO(user): Implement other operations on Operation. public class Operation { 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 9712b508d5f..0d804bfd933 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 @@ -156,9 +156,9 @@ public static ListOption pageSize(int pageSize) { } /** - * If this is for a partitioned read & query and this field is set to `true`, the request will be - * executed via Spanner independent compute resources. The method is available in Beta mode (and - * is not generally available now). + * If this is for a partitioned read and query and this field is set to `true`, the request will + * be executed via Spanner independent compute resources. The method is available in Beta mode + * (and is not generally available now). */ @BetaApi public static DataBoostQueryOption dataBoostEnabled(Boolean dataBoostEnabled) { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Session.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Session.java index d322e0fb6d0..98c40b49ccc 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Session.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Session.java @@ -18,6 +18,7 @@ import com.google.api.core.ApiFuture; import com.google.api.core.InternalApi; +import com.google.cloud.spanner.Options.TransactionOption; import com.google.protobuf.Empty; /** @@ -48,11 +49,12 @@ public interface Session extends DatabaseClient, AutoCloseable { String getName(); /** - * Prepares a transaction for use by a subsequent {@link #readWriteTransaction()} or {@link - * #write(Iterable)} call. It is not necessary to call this method before running a transaction or - * performing a write, but doing so may allow one round trip of the protocol to be performed in - * advance; calling this method on an idle session that is expected to execute a transaction or - * write in the near future may reduce the latency of the subsequent transaction/write. + * Prepares a transaction for use by a subsequent {@link + * DatabaseClient#readWriteTransaction(TransactionOption...)} or {@link #write(Iterable)} call. It + * is not necessary to call this method before running a transaction or performing a write, but + * doing so may allow one round trip of the protocol to be performed in advance; calling this + * method on an idle session that is expected to execute a transaction or write in the near future + * may reduce the latency of the subsequent transaction/write. */ void prepareReadWriteTransaction(); 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 33fa826bfec..2f3bf10f9aa 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 @@ -32,6 +32,7 @@ import com.google.cloud.grpc.GcpManagedChannelOptions; import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.spanner.Options.QueryOption; +import com.google.cloud.spanner.Options.UpdateOption; import com.google.cloud.spanner.admin.database.v1.DatabaseAdminSettings; import com.google.cloud.spanner.admin.database.v1.stub.DatabaseAdminStubSettings; import com.google.cloud.spanner.admin.instance.v1.InstanceAdminSettings; @@ -134,10 +135,7 @@ public class SpannerOptions extends ServiceOptions { private final String compressorName; private final boolean leaderAwareRoutingEnabled; - /** - * Interface that can be used to provide {@link CallCredentials} instead of {@link Credentials} to - * {@link SpannerOptions}. - */ + /** Interface that can be used to provide {@link CallCredentials} to {@link SpannerOptions}. */ public interface CallCredentialsProvider { /** Return the {@link CallCredentials} to use for a gRPC call. */ CallCredentials getCallCredentials(); @@ -970,7 +968,7 @@ public DatabaseAdminStubSettings.Builder getDatabaseAdminStubSettingsBuilder() { /** * Sets a timeout specifically for Partitioned DML statements executed through {@link - * DatabaseClient#executePartitionedUpdate(Statement)}. The default is 2 hours. + * DatabaseClient#executePartitionedUpdate(Statement, UpdateOption...)}. The default is 2 hours. */ public Builder setPartitionedDmlTimeout(Duration timeout) { this.partitionedDmlTimeout = timeout; @@ -1065,9 +1063,7 @@ QueryOptions getEnvironmentQueryOptions() { /** * Sets a {@link CallCredentialsProvider} that can deliver {@link CallCredentials} to use on a - * per-gRPC basis. Any credentials returned by this {@link CallCredentialsProvider} will have - * preference above any {@link Credentials} that may have been set on the {@link SpannerOptions} - * instance. + * per-gRPC basis. */ public Builder setCallCredentialsProvider(CallCredentialsProvider callCredentialsProvider) { this.callCredentialsProvider = callCredentialsProvider; 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 b767bd6d82c..ad085ca2dcc 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 @@ -52,323 +52,423 @@ */ public interface StructReader { /** - * Returns the type of the underlying data. This will always be a {@code STRUCT} type, with fields - * corresponding to the data's columns. For the result of a read or query, this will always match - * the columns passed to the {@code read()} call or named in the query text, in order. + * @return the type of the underlying data. This will always be a {@code STRUCT} type, with fields + * corresponding to the data's columns. For the result of a read or query, this will always + * match the columns passed to the {@code read()} call or named in the query text, in order. */ Type getType(); /** - * Returns the number of columns in the underlying data. This includes any columns with {@code - * NULL} values. + * @return the number of columns in the underlying data. This includes any columns with {@code + * NULL} values. */ int getColumnCount(); /** - * Returns the index of the column named {@code columnName}. - * + * @param columnName name of the column + * @return the index of the column named {@code columnName}. * @throws IllegalArgumentException if there is not exactly one element of {@code * type().structFields()} with {@link Type.StructField#getName()} equal to {@code columnName} */ int getColumnIndex(String columnName); - /** Returns the type of a column. */ + /** + * @param columnIndex index of the column + * @return the type of a column. + */ Type getColumnType(int columnIndex); - /** Returns the type of a column. */ + /** + * @param columnName name of the column + * @return the type of a column. + */ Type getColumnType(String columnName); - /** Returns {@code true} if a column contains a {@code NULL} value. */ + /** + * @param columnIndex index of the column + * @return {@code true} if a column contains a {@code NULL} value. + */ boolean isNull(int columnIndex); - /** Returns {@code true} if a column contains a {@code NULL} value. */ + /** + * @param columnName name of the column + * @return {@code true} if a column contains a {@code NULL} value. + */ boolean isNull(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#bool()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#bool()}. + */ boolean getBoolean(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#bool()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#bool()}. + */ boolean getBoolean(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#int64()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#int64()}. + */ long getLong(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#int64()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#int64()}. + */ long getLong(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#float64()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#float64()}. + */ double getDouble(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#float64()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#float64()}. + */ double getDouble(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#numeric()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#numeric()}. + */ BigDecimal getBigDecimal(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#numeric()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#numeric()}. + */ BigDecimal getBigDecimal(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#string()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#string()}. + */ String getString(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#string()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#string()}. + */ String getString(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#json()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#json()}. + */ default String getJson(int columnIndex) { throw new UnsupportedOperationException("method should be overwritten"); } - /** Returns the value of a non-{@code NULL} column with type {@link Type#json()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#json()}. + */ default String getJson(String columnName) { throw new UnsupportedOperationException("method should be overwritten"); } - /** Returns the value of a non-{@code NULL} column with type {@link Type#pgJsonb()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#pgJsonb()}. + */ default String getPgJsonb(int columnIndex) { throw new UnsupportedOperationException("method should be overwritten"); } - /** Returns the value of a non-{@code NULL} column with type {@link Type#pgJsonb()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#pgJsonb()}. + */ default String getPgJsonb(String columnName) { throw new UnsupportedOperationException("method should be overwritten"); } - /** Returns the value of a non-{@code NULL} column with type {@link Type#bytes()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#bytes()}. + */ ByteArray getBytes(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#bytes()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#bytes()}. + */ ByteArray getBytes(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#timestamp()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#timestamp()}. + */ Timestamp getTimestamp(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#timestamp()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#timestamp()}. + */ Timestamp getTimestamp(String columnName); - /** Returns the value of a non-{@code NULL} column with type {@link Type#date()}. */ + /** + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@link Type#date()}. + */ Date getDate(int columnIndex); - /** Returns the value of a non-{@code NULL} column with type {@link Type#date()}. */ + /** + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@link Type#date()}. + */ Date getDate(String columnName); - /** Returns the value of a nullable column as a {@link Value}. */ + /** + * @param columnIndex index of the column + * @return the value of a nullable column as a {@link Value}. + */ default Value getValue(int columnIndex) { throw new UnsupportedOperationException("method should be overwritten"); } - /** Returns the value of a nullable column as a {@link Value}. */ + /** + * @param columnName name of the column + * @return the value of a nullable column as a {@link Value}. + */ default Value getValue(String columnName) { throw new UnsupportedOperationException("method should be overwritten"); } /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. - * + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. * @throws NullPointerException if any element of the array value is {@code NULL}. If the array * may contain {@code NULL} values, use {@link #getBooleanList(int)} instead. */ boolean[] getBooleanArray(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. - * + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. * @throws NullPointerException if any element of the array value is {@code NULL}. If the array * may contain {@code NULL} values, use {@link #getBooleanList(String)} instead. */ boolean[] getBooleanArray(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getBooleanList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.bool())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getBooleanList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. - * + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. * @throws NullPointerException if any element of the array value is {@code NULL}. If the array * may contain {@code NULL} values, use {@link #getLongList(int)} instead. */ long[] getLongArray(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. - * + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. * @throws NullPointerException if any element of the array value is {@code NULL}. If the array * may contain {@code NULL} values, use {@link #getLongList(String)} instead. */ long[] getLongArray(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getLongList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.int64())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getLongList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())}. - * + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())}. * @throws NullPointerException if any element of the array value is {@code NULL}. If the array * may contain {@code NULL} values, use {@link #getDoubleList(int)} instead. */ double[] getDoubleArray(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())}. - * + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())}. * @throws NullPointerException if any element of the array value is {@code NULL}. If the array * may contain {@code NULL} values, use {@link #getDoubleList(String)} instead. */ double[] getDoubleArray(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())} The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())} The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getDoubleList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())} The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.float64())} The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getDoubleList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.numeric())} The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.numeric())} The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getBigDecimalList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.numeric())} The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.numeric())} The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getBigDecimalList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.string())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.string())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getStringList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.string())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.string())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getStringList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.json())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.json())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ default List getJsonList(int columnIndex) { throw new UnsupportedOperationException("method should be overwritten"); }; /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.json())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.json())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ default List getJsonList(String columnName) { throw new UnsupportedOperationException("method should be overwritten"); }; /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.pgJsonb())} The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.pgJsonb())} The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ default List getPgJsonbList(int columnIndex) { throw new UnsupportedOperationException("method should be overwritten"); }; /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.pgJsonb())} The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.pgJsonb())} The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ default List getPgJsonbList(String columnName) { throw new UnsupportedOperationException("method should be overwritten"); }; /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.bytes())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.bytes())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getBytesList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.bytes())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.bytes())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getBytesList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.timestamp())} - * The list returned by this method is lazily constructed. Create a copy of it if you intend to - * access each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.timestamp())} + * The list returned by this method is lazily constructed. Create a copy of it if you intend + * to access each element in the list multiple times. */ List getTimestampList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.timestamp())} - * The list returned by this method is lazily constructed. Create a copy of it if you intend to - * access each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.timestamp())} + * The list returned by this method is lazily constructed. Create a copy of it if you intend + * to access each element in the list multiple times. */ List getTimestampList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.date())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.date())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getDateList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.date())}. The - * list returned by this method is lazily constructed. Create a copy of it if you intend to access - * each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.date())}. The + * list returned by this method is lazily constructed. Create a copy of it if you intend to + * access each element in the list multiple times. */ List getDateList(String columnName); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.struct(...))} - * The list returned by this method is lazily constructed. Create a copy of it if you intend to - * access each element in the list multiple times. + * @param columnIndex index of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.struct(...))} + * The list returned by this method is lazily constructed. Create a copy of it if you intend + * to access each element in the list multiple times. */ List getStructList(int columnIndex); /** - * Returns the value of a non-{@code NULL} column with type {@code Type.array(Type.struct(...))} - * The list returned by this method is lazily constructed. Create a copy of it if you intend to - * access each element in the list multiple times. + * @param columnName name of the column + * @return the value of a non-{@code NULL} column with type {@code Type.array(Type.struct(...))} + * The list returned by this method is lazily constructed. Create a copy of it if you intend + * to access each element in the list multiple times. */ List getStructList(String columnName); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TimestampBound.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TimestampBound.java index 5d14687b4c0..6502077cd65 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TimestampBound.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TimestampBound.java @@ -46,7 +46,7 @@ * *

      Each type of timestamp bound is discussed in detail below. * - *

      Strong reads

      + *

      Strong reads

      * *

      Strong reads are guaranteed to see the effects of all transactions that have committed before * the start of the read. Furthermore, all rows yielded by a single read are consistent with each @@ -59,7 +59,7 @@ * *

      Use {@link #strong()} to create a bound of this type. * - *

      Exact Staleness

      + *

      Exact Staleness

      * *

      These timestamp bounds execute reads at a user-specified timestamp. Reads at a timestamp are * guaranteed to see a consistent prefix of the global transaction history: they observe @@ -78,7 +78,7 @@ *

      Use {@link #ofReadTimestamp(Timestamp)} and {@link #ofExactStaleness(long, TimeUnit)} to * create a bound of this type. * - *

      Bounded Staleness

      + *

      Bounded Staleness

      * *

      Bounded staleness modes allow Cloud Spanner to pick the read timestamp, subject to a * user-provided staleness bound. Cloud Spanner chooses the newest timestamp within the staleness @@ -103,7 +103,7 @@ *

      Use {@link #ofMinReadTimestamp(Timestamp)} and {@link #ofMaxStaleness(long, TimeUnit)} to * create a bound of this type. * - *

      Old Read Timestamps and Garbage Collection

      + *

      Old Read Timestamps and Garbage Collection

      * *

      Cloud Spanner continuously garbage collects deleted and overwritten data in the background to * reclaim storage space. This process is known as "version GC". By default, version GC reclaims diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionContext.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionContext.java index b858616c131..4a21d9c2cca 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionContext.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionContext.java @@ -17,6 +17,7 @@ package com.google.cloud.spanner; import com.google.api.core.ApiFuture; +import com.google.cloud.spanner.Options.TransactionOption; import com.google.cloud.spanner.Options.UpdateOption; import com.google.spanner.v1.ResultSetStats; @@ -44,7 +45,7 @@ *

      Conceptually, a read-write transaction consists of zero or more reads or SQL queries followed * by a commit. * - *

      Semantics

      + *

      Semantics

      * *

      Cloud Spanner can commit the transaction if all read locks it acquired are still valid at * commit time, and it is able to acquire write locks for all writes. Cloud Spanner can abort the @@ -55,7 +56,7 @@ * transaction's locks were held for. It is an error to use Cloud Spanner locks for any sort of * mutual exclusion other than between Cloud Spanner transactions themselves. * - *

      Retrying Aborted Transactions

      + *

      Retrying Aborted Transactions

      * *

      When a transaction aborts, the application can choose to retry the whole transaction again. To * maximize the chances of successfully committing the retry, the client should execute the retry in @@ -71,7 +72,7 @@ *

      Application code does not need to retry explicitly; {@link TransactionRunner} will * automatically retry a transaction if an attempt results in an abort. * - *

      Idle Transactions

      + *

      Idle Transactions

      * *

      A transaction is considered idle if it has no outstanding reads or SQL queries and has not * started a read or SQL query within the last 10 seconds. Idle transactions can be aborted by Cloud @@ -81,7 +82,7 @@ *

      If this behavior is undesirable, periodically executing a simple SQL query in the transaction * (e.g., {@code SELECT 1}) prevents the transaction from becoming idle. * - * @see Session#readWriteTransaction() + * @see DatabaseClient#readWriteTransaction(TransactionOption...) * @see TransactionRunner */ public interface TransactionContext extends ReadContext { @@ -118,13 +119,13 @@ default ApiFuture bufferAsync(Iterable mutations) { long executeUpdate(Statement statement, UpdateOption... options); /** - * Same as {@link #executeUpdate(Statement)}, but is guaranteed to be non-blocking. If multiple - * asynchronous update statements are submitted to the same read/write transaction, the statements - * are guaranteed to be submitted to Cloud Spanner in the order that they were submitted in the - * client. This does however not guarantee that an asynchronous update statement will see the - * results of all previously submitted statements, as the execution of the statements can be - * parallel. If you rely on the results of a previous statement, you should block until the result - * of that statement is known and has been returned to the client. + * Same as {@link #executeUpdate(Statement,UpdateOption...)}, but is guaranteed to be + * non-blocking. If multiple asynchronous update statements are submitted to the same read/write + * transaction, the statements are guaranteed to be submitted to Cloud Spanner in the order that + * they were submitted in the client. This does however not guarantee that an asynchronous update + * statement will see the results of all previously submitted statements, as the execution of the + * statements can be parallel. If you rely on the results of a previous statement, you should + * block until the result of that statement is known and has been returned to the client. */ ApiFuture executeUpdateAsync(Statement statement, UpdateOption... options); @@ -179,13 +180,13 @@ default ResultSet analyzeUpdateStatement( long[] batchUpdate(Iterable statements, UpdateOption... options); /** - * Same as {@link #batchUpdate(Iterable)}, but is guaranteed to be non-blocking. If multiple - * asynchronous update statements are submitted to the same read/write transaction, the statements - * are guaranteed to be submitted to Cloud Spanner in the order that they were submitted in the - * client. This does however not guarantee that an asynchronous update statement will see the - * results of all previously submitted statements, as the execution of the statements can be - * parallel. If you rely on the results of a previous statement, you should block until the result - * of that statement is known and has been returned to the client. + * Same as {@link #batchUpdate(Iterable, UpdateOption...)}, but is guaranteed to be non-blocking. + * If multiple asynchronous update statements are submitted to the same read/write transaction, + * the statements are guaranteed to be submitted to Cloud Spanner in the order that they were + * submitted in the client. This does however not guarantee that an asynchronous update statement + * will see the results of all previously submitted statements, as the execution of the statements + * can be parallel. If you rely on the results of a previous statement, you should block until the + * result of that statement is known and has been returned to the client. */ ApiFuture batchUpdateAsync(Iterable statements, UpdateOption... options); } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionManager.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionManager.java index 0615e45b940..76656efea28 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionManager.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionManager.java @@ -17,6 +17,7 @@ package com.google.cloud.spanner; import com.google.cloud.Timestamp; +import com.google.cloud.spanner.Options.TransactionOption; /** * An interface for managing the life cycle of a read write transaction including all its retries. @@ -33,7 +34,7 @@ * can cause resources to be leaked and deadlocks. Easiest way to guarantee this is by calling * {@link #close()} in a finally block. * - * @see DatabaseClient#transactionManager() + * @see DatabaseClient#transactionManager(TransactionOption...) */ public interface TransactionManager extends AutoCloseable { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunner.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunner.java index e7167451f01..09bc11f152b 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunner.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/TransactionRunner.java @@ -17,13 +17,14 @@ package com.google.cloud.spanner; import com.google.cloud.Timestamp; +import com.google.cloud.spanner.Options.TransactionOption; import javax.annotation.Nullable; /** * An interface for executing a body of work in the context of a read-write transaction, with * retries for transaction aborts. See {@link TransactionContext} for a description of transaction * semantics. {@code TransactionRunner} instances are obtained by calling {@link - * Session#readWriteTransaction()}. + * DatabaseClient#readWriteTransaction(TransactionOption...)}. * *

      A {@code TransactionRunner} instance can only be used for a single invocation of {@link * #run(TransactionCallable)}. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ValueBinder.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ValueBinder.java index e16b858faa8..07066470da6 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ValueBinder.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ValueBinder.java @@ -31,6 +31,8 @@ * *

      {@code ValueBinder} subclasses typically carry state and are therefore not thread-safe, * although the core implementation itself is thread-safe. + * + * @param The context which is used to bind the {@link Value}. */ public abstract class ValueBinder { /** 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 d7bfbec1178..2cc03907b7b 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 @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java index 357efd0042c..01a82a54712 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/package-info.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/package-info.java index f89d6b56ed0..d898df2e6a7 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/package-info.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java index 3cebe17a2d0..0e85c8127d7 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java index 7f60dcc14a1..0697aaf54f5 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminCallableFactory.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminCallableFactory.java index eaec711af7c..6438decf4e5 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminCallableFactory.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java index 97c318b0562..5a267d5a5d1 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,8 +28,8 @@ import com.google.api.gax.grpc.GrpcStubCallableFactory; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.RequestParamsBuilder; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.iam.v1.GetIamPolicyRequest; import com.google.iam.v1.Policy; import com.google.iam.v1.SetIamPolicyRequest; @@ -371,9 +371,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(listDatabasesMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings createDatabaseTransportSettings = @@ -381,9 +381,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(createDatabaseMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings getDatabaseTransportSettings = @@ -391,9 +391,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(getDatabaseMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings updateDatabaseTransportSettings = @@ -401,9 +401,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(updateDatabaseMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database.name", String.valueOf(request.getDatabase().getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database.name", String.valueOf(request.getDatabase().getName())); + return builder.build(); }) .build(); GrpcCallSettings updateDatabaseDdlTransportSettings = @@ -411,9 +411,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(updateDatabaseDdlMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database", String.valueOf(request.getDatabase())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); }) .build(); GrpcCallSettings dropDatabaseTransportSettings = @@ -421,9 +421,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(dropDatabaseMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database", String.valueOf(request.getDatabase())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); }) .build(); GrpcCallSettings @@ -432,9 +432,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(getDatabaseDdlMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database", String.valueOf(request.getDatabase())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); }) .build(); GrpcCallSettings setIamPolicyTransportSettings = @@ -442,9 +442,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(setIamPolicyMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("resource", String.valueOf(request.getResource())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); }) .build(); GrpcCallSettings getIamPolicyTransportSettings = @@ -452,9 +452,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(getIamPolicyMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("resource", String.valueOf(request.getResource())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); }) .build(); GrpcCallSettings @@ -463,9 +463,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(testIamPermissionsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("resource", String.valueOf(request.getResource())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); }) .build(); GrpcCallSettings createBackupTransportSettings = @@ -473,9 +473,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(createBackupMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings copyBackupTransportSettings = @@ -483,9 +483,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(copyBackupMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings getBackupTransportSettings = @@ -493,9 +493,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(getBackupMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings updateBackupTransportSettings = @@ -503,9 +503,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(updateBackupMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("backup.name", String.valueOf(request.getBackup().getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("backup.name", String.valueOf(request.getBackup().getName())); + return builder.build(); }) .build(); GrpcCallSettings deleteBackupTransportSettings = @@ -513,9 +513,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(deleteBackupMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings listBackupsTransportSettings = @@ -523,9 +523,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(listBackupsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings restoreDatabaseTransportSettings = @@ -533,9 +533,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(restoreDatabaseMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings @@ -545,9 +545,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(listDatabaseOperationsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings @@ -556,9 +556,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(listBackupOperationsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings @@ -567,9 +567,9 @@ protected GrpcDatabaseAdminStub( .setMethodDescriptor(listDatabaseRolesMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminCallableFactory.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminCallableFactory.java index e443d8f614b..25be54f9537 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminCallableFactory.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java index 12065de983a..d99345bc9de 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,6 +37,7 @@ import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.RequestParamsBuilder; import com.google.api.gax.rpc.UnaryCallable; import com.google.common.collect.ImmutableMap; import com.google.iam.v1.GetIamPolicyRequest; @@ -1043,88 +1044,190 @@ protected HttpJsonDatabaseAdminStub( HttpJsonCallSettings.newBuilder() .setMethodDescriptor(listDatabasesMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings createDatabaseTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(createDatabaseMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings getDatabaseTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getDatabaseMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings updateDatabaseTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(updateDatabaseMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database.name", String.valueOf(request.getDatabase().getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings updateDatabaseDdlTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(updateDatabaseDdlMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); + }) .build(); HttpJsonCallSettings dropDatabaseTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(dropDatabaseMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); + }) .build(); HttpJsonCallSettings getDatabaseDdlTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getDatabaseDdlMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); + }) .build(); HttpJsonCallSettings setIamPolicyTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(setIamPolicyMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); + }) .build(); HttpJsonCallSettings getIamPolicyTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getIamPolicyMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); + }) .build(); HttpJsonCallSettings testIamPermissionsTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(testIamPermissionsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); + }) .build(); HttpJsonCallSettings createBackupTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(createBackupMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings copyBackupTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(copyBackupMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings getBackupTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getBackupMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings updateBackupTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(updateBackupMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("backup.name", String.valueOf(request.getBackup().getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings deleteBackupTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(deleteBackupMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings listBackupsTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(listBackupsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings restoreDatabaseTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(restoreDatabaseMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings listDatabaseOperationsTransportSettings = @@ -1132,6 +1235,12 @@ protected HttpJsonDatabaseAdminStub( .newBuilder() .setMethodDescriptor(listDatabaseOperationsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings listBackupOperationsTransportSettings = @@ -1139,12 +1248,24 @@ protected HttpJsonDatabaseAdminStub( .newBuilder() .setMethodDescriptor(listBackupOperationsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings listDatabaseRolesTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(listDatabaseRolesMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); this.listDatabasesCallable = diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClient.java index 0284630834d..325f0704ad6 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminSettings.java index 4409fa180e2..9e4e5900f69 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 1bbb310baca..156db464da8 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 @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminCallableFactory.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminCallableFactory.java index f4f94054039..b5f7e0aee05 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminCallableFactory.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminStub.java index aef9f8725c7..39b83be1ed9 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/GrpcInstanceAdminStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,8 @@ import com.google.api.gax.grpc.GrpcStubCallableFactory; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.RequestParamsBuilder; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.iam.v1.GetIamPolicyRequest; import com.google.iam.v1.Policy; import com.google.iam.v1.SetIamPolicyRequest; @@ -301,9 +301,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(listInstanceConfigsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings getInstanceConfigTransportSettings = @@ -311,9 +311,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(getInstanceConfigMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings createInstanceConfigTransportSettings = @@ -321,9 +321,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(createInstanceConfigMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings updateInstanceConfigTransportSettings = @@ -331,11 +331,11 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(updateInstanceConfigMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put( + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( "instance_config.name", String.valueOf(request.getInstanceConfig().getName())); - return params.build(); + return builder.build(); }) .build(); GrpcCallSettings deleteInstanceConfigTransportSettings = @@ -343,9 +343,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(deleteInstanceConfigMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings @@ -356,9 +356,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(listInstanceConfigOperationsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings listInstancesTransportSettings = @@ -366,9 +366,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(listInstancesMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings getInstanceTransportSettings = @@ -376,9 +376,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(getInstanceMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings createInstanceTransportSettings = @@ -386,9 +386,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(createInstanceMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("parent", String.valueOf(request.getParent())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); }) .build(); GrpcCallSettings updateInstanceTransportSettings = @@ -396,9 +396,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(updateInstanceMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("instance.name", String.valueOf(request.getInstance().getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("instance.name", String.valueOf(request.getInstance().getName())); + return builder.build(); }) .build(); GrpcCallSettings deleteInstanceTransportSettings = @@ -406,9 +406,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(deleteInstanceMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings setIamPolicyTransportSettings = @@ -416,9 +416,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(setIamPolicyMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("resource", String.valueOf(request.getResource())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); }) .build(); GrpcCallSettings getIamPolicyTransportSettings = @@ -426,9 +426,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(getIamPolicyMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("resource", String.valueOf(request.getResource())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); }) .build(); GrpcCallSettings @@ -437,9 +437,9 @@ protected GrpcInstanceAdminStub( .setMethodDescriptor(testIamPermissionsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("resource", String.valueOf(request.getResource())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); }) .build(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminCallableFactory.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminCallableFactory.java index 73ca894a437..9781fe2448d 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminCallableFactory.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/HttpJsonInstanceAdminCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 7266e61881f..8acda6dfd30 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 @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,6 +35,7 @@ import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.RequestParamsBuilder; import com.google.api.gax.rpc.UnaryCallable; import com.google.common.collect.ImmutableMap; import com.google.iam.v1.GetIamPolicyRequest; @@ -755,29 +756,61 @@ protected HttpJsonInstanceAdminStub( .newBuilder() .setMethodDescriptor(listInstanceConfigsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings getInstanceConfigTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getInstanceConfigMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings createInstanceConfigTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(createInstanceConfigMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings updateInstanceConfigTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(updateInstanceConfigMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( + "instance_config.name", + String.valueOf(request.getInstanceConfig().getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings deleteInstanceConfigTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(deleteInstanceConfigMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings listInstanceConfigOperationsTransportSettings = @@ -786,48 +819,102 @@ protected HttpJsonInstanceAdminStub( newBuilder() .setMethodDescriptor(listInstanceConfigOperationsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings listInstancesTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(listInstancesMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings getInstanceTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getInstanceMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings createInstanceTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(createInstanceMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("parent", String.valueOf(request.getParent())); + return builder.build(); + }) .build(); HttpJsonCallSettings updateInstanceTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(updateInstanceMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("instance.name", String.valueOf(request.getInstance().getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings deleteInstanceTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(deleteInstanceMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings setIamPolicyTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(setIamPolicyMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); + }) .build(); HttpJsonCallSettings getIamPolicyTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getIamPolicyMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); + }) .build(); HttpJsonCallSettings testIamPermissionsTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(testIamPermissionsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("resource", String.valueOf(request.getResource())); + return builder.build(); + }) .build(); this.listInstanceConfigsCallable = diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStub.java index e4e6f339a63..ce60b285795 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStubSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStubSettings.java index 547107b4c98..edbb97ba1e0 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStubSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/instance/v1/stub/InstanceAdminStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java index b0ae8863e6f..0d9c431e171 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/AbstractStatementParser.java @@ -57,7 +57,12 @@ public abstract class AbstractStatementParser { Dialect.POSTGRESQL, PostgreSQLStatementParser.class); - /** Get an instance of {@link AbstractStatementParser} for the specified dialect. */ + /** + * Get an instance of {@link AbstractStatementParser} for the specified dialect. + * + * @param dialect + * @return + */ public static AbstractStatementParser getInstance(Dialect dialect) { synchronized (lock) { if (!INSTANCES.containsKey(dialect)) { @@ -227,21 +232,21 @@ public boolean equals(Object other) { && Objects.equals(this.sqlWithoutComments, o.sqlWithoutComments); } - /** Returns the type of statement that was recognized by the parser. */ + /** @return the type of statement that was recognized by the parser. */ @InternalApi public StatementType getType() { return type; } - /** Returns whether the statement has a returning clause or not. * */ + /** @return whether the statement has a returning clause or not. */ @InternalApi public boolean hasReturningClause() { return this.returningClause; } /** - * Returns true if the statement is a query that will return a {@link - * com.google.cloud.spanner.ResultSet}. + * @return true if the statement is a query that will return a {@link + * com.google.cloud.spanner.ResultSet}. */ @InternalApi public boolean isQuery() { @@ -259,8 +264,8 @@ public boolean isQuery() { } /** - * Returns true if the statement is a DML statement or a client side statement that will return - * an update count. + * @return true if the statement is a DML statement or a client side statement that will return + * an update count. */ @InternalApi public boolean isUpdate() { @@ -277,7 +282,7 @@ public boolean isUpdate() { return false; } - /** Returns true if the statement is a DDL statement. */ + /** @return true if the statement is a DDL statement. */ @InternalApi public boolean isDdl() { switch (type) { @@ -293,8 +298,8 @@ public boolean isDdl() { } /** - * Returns the {@link ClientSideStatementType} of this statement. This method may only be called - * on statements of type {@link StatementType#CLIENT_SIDE}. + * @return the {@link ClientSideStatementType} of this statement. This method may only be called + * on statements of type {@link StatementType#CLIENT_SIDE}. */ @InternalApi public ClientSideStatementType getClientSideStatementType() { @@ -326,7 +331,7 @@ Statement mergeQueryOptions(Statement statement, QueryOptions defaultQueryOption .build(); } - /** Returns the SQL statement with all comments removed from the SQL string. */ + /** @return the SQL statement with all comments removed from the SQL string. */ @InternalApi public String getSqlWithoutComments() { return sqlWithoutComments; @@ -494,6 +499,12 @@ private boolean statementStartsWith(String sql, Iterable checkStatements @InternalApi abstract String removeCommentsAndTrimInternal(String sql); + /** + * Removes comments from and trims the given sql statement using the dialect of this parser. + * + * @param sql The sql statement to remove comments from and to trim. + * @return the sql statement without the comments and leading and trailing spaces. + */ @InternalApi public String removeCommentsAndTrim(String sql) { return removeCommentsAndTrimInternal(sql); @@ -531,6 +542,19 @@ public static class ParametersInfo { abstract ParametersInfo convertPositionalParametersToNamedParametersInternal( char paramChar, String sql); + /** + * Converts all positional parameters (?) in the given sql string into named parameters. The + * parameters are named @p1, @p2, etc. This method is used when converting a JDBC statement that + * uses positional parameters to a Cloud Spanner {@link Statement} instance that requires named + * parameters. The input SQL string may not contain any comments. There is an exception case if + * the statement starts with a GSQL comment which forces it to be interpreted as a GoogleSql + * statement. + * + * @param sql The sql string without comments that should be converted + * @return A {@link ParametersInfo} object containing a string with named parameters instead of + * positional parameters and the number of parameters. + * @throws SpannerException If the input sql string contains an unclosed string/byte literal. + */ @InternalApi public ParametersInfo convertPositionalParametersToNamedParameters(char paramChar, String sql) { return convertPositionalParametersToNamedParametersInternal(paramChar, sql); @@ -557,6 +581,13 @@ static int countOccurrencesOf(char c, String string) { @InternalApi protected abstract boolean checkReturningClauseInternal(String sql); + /** + * Checks if the given SQL string contains a Returning clause. This method is used only in case of + * a DML statement. + * + * @param sql The sql string without comments that has to be evaluated. + * @return A boolean indicating whether the sql string has a Returning clause or not. + */ @InternalApi public boolean checkReturningClause(String sql) { return checkReturningClauseInternal(sql); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java index a40ad087b66..0eb07bc1e81 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java index 6cec68b9a21..d76625776fd 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/package-info.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/package-info.java index a3bd04b9f3f..9a10323aa51 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/package-info.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerCallableFactory.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerCallableFactory.java index e427ff18014..34ab0590003 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerCallableFactory.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java index 0e99079a91f..a4b04339013 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,9 +23,9 @@ import com.google.api.gax.grpc.GrpcCallSettings; import com.google.api.gax.grpc.GrpcStubCallableFactory; import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.RequestParamsBuilder; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.longrunning.stub.GrpcOperationsStub; import com.google.protobuf.Empty; import com.google.spanner.v1.BatchCreateSessionsRequest; @@ -267,9 +267,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(createSessionMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database", String.valueOf(request.getDatabase())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); }) .build(); GrpcCallSettings @@ -278,9 +278,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(batchCreateSessionsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database", String.valueOf(request.getDatabase())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); }) .build(); GrpcCallSettings getSessionTransportSettings = @@ -288,9 +288,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(getSessionMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings listSessionsTransportSettings = @@ -298,9 +298,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(listSessionsMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("database", String.valueOf(request.getDatabase())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); }) .build(); GrpcCallSettings deleteSessionTransportSettings = @@ -308,9 +308,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(deleteSessionMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("name", String.valueOf(request.getName())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); }) .build(); GrpcCallSettings executeSqlTransportSettings = @@ -318,9 +318,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(executeSqlMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings executeStreamingSqlTransportSettings = @@ -328,9 +328,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(executeStreamingSqlMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings @@ -339,9 +339,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(executeBatchDmlMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings readTransportSettings = @@ -349,9 +349,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(readMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings streamingReadTransportSettings = @@ -359,9 +359,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(streamingReadMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings beginTransactionTransportSettings = @@ -369,9 +369,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(beginTransactionMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings commitTransportSettings = @@ -379,9 +379,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(commitMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings rollbackTransportSettings = @@ -389,9 +389,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(rollbackMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings partitionQueryTransportSettings = @@ -399,9 +399,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(partitionQueryMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); GrpcCallSettings partitionReadTransportSettings = @@ -409,9 +409,9 @@ protected GrpcSpannerStub( .setMethodDescriptor(partitionReadMethodDescriptor) .setParamsExtractor( request -> { - ImmutableMap.Builder params = ImmutableMap.builder(); - params.put("session", String.valueOf(request.getSession())); - return params.build(); + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); }) .build(); diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerCallableFactory.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerCallableFactory.java index 97dfaf2dab9..aa5f3302ac3 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerCallableFactory.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerStub.java index 776f27e49db..10e20e619e4 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/HttpJsonSpannerStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import com.google.api.gax.httpjson.ProtoMessageResponseParser; import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.RequestParamsBuilder; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; import com.google.protobuf.Empty; @@ -681,6 +682,12 @@ protected HttpJsonSpannerStub( HttpJsonCallSettings.newBuilder() .setMethodDescriptor(createSessionMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); + }) .build(); HttpJsonCallSettings batchCreateSessionsTransportSettings = @@ -688,72 +695,156 @@ protected HttpJsonSpannerStub( .newBuilder() .setMethodDescriptor(batchCreateSessionsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); + }) .build(); HttpJsonCallSettings getSessionTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(getSessionMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings listSessionsTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(listSessionsMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("database", String.valueOf(request.getDatabase())); + return builder.build(); + }) .build(); HttpJsonCallSettings deleteSessionTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(deleteSessionMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("name", String.valueOf(request.getName())); + return builder.build(); + }) .build(); HttpJsonCallSettings executeSqlTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(executeSqlMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings executeStreamingSqlTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(executeStreamingSqlMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings executeBatchDmlTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(executeBatchDmlMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings readTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(readMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings streamingReadTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(streamingReadMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings beginTransactionTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(beginTransactionMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings commitTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(commitMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings rollbackTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(rollbackMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings partitionQueryTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(partitionQueryMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); HttpJsonCallSettings partitionReadTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(partitionReadMethodDescriptor) .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add("session", String.valueOf(request.getSession())); + return builder.build(); + }) .build(); this.createSessionCallable = diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java index 7f7a4d95d49..4a5886cdc5b 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java index ff5a6b9bb28..c330f39e58f 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.admin.database.v1/reflect-config.json b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.admin.database.v1/reflect-config.json new file mode 100644 index 00000000000..b0045af3fac --- /dev/null +++ b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.admin.database.v1/reflect-config.json @@ -0,0 +1,2315 @@ +[ + { + "name": "com.google.api.ClientLibraryDestination", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibraryOrganization", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.FieldBehavior", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.LaunchStage", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$History", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Style", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfigDelta", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfigDelta$Action", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfigDelta$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditLogConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditLogConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditLogConfig$LogType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Binding", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Binding$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.BindingDelta", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.BindingDelta$Action", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.BindingDelta$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetIamPolicyRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetIamPolicyRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetPolicyOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetPolicyOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Policy", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Policy$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.PolicyDelta", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.PolicyDelta$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.SetIamPolicyRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.SetIamPolicyRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.CancelOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.CancelOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.DeleteOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.DeleteOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.GetOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.GetOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.Operation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.Operation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.OperationInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.OperationInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.WaitOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.WaitOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Any", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Any$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$VerificationState", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$CType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$JSType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionRetention", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionTargetType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Semantic", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Empty", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Empty$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.FieldMask", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.FieldMask$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.rpc.Status", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.rpc.Status$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.Backup", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.Backup$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.Backup$State", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.BackupInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.BackupInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig$EncryptionType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CopyBackupRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupEncryptionConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupEncryptionConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupEncryptionConfig$EncryptionType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateBackupRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateDatabaseMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateDatabaseMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateDatabaseRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.CreateDatabaseRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.Database", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.Database$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.Database$State", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DatabaseDialect", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DatabaseRole", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DatabaseRole$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DdlStatementActionInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DdlStatementActionInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DeleteBackupRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DeleteBackupRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DropDatabaseRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.DropDatabaseRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.EncryptionConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.EncryptionConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.EncryptionInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.EncryptionInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.EncryptionInfo$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetBackupRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetBackupRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetDatabaseDdlRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetDatabaseDdlRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetDatabaseDdlResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetDatabaseDdlResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetDatabaseRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.GetDatabaseRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupOperationsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupOperationsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupOperationsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupOperationsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListBackupsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseOperationsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseOperationsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseOperationsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseOperationsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseRolesRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseRolesRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseRolesResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabaseRolesResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabasesRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabasesRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabasesResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.ListDatabasesResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.OperationProgress", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.OperationProgress$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig$EncryptionType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreDatabaseRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.RestoreSourceType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateBackupRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateBackupRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.database.v1.UpdateDatabaseRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.Expr", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.Expr$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } +] \ No newline at end of file diff --git a/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.admin.instance.v1/reflect-config.json b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.admin.instance.v1/reflect-config.json new file mode 100644 index 00000000000..2bcdc77a649 --- /dev/null +++ b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.admin.instance.v1/reflect-config.json @@ -0,0 +1,1919 @@ +[ + { + "name": "com.google.api.ClientLibraryDestination", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibraryOrganization", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.FieldBehavior", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.LaunchStage", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$History", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Style", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfigDelta", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfigDelta$Action", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditConfigDelta$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditLogConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditLogConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.AuditLogConfig$LogType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Binding", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Binding$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.BindingDelta", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.BindingDelta$Action", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.BindingDelta$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetIamPolicyRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetIamPolicyRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetPolicyOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.GetPolicyOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Policy", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.Policy$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.PolicyDelta", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.PolicyDelta$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.SetIamPolicyRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.SetIamPolicyRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.iam.v1.TestIamPermissionsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.CancelOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.CancelOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.DeleteOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.DeleteOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.GetOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.GetOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.ListOperationsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.Operation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.Operation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.OperationInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.OperationInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.WaitOperationRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.longrunning.WaitOperationRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Any", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Any$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$VerificationState", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$CType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$JSType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionRetention", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionTargetType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Semantic", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Empty", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Empty$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.FieldMask", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.FieldMask$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.rpc.Status", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.rpc.Status$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceConfigMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceConfigMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceConfigRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceConfigRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.CreateInstanceRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.DeleteInstanceConfigRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.DeleteInstanceConfigRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.DeleteInstanceRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.DeleteInstanceRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.GetInstanceConfigRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.GetInstanceConfigRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.GetInstanceRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.GetInstanceRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.Instance", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.Instance$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.Instance$State", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.InstanceConfig", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.InstanceConfig$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.InstanceConfig$State", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.InstanceConfig$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigOperationsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigOperationsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstancesRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstancesRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstancesResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ListInstancesResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.OperationProgress", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.OperationProgress$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ReplicaInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ReplicaInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.ReplicaInfo$ReplicaType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceConfigMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceConfigMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceConfigRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceConfigRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.admin.instance.v1.UpdateInstanceRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.Expr", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.Expr$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } +] \ No newline at end of file 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 new file mode 100644 index 00000000000..a7aab1356f6 --- /dev/null +++ b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json @@ -0,0 +1,2027 @@ +[ + { + "name": "com.google.api.ClientLibraryDestination", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibraryOrganization", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.FieldBehavior", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.LaunchStage", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$History", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Style", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Any", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Any$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$VerificationState", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$CType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$JSType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionRetention", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionTargetType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Semantic", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Empty", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Empty$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.ListValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.ListValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.NullValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Struct", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Struct$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.rpc.Status", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.rpc.Status$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.BatchCreateSessionsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.BatchCreateSessionsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.BatchCreateSessionsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.BatchCreateSessionsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.BeginTransactionRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.BeginTransactionRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CommitRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CommitRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CommitResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CommitResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CommitResponse$CommitStats", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CommitResponse$CommitStats$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CreateSessionRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.CreateSessionRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DeleteSessionRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DeleteSessionRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteBatchDmlRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteBatchDmlRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteBatchDmlRequest$Statement", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteBatchDmlRequest$Statement$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteBatchDmlResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteBatchDmlResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteSqlRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteSqlRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteSqlRequest$QueryMode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteSqlRequest$QueryOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ExecuteSqlRequest$QueryOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.GetSessionRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.GetSessionRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.KeyRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.KeyRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.KeySet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.KeySet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ListSessionsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ListSessionsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ListSessionsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ListSessionsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Mutation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Mutation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Mutation$Delete", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Mutation$Delete$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Mutation$Write", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Mutation$Write$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartialResultSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartialResultSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Partition", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Partition$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionQueryRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionQueryRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionReadRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionReadRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PartitionResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode$ChildLink", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode$ChildLink$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode$Kind", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode$ShortRepresentation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.PlanNode$ShortRepresentation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.QueryPlan", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.QueryPlan$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ReadRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ReadRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.RequestOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.RequestOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.RequestOptions$Priority", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ResultSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ResultSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ResultSetMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ResultSetMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ResultSetStats", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.ResultSetStats$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.RollbackRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.RollbackRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Session", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Session$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.StructType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.StructType$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.StructType$Field", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.StructType$Field$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Transaction", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Transaction$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$PartitionedDml", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$PartitionedDml$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$ReadOnly", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$ReadOnly$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$ReadWrite", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$ReadWrite$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionOptions$ReadWrite$ReadLockMode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionSelector", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TransactionSelector$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.Type$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TypeAnnotationCode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.TypeCode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } +] \ No newline at end of file diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GrpcResultSetTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GrpcResultSetTest.java index 490eff3aca8..e35ecf9ad9a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GrpcResultSetTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GrpcResultSetTest.java @@ -51,7 +51,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** Unit tests for {@link com.google.cloud.spanner.SpannerImpl.GrpcResultSet}. */ +/** Unit tests for {@link com.google.cloud.spanner.AbstractResultSet.GrpcResultSet}. */ @RunWith(JUnit4.class) public class GrpcResultSetTest { diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InstanceAdminClientImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InstanceAdminClientImplTest.java index d8134ef29d6..7084290b24a 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InstanceAdminClientImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/InstanceAdminClientImplTest.java @@ -54,7 +54,7 @@ import org.junit.runners.JUnit4; import org.mockito.Mock; -/** Unit tests for {@link com.google.cloud.spanner.SpannerImpl.InstanceAdminClientImpl}. */ +/** Unit tests for {@link com.google.cloud.spanner.InstanceAdminClientImpl}. */ @RunWith(JUnit4.class) public class InstanceAdminClientImplTest { private static final String PROJECT_ID = "my-project"; 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 df8245e6acb..e13b7b75093 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 @@ -73,7 +73,7 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -/** Unit test for {@link com.google.cloud.spanner.SpannerImpl.TransactionRunnerImpl} */ +/** Unit test for {@link com.google.cloud.spanner.TransactionRunnerImpl} */ @RunWith(JUnit4.class) public class TransactionRunnerImplTest { private static final class TestExecutorFactory diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java index 103d0f4f09c..67530cb07f5 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java index 9d2c02a6618..a9711017db2 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdmin.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdmin.java index ed3dc441156..e3f036bce5e 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdmin.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdmin.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java index 14ab13fd74e..9f21733e467 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientHttpJsonTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientHttpJsonTest.java index 4088a052668..cca71a692d1 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientHttpJsonTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientHttpJsonTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientTest.java index a120a858542..dd2ebdd3ae9 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/InstanceAdminClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdmin.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdmin.java index e107d158b1e..0dd71fe4115 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdmin.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdmin.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdminImpl.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdminImpl.java index a8372c749d2..9fa59c9f70e 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdminImpl.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/instance/v1/MockInstanceAdminImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptVerifier.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptVerifier.java index ec40c8c0d0b..15d6cf65808 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptVerifier.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractSqlScriptVerifier.java @@ -70,9 +70,9 @@ * equal. The value of a variable can be set using a @PUT statement. *

    * - * The parser can set a temporary variable value using a @PUT statement: - * @PUT 'variable_name'\nSQL statement The SQL statement must be a statement that returns a - * {@link ResultSet} containing exactly one row and one column. + * The parser can set a temporary variable value using a @PUT statement: {@code @PUT + * 'variable_name'\nSQL statement} The SQL statement must be a statement that returns a {@link + * ResultSet} containing exactly one row and one column. * *

    In addition the verifier can create new connections if the script contains NEW_CONNECTION; * statements and the verifier has been created with a {@link GenericConnectionProvider}. See {@link @@ -130,7 +130,7 @@ protected abstract static class GenericStatementResult { /** * Generic wrapper around a connection to a database. The underlying connection could be a Spanner - * {@link com.google.cloud.spanner.jdbc.Connection} or a JDBC {@link java.sql.Connection} + * {@link com.google.cloud.spanner.connection.Connection} or a JDBC {@link java.sql.Connection} */ public abstract static class GenericConnection implements AutoCloseable { protected abstract GenericStatementResult execute(String sql) throws Exception; @@ -208,8 +208,8 @@ public AbstractSqlScriptVerifier(GenericConnectionProvider provider) { * Statements without an @EXPECT statement will be executed and its result will be ignored, unless * the statement throws an exception, which will fail the test case. * - *

    The {@link com.google.cloud.spanner.jdbc.Connection}s that the statements are executed on - * must be created by a {@link GenericConnectionProvider} + *

    The {@link com.google.cloud.spanner.connection.Connection}s that the statements are executed + * on must be created by a {@link GenericConnectionProvider} * * @param filename The file name containing the statements. Statements must be separated by a * semicolon (;) @@ -229,8 +229,8 @@ public void verifyStatementsInFile(String filename, Class resourceClass, bool * Statements without an @EXPECT statement will be executed and its result will be ignored, unless * the statement throws an exception, which will fail the test case. * - *

    The {@link com.google.cloud.spanner.jdbc.Connection}s that the statements are executed on - * must be created by a {@link GenericConnectionProvider} + *

    The {@link com.google.cloud.spanner.connection.Connection}s that the statements are executed + * on must be created by a {@link GenericConnectionProvider} * * @param filename The file name containing the statements. Statements must be separated by a * semicolon (;) @@ -250,8 +250,8 @@ public void verifyStatementsInFile(String filename, Class resourceClass) thro * Statements without an @EXPECT statement will be executed and its result will be ignored, unless * the statement throws an exception, which will fail the test case. * - * @param providedConnection The {@link com.google.cloud.spanner.jdbc.Connection} to execute the - * statements against + * @param providedConnection The {@link com.google.cloud.spanner.connection.Connection} to execute + * the statements against * @param filename The file name containing the statements. Statements must be separated by a * semicolon (;) * @param resourceClass The class that defines the package where to find the input file @@ -271,8 +271,8 @@ public void verifyStatementsInFile( * Statements without an @EXPECT statement will be executed and its result will be ignored, unless * the statement throws an exception, which will fail the test case. * - * @param providedConnection The {@link com.google.cloud.spanner.jdbc.Connection} to execute the - * statements against + * @param providedConnection The {@link com.google.cloud.spanner.connection.Connection} to execute + * the statements against * @param filename The file name containing the statements. Statements must be separated by a * semicolon (;) * @param resourceClass The class that defines the package where to find the input file diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlScriptVerifier.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlScriptVerifier.java index 15b031705e3..8e88d4a1420 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlScriptVerifier.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/SqlScriptVerifier.java @@ -28,7 +28,8 @@ import com.google.cloud.spanner.connection.StatementResult.ResultType; /** - * SQL script verifier implementation for Spanner {@link com.google.cloud.spanner.jdbc.Connection} + * SQL script verifier implementation for Spanner {@link + * com.google.cloud.spanner.connection.Connection} * * @see AbstractSqlScriptVerifier for more information */ diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITForeignKeyDeleteCascadeTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITForeignKeyDeleteCascadeTest.java new file mode 100644 index 00000000000..fc7c860267a --- /dev/null +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITForeignKeyDeleteCascadeTest.java @@ -0,0 +1,514 @@ +/* + * Copyright 2023 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.it; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeFalse; + +import com.google.cloud.spanner.Database; +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.Dialect; +import com.google.cloud.spanner.ErrorCode; +import com.google.cloud.spanner.IntegrationTestEnv; +import com.google.cloud.spanner.Key; +import com.google.cloud.spanner.Mutation; +import com.google.cloud.spanner.ParallelIntegrationTest; +import com.google.cloud.spanner.ResultSet; +import com.google.cloud.spanner.SpannerException; +import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.testing.EmulatorSpannerHelper; +import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@Category(ParallelIntegrationTest.class) +@RunWith(Parameterized.class) +public class ITForeignKeyDeleteCascadeTest { + + @ClassRule public static IntegrationTestEnv env = new IntegrationTestEnv(); + + @Parameterized.Parameters(name = "Dialect = {0}") + public static List data() { + List params = new ArrayList<>(); + params.add(new DialectTestParameter(Dialect.GOOGLE_STANDARD_SQL)); + params.add(new DialectTestParameter(Dialect.POSTGRESQL)); + return params; + } + + private static final String TABLE_NAME_SINGER = "Singer"; + private static final String TABLE_NAME_CONCERT = "Concert"; + private static final String DELETE_RULE_COLUMN_NAME = "DELETE_RULE"; + + private static Database GOOGLE_STANDARD_SQL_DATABASE; + private static Database POSTGRESQL_DATABASE; + private static List dbs = new ArrayList<>(); + + @Parameterized.Parameter(0) + public DialectTestParameter dialect; + + @BeforeClass + public static void setUpDatabase() { + if (!EmulatorSpannerHelper.isUsingEmulator()) { + GOOGLE_STANDARD_SQL_DATABASE = + env.getTestHelper() + .createTestDatabase( + ImmutableList.of( + "CREATE TABLE Singer (\n" + + " singer_id INT64 NOT NULL,\n" + + " first_name STRING(1024),\n" + + ") PRIMARY KEY(singer_id)\n", + "CREATE TABLE Concert (\n" + + " venue_id INT64 NOT NULL,\n" + + " singer_id INT64 NOT NULL,\n" + + " CONSTRAINT Fk_Concert_Singer FOREIGN KEY (singer_id) REFERENCES Singer (singer_id) ON DELETE CASCADE" + + ") PRIMARY KEY(venue_id, singer_id)")); + POSTGRESQL_DATABASE = + env.getTestHelper() + .createTestDatabase( + Dialect.POSTGRESQL, + ImmutableList.of( + "CREATE TABLE Singer (\n" + + " singer_id BIGINT PRIMARY KEY,\n" + + " first_name VARCHAR\n" + + ")", + "CREATE TABLE Concert (\n" + + " venue_id BIGINT NOT NULL,\n" + + " singer_id BIGINT NOT NULL,\n" + + " PRIMARY KEY (venue_id, singer_id),\n" + + " CONSTRAINT Fk_Concert_Singer FOREIGN KEY (singer_id) REFERENCES Singer (singer_id) ON DELETE CASCADE\n" + + " )")); + + dbs.add(GOOGLE_STANDARD_SQL_DATABASE); + dbs.add(POSTGRESQL_DATABASE); + } + } + + @AfterClass + public static void tearDown() { + for (Database db : dbs) { + db.drop(); + } + dbs.clear(); + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_withCreateDDLStatements() { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + try (final ResultSet rs = + databaseClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT DELETE_RULE\n" + + "FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS\n" + + "WHERE CONSTRAINT_NAME ='Fk_Concert_Singer'"))) { + while (rs.next()) { + assertEquals(rs.getString(DELETE_RULE_COLUMN_NAME), "CASCADE"); + } + } + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_withAlterDDLStatements() throws Exception { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + // Creating new tables within this test to ensure we don't pollute tables used by other tests in + // this class. + List createStatements; + if (dialect.dialect == Dialect.POSTGRESQL) { + createStatements = + ImmutableList.of( + "CREATE TABLE Singer (\n" + + " singer_id BIGINT PRIMARY KEY,\n" + + " first_name VARCHAR\n" + + ")", + "CREATE TABLE ConcertV2 (\n" + + " venue_id BIGINT NOT NULL,\n" + + " singer_id BIGINT NOT NULL,\n" + + " PRIMARY KEY (venue_id, singer_id)\n" + + " )", + "ALTER TABLE ConcertV2 " + + "ADD CONSTRAINT Fk_Concert_Singer_V2 FOREIGN KEY(singer_id) REFERENCES Singer(singer_id) " + + "ON DELETE CASCADE"); + } else { + createStatements = + ImmutableList.of( + "CREATE TABLE Singer (\n" + + " singer_id INT64 NOT NULL,\n" + + " first_name STRING(1024),\n" + + ") PRIMARY KEY(singer_id)\n", + "CREATE TABLE ConcertV2 (\n" + + " venue_id INT64 NOT NULL,\n" + + " singer_id INT64 NOT NULL,\n" + + ") PRIMARY KEY(venue_id, singer_id)", + "ALTER TABLE ConcertV2 " + + "ADD CONSTRAINT Fk_Concert_Singer_V2 FOREIGN KEY(singer_id) REFERENCES Singer(singer_id) " + + "ON DELETE CASCADE"); + } + final Database createdDatabase = + env.getTestHelper().createTestDatabase(dialect.dialect, createStatements); + dbs.add(createdDatabase); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + + try (final ResultSet rs = + databaseClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT DELETE_RULE\n" + + "FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS\n" + + "WHERE CONSTRAINT_NAME ='Fk_Concert_Singer'"))) { + while (rs.next()) { + assertEquals(rs.getString(DELETE_RULE_COLUMN_NAME), "CASCADE"); + } + } + + // remove the foreign key delete cascade constraint + getDatabaseAdminClient() + .updateDatabaseDdl( + env.getTestHelper().getInstanceId().getInstance(), + createdDatabase.getId().getDatabase(), + ImmutableList.of( + "ALTER TABLE ConcertV2\n" + "DROP CONSTRAINT Fk_Concert_Singer_V2", + "ALTER TABLE ConcertV2 " + + "ADD CONSTRAINT Fk_Concert_Singer_V2 FOREIGN KEY(singer_id) REFERENCES Singer(singer_id) "), + null) + .get(); + + try (final ResultSet rs = + databaseClient + .singleUse() + .executeQuery( + Statement.of( + "SELECT DELETE_RULE\n" + + "FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS\n" + + "WHERE CONSTRAINT_NAME ='Fk_Concert_Singer_V2'"))) { + while (rs.next()) { + assertEquals(rs.getString(DELETE_RULE_COLUMN_NAME), "NO ACTION"); + } + } + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_verifyValidInsertions() { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + final String singerInsertStatement = + "INSERT INTO Singer (singer_id, first_name) VALUES (" + generateQueryParameters(2) + ")"; + final Statement singerInsertStatementWithValues = + Statement.newBuilder(singerInsertStatement) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(1L) + .bind("p2") + .to("singerName") + .build(); + + final String concertInsertStatement = + "INSERT INTO Concert (venue_id, singer_id) VALUES (" + generateQueryParameters(2) + ")"; + final Statement concertInsertStatementWithValues = + Statement.newBuilder(concertInsertStatement) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(1L) + .bind("p2") + .to(1L) + .build(); + + // successful inserts into referenced and referencing tables + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.batchUpdate( + ImmutableList.of( + singerInsertStatementWithValues, concertInsertStatementWithValues)); + return null; + }); + + try (ResultSet resultSet = + databaseClient + .singleUse() + .executeQuery(Statement.of("SELECT * FROM " + TABLE_NAME_SINGER))) { + + resultSet.next(); + assertEquals(1, resultSet.getLong("singer_id")); + assertEquals("singerName", resultSet.getString("first_name")); + + assertFalse(resultSet.next()); + } + + try (ResultSet resultSet = + databaseClient + .singleUse() + .executeQuery(Statement.of("SELECT * FROM " + TABLE_NAME_CONCERT))) { + + resultSet.next(); + assertEquals(1, resultSet.getLong("singer_id")); + assertEquals(1, resultSet.getLong("venue_id")); + + assertFalse(resultSet.next()); + } + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_verifyInvalidInsertions() { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + + // unsuccessful inserts into referencing tables when foreign key is not inserted into referenced + // table + final String concertInsertStatement = + "INSERT INTO Concert (venue_id, singer_id) VALUES (" + generateQueryParameters(2) + ")"; + final Statement concertInsertStatementWithInvalidValues = + Statement.newBuilder(concertInsertStatement) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(2L) + .bind("p2") + .to(2L) + .build(); + + SpannerException ex = + assertThrows( + SpannerException.class, + () -> + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.executeUpdate(concertInsertStatementWithInvalidValues); + return null; + })); + assertEquals(ex.getErrorCode(), ErrorCode.FAILED_PRECONDITION); + assertTrue(ex.getMessage().contains("Cannot find referenced values")); + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_forDeletions() { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + + final String singerInsertStatement = + "INSERT INTO Singer (singer_id, first_name) VALUES (" + generateQueryParameters(2) + ")"; + final Statement singerInsertStatementWithValues = + Statement.newBuilder(singerInsertStatement) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(3L) + .bind("p2") + .to("singerName") + .build(); + + final String concertInsertStatement = + "INSERT INTO Concert (venue_id, singer_id) VALUES (" + generateQueryParameters(2) + ")"; + final Statement concertInsertStatementWithValues = + Statement.newBuilder(concertInsertStatement) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(3L) + .bind("p2") + .to(3L) + .build(); + + // successful inserts into referenced and referencing tables + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.batchUpdate( + ImmutableList.of( + singerInsertStatementWithValues, concertInsertStatementWithValues)); + return null; + }); + + // execute delete + final Statement singerDeleteStatementWithValues = + Statement.newBuilder("DELETE FROM Singer WHERE singer_id = " + generateQueryParameters(1)) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(3L) + .build(); + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.executeUpdate(singerDeleteStatementWithValues); + return null; + }); + + try (ResultSet resultSet = + databaseClient + .singleUse() + .executeQuery(Statement.of("SELECT * FROM " + TABLE_NAME_SINGER))) { + assertFalse(resultSet.next()); + } + + try (ResultSet resultSet = + databaseClient + .singleUse() + .executeQuery(Statement.of("SELECT * FROM " + TABLE_NAME_CONCERT))) { + assertFalse(resultSet.next()); + } + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_forMutations_onConflictDueToParentTable() { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + + // inserting and deleting the referenced key within the same mutation are considered + // conflicting operations, thus this results in an exception. + SpannerException ex = + assertThrows( + SpannerException.class, + () -> + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.buffer( + Arrays.asList( + Mutation.newInsertBuilder("Singer") + .set("singer_id") + .to(4L) + .set("first_name") + .to("singerName") + .build(), + Mutation.delete("Singer", Key.of(4L)))); + return null; + })); + assertEquals(ex.getErrorCode(), ErrorCode.FAILED_PRECONDITION); + } + + @Test + public void testForeignKeyDeleteCascadeConstraints_forMutations_onConflictsDueToChildTable() { + assumeFalse( + "Emulator does not yet support foreign key delete cascade", + EmulatorSpannerHelper.isUsingEmulator()); + + final DatabaseClient databaseClient = getCreatedDatabaseClient(); + + // referencing a foreign key in child table and deleting the referenced key in parent table + // within the same mutations are considered conflicting operations. + final String singerInsertStatement = + "INSERT INTO Singer (singer_id, first_name) VALUES (" + generateQueryParameters(2) + ")"; + final Statement singerInsertStatementWithValues = + Statement.newBuilder(singerInsertStatement) + // Use 'p1' to bind to the parameter with index 1 etc. + .bind("p1") + .to(5L) + .bind("p2") + .to("singerName") + .build(); + + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.executeUpdate(singerInsertStatementWithValues); + return null; + }); + SpannerException ex = + assertThrows( + SpannerException.class, + () -> + databaseClient + .readWriteTransaction() + .run( + transaction -> { + transaction.buffer( + Arrays.asList( + Mutation.newInsertBuilder("Concert") + .set("first_name") + .to(5L) + .set("singer_id") + .to(5L) + .build(), + Mutation.delete("Singer", Key.of(5L)))); + return null; + })); + } + + private DatabaseAdminClient getDatabaseAdminClient() { + return env.getTestHelper().getClient().getDatabaseAdminClient(); + } + + private DatabaseClient getCreatedDatabaseClient() { + if (dialect.dialect == Dialect.POSTGRESQL) { + return env.getTestHelper().getDatabaseClient(this.POSTGRESQL_DATABASE); + } + return env.getTestHelper().getDatabaseClient(this.GOOGLE_STANDARD_SQL_DATABASE); + } + + /** + * Returns '@p1, @p2, ..., @pNumParams' for GoogleSQL and $1, $2, ..., $NumParams' for PostgreSQL + * + * @param numParams + * @return + */ + private String generateQueryParameters(final int numParams) { + final List params; + if (dialect.dialect == Dialect.POSTGRESQL) { + params = + IntStream.range(1, numParams + 1) + .mapToObj(paramIndex -> "$" + paramIndex) + .collect(Collectors.toList()); + + } else { + params = + IntStream.range(1, numParams + 1) + .mapToObj(paramIndex -> "@p" + paramIndex) + .collect(Collectors.toList()); + } + if (params.size() == 1) { + return params.get(0); + } + return String.join(",", params); + } +} diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpanner.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpanner.java index 3a53cde1223..210b0ee06c3 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpanner.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpanner.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java index d6176e1f277..7c26f582758 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java index 04bd5df2166..e2ffb566626 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java index 9e23c7a0523..73998b39810 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index bf321cc1280..0c6049d9f8c 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.43.2 + 6.44.0 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.43.2 + 6.44.0 diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index a39510245e6..3c8d605201f 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.43.2 + 6.44.0 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.43.2 + 6.44.0 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index bdc934ed729..c323b5eca55 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.43.2 + 6.44.0 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.43.2 + 6.44.0 diff --git a/pom.xml b/pom.xml index 0900bd3f493..a0131ce095e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.43.2 + 6.44.0 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -14,7 +14,7 @@ com.google.cloud google-cloud-shared-config - 1.5.6 + 1.5.7 @@ -54,7 +54,7 @@ UTF-8 github google-cloud-spanner-parent - 3.13.0 + 3.13.1 @@ -62,37 +62,37 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.43.2 + 6.44.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.43.2 + 6.44.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.43.2 + 6.44.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.43.2 + 6.44.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.43.2 + 6.44.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.43.2 + 6.44.0 com.google.cloud google-cloud-spanner - 6.43.2 + 6.44.0 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 01df51797c0..4504b5861b3 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.43.2 + 6.44.0 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.43.2 + 6.44.0 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 d5132408edd..83815908c09 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 @@ -41,9 +41,9 @@ private Backup() { database_ = ""; name_ = ""; state_ = 0; - referencingDatabases_ = com.google.protobuf.LazyStringArrayList.EMPTY; + referencingDatabases_ = com.google.protobuf.LazyStringArrayList.emptyList(); databaseDialect_ = 0; - referencingBackups_ = com.google.protobuf.LazyStringArrayList.EMPTY; + referencingBackups_ = com.google.protobuf.LazyStringArrayList.emptyList(); } @java.lang.Override @@ -52,11 +52,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new Backup(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.BackupProto .internal_static_google_spanner_admin_database_v1_Backup_descriptor; @@ -416,11 +411,13 @@ public com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder() { *

        * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
        * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +   *
        * A globally unique identifier for the backup which cannot be
        * changed. Values are of the form
        * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
        * The final segment of the name must be between 2 and 60 characters
        * in length.
    +   *
        * The backup is stored in the location(s) specified in the instance
        * configuration of the instance containing the backup, identified
        * by the prefix of the backup name of the form
    @@ -449,11 +446,13 @@ public java.lang.String getName() {
        * 
        * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
        * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +   *
        * A globally unique identifier for the backup which cannot be
        * changed. Values are of the form
        * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
        * The final segment of the name must be between 2 and 60 characters
        * in length.
    +   *
        * The backup is stored in the location(s) specified in the instance
        * configuration of the instance containing the backup, identified
        * by the prefix of the backup name of the form
    @@ -592,7 +591,8 @@ public com.google.spanner.admin.database.v1.Backup.State getState() {
       public static final int REFERENCING_DATABASES_FIELD_NUMBER = 7;
     
       @SuppressWarnings("serial")
    -  private com.google.protobuf.LazyStringList referencingDatabases_;
    +  private com.google.protobuf.LazyStringArrayList referencingDatabases_ =
    +      com.google.protobuf.LazyStringArrayList.emptyList();
       /**
        *
        *
    @@ -784,7 +784,8 @@ public com.google.spanner.admin.database.v1.DatabaseDialect getDatabaseDialect()
       public static final int REFERENCING_BACKUPS_FIELD_NUMBER = 11;
     
       @SuppressWarnings("serial")
    -  private com.google.protobuf.LazyStringList referencingBackups_;
    +  private com.google.protobuf.LazyStringArrayList referencingBackups_ =
    +      com.google.protobuf.LazyStringArrayList.emptyList();
       /**
        *
        *
    @@ -1304,16 +1305,14 @@ public Builder clear() {
           }
           sizeBytes_ = 0L;
           state_ = 0;
    -      referencingDatabases_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    -      bitField0_ = (bitField0_ & ~0x00000080);
    +      referencingDatabases_ = com.google.protobuf.LazyStringArrayList.emptyList();
           encryptionInfo_ = null;
           if (encryptionInfoBuilder_ != null) {
             encryptionInfoBuilder_.dispose();
             encryptionInfoBuilder_ = null;
           }
           databaseDialect_ = 0;
    -      referencingBackups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    -      bitField0_ = (bitField0_ & ~0x00000400);
    +      referencingBackups_ = com.google.protobuf.LazyStringArrayList.emptyList();
           maxExpireTime_ = null;
           if (maxExpireTimeBuilder_ != null) {
             maxExpireTimeBuilder_.dispose();
    @@ -1346,7 +1345,6 @@ public com.google.spanner.admin.database.v1.Backup build() {
         public com.google.spanner.admin.database.v1.Backup buildPartial() {
           com.google.spanner.admin.database.v1.Backup result =
               new com.google.spanner.admin.database.v1.Backup(this);
    -      buildPartialRepeatedFields(result);
           if (bitField0_ != 0) {
             buildPartial0(result);
           }
    @@ -1354,19 +1352,6 @@ public com.google.spanner.admin.database.v1.Backup buildPartial() {
           return result;
         }
     
    -    private void buildPartialRepeatedFields(com.google.spanner.admin.database.v1.Backup result) {
    -      if (((bitField0_ & 0x00000080) != 0)) {
    -        referencingDatabases_ = referencingDatabases_.getUnmodifiableView();
    -        bitField0_ = (bitField0_ & ~0x00000080);
    -      }
    -      result.referencingDatabases_ = referencingDatabases_;
    -      if (((bitField0_ & 0x00000400) != 0)) {
    -        referencingBackups_ = referencingBackups_.getUnmodifiableView();
    -        bitField0_ = (bitField0_ & ~0x00000400);
    -      }
    -      result.referencingBackups_ = referencingBackups_;
    -    }
    -
         private void buildPartial0(com.google.spanner.admin.database.v1.Backup result) {
           int from_bitField0_ = bitField0_;
           if (((from_bitField0_ & 0x00000001) != 0)) {
    @@ -1391,6 +1376,10 @@ private void buildPartial0(com.google.spanner.admin.database.v1.Backup result) {
           if (((from_bitField0_ & 0x00000040) != 0)) {
             result.state_ = state_;
           }
    +      if (((from_bitField0_ & 0x00000080) != 0)) {
    +        referencingDatabases_.makeImmutable();
    +        result.referencingDatabases_ = referencingDatabases_;
    +      }
           if (((from_bitField0_ & 0x00000100) != 0)) {
             result.encryptionInfo_ =
                 encryptionInfoBuilder_ == null ? encryptionInfo_ : encryptionInfoBuilder_.build();
    @@ -1398,6 +1387,10 @@ private void buildPartial0(com.google.spanner.admin.database.v1.Backup result) {
           if (((from_bitField0_ & 0x00000200) != 0)) {
             result.databaseDialect_ = databaseDialect_;
           }
    +      if (((from_bitField0_ & 0x00000400) != 0)) {
    +        referencingBackups_.makeImmutable();
    +        result.referencingBackups_ = referencingBackups_;
    +      }
           if (((from_bitField0_ & 0x00000800) != 0)) {
             result.maxExpireTime_ =
                 maxExpireTimeBuilder_ == null ? maxExpireTime_ : maxExpireTimeBuilder_.build();
    @@ -1477,7 +1470,7 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.Backup other) {
           if (!other.referencingDatabases_.isEmpty()) {
             if (referencingDatabases_.isEmpty()) {
               referencingDatabases_ = other.referencingDatabases_;
    -          bitField0_ = (bitField0_ & ~0x00000080);
    +          bitField0_ |= 0x00000080;
             } else {
               ensureReferencingDatabasesIsMutable();
               referencingDatabases_.addAll(other.referencingDatabases_);
    @@ -1493,7 +1486,7 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.Backup other) {
           if (!other.referencingBackups_.isEmpty()) {
             if (referencingBackups_.isEmpty()) {
               referencingBackups_ = other.referencingBackups_;
    -          bitField0_ = (bitField0_ & ~0x00000400);
    +          bitField0_ |= 0x00000400;
             } else {
               ensureReferencingBackupsIsMutable();
               referencingBackups_.addAll(other.referencingBackups_);
    @@ -2193,11 +2186,13 @@ public com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder() {
          * 
          * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
          * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +     *
          * A globally unique identifier for the backup which cannot be
          * changed. Values are of the form
          * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
          * The final segment of the name must be between 2 and 60 characters
          * in length.
    +     *
          * The backup is stored in the location(s) specified in the instance
          * configuration of the instance containing the backup, identified
          * by the prefix of the backup name of the form
    @@ -2225,11 +2220,13 @@ public java.lang.String getName() {
          * 
          * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
          * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +     *
          * A globally unique identifier for the backup which cannot be
          * changed. Values are of the form
          * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
          * The final segment of the name must be between 2 and 60 characters
          * in length.
    +     *
          * The backup is stored in the location(s) specified in the instance
          * configuration of the instance containing the backup, identified
          * by the prefix of the backup name of the form
    @@ -2257,11 +2254,13 @@ public com.google.protobuf.ByteString getNameBytes() {
          * 
          * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
          * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +     *
          * A globally unique identifier for the backup which cannot be
          * changed. Values are of the form
          * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
          * The final segment of the name must be between 2 and 60 characters
          * in length.
    +     *
          * The backup is stored in the location(s) specified in the instance
          * configuration of the instance containing the backup, identified
          * by the prefix of the backup name of the form
    @@ -2288,11 +2287,13 @@ public Builder setName(java.lang.String value) {
          * 
          * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
          * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +     *
          * A globally unique identifier for the backup which cannot be
          * changed. Values are of the form
          * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
          * The final segment of the name must be between 2 and 60 characters
          * in length.
    +     *
          * The backup is stored in the location(s) specified in the instance
          * configuration of the instance containing the backup, identified
          * by the prefix of the backup name of the form
    @@ -2315,11 +2316,13 @@ public Builder clearName() {
          * 
          * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
          * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +     *
          * A globally unique identifier for the backup which cannot be
          * changed. Values are of the form
          * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
          * The final segment of the name must be between 2 and 60 characters
          * in length.
    +     *
          * The backup is stored in the location(s) specified in the instance
          * configuration of the instance containing the backup, identified
          * by the prefix of the backup name of the form
    @@ -2716,14 +2719,14 @@ public Builder clearState() {
           return this;
         }
     
    -    private com.google.protobuf.LazyStringList referencingDatabases_ =
    -        com.google.protobuf.LazyStringArrayList.EMPTY;
    +    private com.google.protobuf.LazyStringArrayList referencingDatabases_ =
    +        com.google.protobuf.LazyStringArrayList.emptyList();
     
         private void ensureReferencingDatabasesIsMutable() {
    -      if (!((bitField0_ & 0x00000080) != 0)) {
    +      if (!referencingDatabases_.isModifiable()) {
             referencingDatabases_ = new com.google.protobuf.LazyStringArrayList(referencingDatabases_);
    -        bitField0_ |= 0x00000080;
           }
    +      bitField0_ |= 0x00000080;
         }
         /**
          *
    @@ -2745,7 +2748,8 @@ private void ensureReferencingDatabasesIsMutable() {
          * @return A list containing the referencingDatabases.
          */
         public com.google.protobuf.ProtocolStringList getReferencingDatabasesList() {
    -      return referencingDatabases_.getUnmodifiableView();
    +      referencingDatabases_.makeImmutable();
    +      return referencingDatabases_;
         }
         /**
          *
    @@ -2842,6 +2846,7 @@ public Builder setReferencingDatabases(int index, java.lang.String value) {
           }
           ensureReferencingDatabasesIsMutable();
           referencingDatabases_.set(index, value);
    +      bitField0_ |= 0x00000080;
           onChanged();
           return this;
         }
    @@ -2871,6 +2876,7 @@ public Builder addReferencingDatabases(java.lang.String value) {
           }
           ensureReferencingDatabasesIsMutable();
           referencingDatabases_.add(value);
    +      bitField0_ |= 0x00000080;
           onChanged();
           return this;
         }
    @@ -2897,6 +2903,7 @@ public Builder addReferencingDatabases(java.lang.String value) {
         public Builder addAllReferencingDatabases(java.lang.Iterable values) {
           ensureReferencingDatabasesIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(values, referencingDatabases_);
    +      bitField0_ |= 0x00000080;
           onChanged();
           return this;
         }
    @@ -2920,8 +2927,9 @@ public Builder addAllReferencingDatabases(java.lang.Iterable v
          * @return This builder for chaining.
          */
         public Builder clearReferencingDatabases() {
    -      referencingDatabases_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +      referencingDatabases_ = com.google.protobuf.LazyStringArrayList.emptyList();
           bitField0_ = (bitField0_ & ~0x00000080);
    +      ;
           onChanged();
           return this;
         }
    @@ -2952,6 +2960,7 @@ public Builder addReferencingDatabasesBytes(com.google.protobuf.ByteString value
           checkByteStringIsUtf8(value);
           ensureReferencingDatabasesIsMutable();
           referencingDatabases_.add(value);
    +      bitField0_ |= 0x00000080;
           onChanged();
           return this;
         }
    @@ -3262,14 +3271,14 @@ public Builder clearDatabaseDialect() {
           return this;
         }
     
    -    private com.google.protobuf.LazyStringList referencingBackups_ =
    -        com.google.protobuf.LazyStringArrayList.EMPTY;
    +    private com.google.protobuf.LazyStringArrayList referencingBackups_ =
    +        com.google.protobuf.LazyStringArrayList.emptyList();
     
         private void ensureReferencingBackupsIsMutable() {
    -      if (!((bitField0_ & 0x00000400) != 0)) {
    +      if (!referencingBackups_.isModifiable()) {
             referencingBackups_ = new com.google.protobuf.LazyStringArrayList(referencingBackups_);
    -        bitField0_ |= 0x00000400;
           }
    +      bitField0_ |= 0x00000400;
         }
         /**
          *
    @@ -3291,7 +3300,8 @@ private void ensureReferencingBackupsIsMutable() {
          * @return A list containing the referencingBackups.
          */
         public com.google.protobuf.ProtocolStringList getReferencingBackupsList() {
    -      return referencingBackups_.getUnmodifiableView();
    +      referencingBackups_.makeImmutable();
    +      return referencingBackups_;
         }
         /**
          *
    @@ -3388,6 +3398,7 @@ public Builder setReferencingBackups(int index, java.lang.String value) {
           }
           ensureReferencingBackupsIsMutable();
           referencingBackups_.set(index, value);
    +      bitField0_ |= 0x00000400;
           onChanged();
           return this;
         }
    @@ -3417,6 +3428,7 @@ public Builder addReferencingBackups(java.lang.String value) {
           }
           ensureReferencingBackupsIsMutable();
           referencingBackups_.add(value);
    +      bitField0_ |= 0x00000400;
           onChanged();
           return this;
         }
    @@ -3443,6 +3455,7 @@ public Builder addReferencingBackups(java.lang.String value) {
         public Builder addAllReferencingBackups(java.lang.Iterable values) {
           ensureReferencingBackupsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(values, referencingBackups_);
    +      bitField0_ |= 0x00000400;
           onChanged();
           return this;
         }
    @@ -3466,8 +3479,9 @@ public Builder addAllReferencingBackups(java.lang.Iterable val
          * @return This builder for chaining.
          */
         public Builder clearReferencingBackups() {
    -      referencingBackups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +      referencingBackups_ = com.google.protobuf.LazyStringArrayList.emptyList();
           bitField0_ = (bitField0_ & ~0x00000400);
    +      ;
           onChanged();
           return this;
         }
    @@ -3498,6 +3512,7 @@ public Builder addReferencingBackupsBytes(com.google.protobuf.ByteString value)
           checkByteStringIsUtf8(value);
           ensureReferencingBackupsIsMutable();
           referencingBackups_.add(value);
    +      bitField0_ |= 0x00000400;
           onChanged();
           return this;
         }
    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 978bcbcccb9..0bb89ec6c08 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new BackupInfo();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_BackupInfo_descriptor;
    diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupName.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupName.java
    index 3c1ab293524..6cb52a86fee 100644
    --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupName.java
    +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/BackupName.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2022 Google LLC
    + * Copyright 2023 Google LLC
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
    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 e3fe5ccf08c..77a157a819b 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
    @@ -156,11 +156,13 @@ public interface BackupOrBuilder
        * 
        * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
        * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +   *
        * A globally unique identifier for the backup which cannot be
        * changed. Values are of the form
        * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
        * The final segment of the name must be between 2 and 60 characters
        * in length.
    +   *
        * The backup is stored in the location(s) specified in the instance
        * configuration of the instance containing the backup, identified
        * by the prefix of the backup name of the form
    @@ -178,11 +180,13 @@ public interface BackupOrBuilder
        * 
        * Output only for the [CreateBackup][google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup] operation.
        * Required for the [UpdateBackup][google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup] operation.
    +   *
        * A globally unique identifier for the backup which cannot be
        * changed. Values are of the form
        * `projects/<project>/instances/<instance>/backups/[a-z][a-z0-9_\-]*[a-z0-9]`
        * The final segment of the name must be between 2 and 60 characters
        * in length.
    +   *
        * The backup is stored in the location(s) specified in the instance
        * configuration of the instance containing the backup, identified
        * by the prefix of the backup name of the form
    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 0d0d3d7b1d3..ed23e270715 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
    @@ -103,105 +103,105 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
               + "g/operations.proto\032 google/protobuf/fiel"
               + "d_mask.proto\032\037google/protobuf/timestamp."
               + "proto\032-google/spanner/admin/database/v1/"
    -          + "common.proto\"\303\006\n\006Backup\0226\n\010database\030\002 \001("
    +          + "common.proto\"\313\006\n\006Backup\0226\n\010database\030\002 \001("
               + "\tB$\372A!\n\037spanner.googleapis.com/Database\022"
               + "0\n\014version_time\030\t \001(\0132\032.google.protobuf."
               + "Timestamp\022/\n\013expire_time\030\003 \001(\0132\032.google."
    -          + "protobuf.Timestamp\022\014\n\004name\030\001 \001(\t\0224\n\013crea"
    +          + "protobuf.Timestamp\022\014\n\004name\030\001 \001(\t\0225\n\013crea"
               + "te_time\030\004 \001(\0132\032.google.protobuf.Timestam"
    -          + "pB\003\340A\003\022\027\n\nsize_bytes\030\005 \001(\003B\003\340A\003\022B\n\005state"
    -          + "\030\006 \001(\0162..google.spanner.admin.database.v"
    -          + "1.Backup.StateB\003\340A\003\022F\n\025referencing_datab"
    -          + "ases\030\007 \003(\tB\'\340A\003\372A!\n\037spanner.googleapis.c"
    -          + "om/Database\022N\n\017encryption_info\030\010 \001(\01320.g"
    -          + "oogle.spanner.admin.database.v1.Encrypti"
    -          + "onInfoB\003\340A\003\022P\n\020database_dialect\030\n \001(\01621."
    -          + "google.spanner.admin.database.v1.Databas"
    -          + "eDialectB\003\340A\003\022B\n\023referencing_backups\030\013 \003"
    -          + "(\tB%\340A\003\372A\037\n\035spanner.googleapis.com/Backu"
    -          + "p\0228\n\017max_expire_time\030\014 \001(\0132\032.google.prot"
    -          + "obuf.TimestampB\003\340A\003\"7\n\005State\022\025\n\021STATE_UN"
    -          + "SPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n\005READY\020\002:\\\352A"
    -          + "Y\n\035spanner.googleapis.com/Backup\0228projec"
    -          + "ts/{project}/instances/{instance}/backup"
    -          + "s/{backup}\"\205\002\n\023CreateBackupRequest\0227\n\006pa"
    -          + "rent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googleapis.c"
    -          + "om/Instance\022\026\n\tbackup_id\030\002 \001(\tB\003\340A\002\022=\n\006b"
    -          + "ackup\030\003 \001(\0132(.google.spanner.admin.datab"
    -          + "ase.v1.BackupB\003\340A\002\022^\n\021encryption_config\030"
    -          + "\004 \001(\0132>.google.spanner.admin.database.v1"
    -          + ".CreateBackupEncryptionConfigB\003\340A\001\"\370\001\n\024C"
    -          + "reateBackupMetadata\0220\n\004name\030\001 \001(\tB\"\372A\037\n\035"
    -          + "spanner.googleapis.com/Backup\0226\n\010databas"
    -          + "e\030\002 \001(\tB$\372A!\n\037spanner.googleapis.com/Dat"
    -          + "abase\022E\n\010progress\030\003 \001(\01323.google.spanner"
    -          + ".admin.database.v1.OperationProgress\022/\n\013"
    -          + "cancel_time\030\004 \001(\0132\032.google.protobuf.Time"
    -          + "stamp\"\266\002\n\021CopyBackupRequest\0227\n\006parent\030\001 "
    -          + "\001(\tB\'\340A\002\372A!\n\037spanner.googleapis.com/Inst"
    -          + "ance\022\026\n\tbackup_id\030\002 \001(\tB\003\340A\002\022<\n\rsource_b"
    -          + "ackup\030\003 \001(\tB%\340A\002\372A\037\n\035spanner.googleapis."
    -          + "com/Backup\0224\n\013expire_time\030\004 \001(\0132\032.google"
    -          + ".protobuf.TimestampB\003\340A\002\022\\\n\021encryption_c"
    -          + "onfig\030\005 \001(\0132<.google.spanner.admin.datab"
    -          + "ase.v1.CopyBackupEncryptionConfigB\003\340A\001\"\371"
    -          + "\001\n\022CopyBackupMetadata\0220\n\004name\030\001 \001(\tB\"\372A\037"
    -          + "\n\035spanner.googleapis.com/Backup\0229\n\rsourc"
    -          + "e_backup\030\002 \001(\tB\"\372A\037\n\035spanner.googleapis."
    -          + "com/Backup\022E\n\010progress\030\003 \001(\01323.google.sp"
    -          + "anner.admin.database.v1.OperationProgres"
    -          + "s\022/\n\013cancel_time\030\004 \001(\0132\032.google.protobuf"
    -          + ".Timestamp\"\212\001\n\023UpdateBackupRequest\022=\n\006ba"
    -          + "ckup\030\001 \001(\0132(.google.spanner.admin.databa"
    -          + "se.v1.BackupB\003\340A\002\0224\n\013update_mask\030\002 \001(\0132\032"
    -          + ".google.protobuf.FieldMaskB\003\340A\002\"G\n\020GetBa"
    -          + "ckupRequest\0223\n\004name\030\001 \001(\tB%\340A\002\372A\037\n\035spann"
    -          + "er.googleapis.com/Backup\"J\n\023DeleteBackup"
    -          + "Request\0223\n\004name\030\001 \001(\tB%\340A\002\372A\037\n\035spanner.g"
    -          + "oogleapis.com/Backup\"\204\001\n\022ListBackupsRequ"
    -          + "est\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.goo"
    -          + "gleapis.com/Instance\022\016\n\006filter\030\002 \001(\t\022\021\n\t"
    -          + "page_size\030\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\"i\n\023L"
    -          + "istBackupsResponse\0229\n\007backups\030\001 \003(\0132(.go"
    -          + "ogle.spanner.admin.database.v1.Backup\022\027\n"
    -          + "\017next_page_token\030\002 \001(\t\"\215\001\n\033ListBackupOpe"
    -          + "rationsRequest\0227\n\006parent\030\001 \001(\tB\'\340A\002\372A!\n\037"
    -          + "spanner.googleapis.com/Instance\022\016\n\006filte"
    -          + "r\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\022\n\npage_token"
    -          + "\030\004 \001(\t\"j\n\034ListBackupOperationsResponse\0221"
    -          + "\n\noperations\030\001 \003(\0132\035.google.longrunning."
    -          + "Operation\022\027\n\017next_page_token\030\002 \001(\t\"\342\001\n\nB"
    -          + "ackupInfo\0222\n\006backup\030\001 \001(\tB\"\372A\037\n\035spanner."
    -          + "googleapis.com/Backup\0220\n\014version_time\030\004 "
    -          + "\001(\0132\032.google.protobuf.Timestamp\022/\n\013creat"
    -          + "e_time\030\002 \001(\0132\032.google.protobuf.Timestamp"
    -          + "\022=\n\017source_database\030\003 \001(\tB$\372A!\n\037spanner."
    -          + "googleapis.com/Database\"\335\002\n\034CreateBackup"
    -          + "EncryptionConfig\022k\n\017encryption_type\030\001 \001("
    -          + "\0162M.google.spanner.admin.database.v1.Cre"
    -          + "ateBackupEncryptionConfig.EncryptionType"
    -          + "B\003\340A\002\022?\n\014kms_key_name\030\002 \001(\tB)\340A\001\372A#\n!clo"
    -          + "udkms.googleapis.com/CryptoKey\"\216\001\n\016Encry"
    -          + "ptionType\022\037\n\033ENCRYPTION_TYPE_UNSPECIFIED"
    -          + "\020\000\022\033\n\027USE_DATABASE_ENCRYPTION\020\001\022\035\n\031GOOGL"
    -          + "E_DEFAULT_ENCRYPTION\020\002\022\037\n\033CUSTOMER_MANAG"
    -          + "ED_ENCRYPTION\020\003\"\351\002\n\032CopyBackupEncryption"
    -          + "Config\022i\n\017encryption_type\030\001 \001(\0162K.google"
    -          + ".spanner.admin.database.v1.CopyBackupEnc"
    -          + "ryptionConfig.EncryptionTypeB\003\340A\002\022?\n\014kms"
    -          + "_key_name\030\002 \001(\tB)\340A\001\372A#\n!cloudkms.google"
    -          + "apis.com/CryptoKey\"\236\001\n\016EncryptionType\022\037\n"
    -          + "\033ENCRYPTION_TYPE_UNSPECIFIED\020\000\022+\n\'USE_CO"
    -          + "NFIG_DEFAULT_OR_BACKUP_ENCRYPTION\020\001\022\035\n\031G"
    -          + "OOGLE_DEFAULT_ENCRYPTION\020\002\022\037\n\033CUSTOMER_M"
    -          + "ANAGED_ENCRYPTION\020\003B\375\001\n$com.google.spann"
    -          + "er.admin.database.v1B\013BackupProtoP\001ZFclo"
    -          + "ud.google.com/go/spanner/admin/database/"
    -          + "apiv1/databasepb;databasepb\252\002&Google.Clo"
    -          + "ud.Spanner.Admin.Database.V1\312\002&Google\\Cl"
    -          + "oud\\Spanner\\Admin\\Database\\V1\352\002+Google::"
    -          + "Cloud::Spanner::Admin::Database::V1b\006pro"
    -          + "to3"
    +          + "pB\004\342A\001\003\022\030\n\nsize_bytes\030\005 \001(\003B\004\342A\001\003\022C\n\005sta"
    +          + "te\030\006 \001(\0162..google.spanner.admin.database"
    +          + ".v1.Backup.StateB\004\342A\001\003\022G\n\025referencing_da"
    +          + "tabases\030\007 \003(\tB(\342A\001\003\372A!\n\037spanner.googleap"
    +          + "is.com/Database\022O\n\017encryption_info\030\010 \001(\013"
    +          + "20.google.spanner.admin.database.v1.Encr"
    +          + "yptionInfoB\004\342A\001\003\022Q\n\020database_dialect\030\n \001"
    +          + "(\01621.google.spanner.admin.database.v1.Da"
    +          + "tabaseDialectB\004\342A\001\003\022C\n\023referencing_backu"
    +          + "ps\030\013 \003(\tB&\342A\001\003\372A\037\n\035spanner.googleapis.co"
    +          + "m/Backup\0229\n\017max_expire_time\030\014 \001(\0132\032.goog"
    +          + "le.protobuf.TimestampB\004\342A\001\003\"7\n\005State\022\025\n\021"
    +          + "STATE_UNSPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n\005REA"
    +          + "DY\020\002:\\\352AY\n\035spanner.googleapis.com/Backup"
    +          + "\0228projects/{project}/instances/{instance"
    +          + "}/backups/{backup}\"\211\002\n\023CreateBackupReque"
    +          + "st\0228\n\006parent\030\001 \001(\tB(\342A\001\002\372A!\n\037spanner.goo"
    +          + "gleapis.com/Instance\022\027\n\tbackup_id\030\002 \001(\tB"
    +          + "\004\342A\001\002\022>\n\006backup\030\003 \001(\0132(.google.spanner.a"
    +          + "dmin.database.v1.BackupB\004\342A\001\002\022_\n\021encrypt"
    +          + "ion_config\030\004 \001(\0132>.google.spanner.admin."
    +          + "database.v1.CreateBackupEncryptionConfig"
    +          + "B\004\342A\001\001\"\370\001\n\024CreateBackupMetadata\0220\n\004name\030"
    +          + "\001 \001(\tB\"\372A\037\n\035spanner.googleapis.com/Backu"
    +          + "p\0226\n\010database\030\002 \001(\tB$\372A!\n\037spanner.google"
    +          + "apis.com/Database\022E\n\010progress\030\003 \001(\01323.go"
    +          + "ogle.spanner.admin.database.v1.Operation"
    +          + "Progress\022/\n\013cancel_time\030\004 \001(\0132\032.google.p"
    +          + "rotobuf.Timestamp\"\273\002\n\021CopyBackupRequest\022"
    +          + "8\n\006parent\030\001 \001(\tB(\342A\001\002\372A!\n\037spanner.google"
    +          + "apis.com/Instance\022\027\n\tbackup_id\030\002 \001(\tB\004\342A"
    +          + "\001\002\022=\n\rsource_backup\030\003 \001(\tB&\342A\001\002\372A\037\n\035span"
    +          + "ner.googleapis.com/Backup\0225\n\013expire_time"
    +          + "\030\004 \001(\0132\032.google.protobuf.TimestampB\004\342A\001\002"
    +          + "\022]\n\021encryption_config\030\005 \001(\0132<.google.spa"
    +          + "nner.admin.database.v1.CopyBackupEncrypt"
    +          + "ionConfigB\004\342A\001\001\"\371\001\n\022CopyBackupMetadata\0220"
    +          + "\n\004name\030\001 \001(\tB\"\372A\037\n\035spanner.googleapis.co"
    +          + "m/Backup\0229\n\rsource_backup\030\002 \001(\tB\"\372A\037\n\035sp"
    +          + "anner.googleapis.com/Backup\022E\n\010progress\030"
    +          + "\003 \001(\01323.google.spanner.admin.database.v1"
    +          + ".OperationProgress\022/\n\013cancel_time\030\004 \001(\0132"
    +          + "\032.google.protobuf.Timestamp\"\214\001\n\023UpdateBa"
    +          + "ckupRequest\022>\n\006backup\030\001 \001(\0132(.google.spa"
    +          + "nner.admin.database.v1.BackupB\004\342A\001\002\0225\n\013u"
    +          + "pdate_mask\030\002 \001(\0132\032.google.protobuf.Field"
    +          + "MaskB\004\342A\001\002\"H\n\020GetBackupRequest\0224\n\004name\030\001"
    +          + " \001(\tB&\342A\001\002\372A\037\n\035spanner.googleapis.com/Ba"
    +          + "ckup\"K\n\023DeleteBackupRequest\0224\n\004name\030\001 \001("
    +          + "\tB&\342A\001\002\372A\037\n\035spanner.googleapis.com/Backu"
    +          + "p\"\205\001\n\022ListBackupsRequest\0228\n\006parent\030\001 \001(\t"
    +          + "B(\342A\001\002\372A!\n\037spanner.googleapis.com/Instan"
    +          + "ce\022\016\n\006filter\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\022\n"
    +          + "\npage_token\030\004 \001(\t\"i\n\023ListBackupsResponse"
    +          + "\0229\n\007backups\030\001 \003(\0132(.google.spanner.admin"
    +          + ".database.v1.Backup\022\027\n\017next_page_token\030\002"
    +          + " \001(\t\"\216\001\n\033ListBackupOperationsRequest\0228\n\006"
    +          + "parent\030\001 \001(\tB(\342A\001\002\372A!\n\037spanner.googleapi"
    +          + "s.com/Instance\022\016\n\006filter\030\002 \001(\t\022\021\n\tpage_s"
    +          + "ize\030\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\"j\n\034ListBac"
    +          + "kupOperationsResponse\0221\n\noperations\030\001 \003("
    +          + "\0132\035.google.longrunning.Operation\022\027\n\017next"
    +          + "_page_token\030\002 \001(\t\"\342\001\n\nBackupInfo\0222\n\006back"
    +          + "up\030\001 \001(\tB\"\372A\037\n\035spanner.googleapis.com/Ba"
    +          + "ckup\0220\n\014version_time\030\004 \001(\0132\032.google.prot"
    +          + "obuf.Timestamp\022/\n\013create_time\030\002 \001(\0132\032.go"
    +          + "ogle.protobuf.Timestamp\022=\n\017source_databa"
    +          + "se\030\003 \001(\tB$\372A!\n\037spanner.googleapis.com/Da"
    +          + "tabase\"\337\002\n\034CreateBackupEncryptionConfig\022"
    +          + "l\n\017encryption_type\030\001 \001(\0162M.google.spanne"
    +          + "r.admin.database.v1.CreateBackupEncrypti"
    +          + "onConfig.EncryptionTypeB\004\342A\001\002\022@\n\014kms_key"
    +          + "_name\030\002 \001(\tB*\342A\001\001\372A#\n!cloudkms.googleapi"
    +          + "s.com/CryptoKey\"\216\001\n\016EncryptionType\022\037\n\033EN"
    +          + "CRYPTION_TYPE_UNSPECIFIED\020\000\022\033\n\027USE_DATAB"
    +          + "ASE_ENCRYPTION\020\001\022\035\n\031GOOGLE_DEFAULT_ENCRY"
    +          + "PTION\020\002\022\037\n\033CUSTOMER_MANAGED_ENCRYPTION\020\003"
    +          + "\"\353\002\n\032CopyBackupEncryptionConfig\022j\n\017encry"
    +          + "ption_type\030\001 \001(\0162K.google.spanner.admin."
    +          + "database.v1.CopyBackupEncryptionConfig.E"
    +          + "ncryptionTypeB\004\342A\001\002\022@\n\014kms_key_name\030\002 \001("
    +          + "\tB*\342A\001\001\372A#\n!cloudkms.googleapis.com/Cryp"
    +          + "toKey\"\236\001\n\016EncryptionType\022\037\n\033ENCRYPTION_T"
    +          + "YPE_UNSPECIFIED\020\000\022+\n\'USE_CONFIG_DEFAULT_"
    +          + "OR_BACKUP_ENCRYPTION\020\001\022\035\n\031GOOGLE_DEFAULT"
    +          + "_ENCRYPTION\020\002\022\037\n\033CUSTOMER_MANAGED_ENCRYP"
    +          + "TION\020\003B\375\001\n$com.google.spanner.admin.data"
    +          + "base.v1B\013BackupProtoP\001ZFcloud.google.com"
    +          + "/go/spanner/admin/database/apiv1/databas"
    +          + "epb;databasepb\252\002&Google.Cloud.Spanner.Ad"
    +          + "min.Database.V1\312\002&Google\\Cloud\\Spanner\\A"
    +          + "dmin\\Database\\V1\352\002+Google::Cloud::Spanne"
    +          + "r::Admin::Database::V1b\006proto3"
         };
         descriptor =
             com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
    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 a381d3c5122..0f5840f6f15 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
    @@ -58,31 +58,32 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
               + "tobuf.Timestamp\022,\n\010end_time\030\003 \001(\0132\032.goog"
               + "le.protobuf.Timestamp\"P\n\020EncryptionConfi"
               + "g\022<\n\014kms_key_name\030\002 \001(\tB&\372A#\n!cloudkms.g"
    -          + "oogleapis.com/CryptoKey\"\302\002\n\016EncryptionIn"
    -          + "fo\022S\n\017encryption_type\030\003 \001(\01625.google.spa"
    +          + "oogleapis.com/CryptoKey\"\305\002\n\016EncryptionIn"
    +          + "fo\022T\n\017encryption_type\030\003 \001(\01625.google.spa"
               + "nner.admin.database.v1.EncryptionInfo.Ty"
    -          + "peB\003\340A\003\0222\n\021encryption_status\030\004 \001(\0132\022.goo"
    -          + "gle.rpc.StatusB\003\340A\003\022I\n\017kms_key_version\030\002"
    -          + " \001(\tB0\340A\003\372A*\n(cloudkms.googleapis.com/Cr"
    -          + "yptoKeyVersion\"\\\n\004Type\022\024\n\020TYPE_UNSPECIFI"
    -          + "ED\020\000\022\035\n\031GOOGLE_DEFAULT_ENCRYPTION\020\001\022\037\n\033C"
    -          + "USTOMER_MANAGED_ENCRYPTION\020\002*\\\n\017Database"
    -          + "Dialect\022 \n\034DATABASE_DIALECT_UNSPECIFIED\020"
    -          + "\000\022\027\n\023GOOGLE_STANDARD_SQL\020\001\022\016\n\nPOSTGRESQL"
    -          + "\020\002B\242\004\n$com.google.spanner.admin.database"
    -          + ".v1B\013CommonProtoP\001ZFcloud.google.com/go/"
    -          + "spanner/admin/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::A"
    -          + "dmin::Database::V1\352Ax\n!cloudkms.googleap"
    -          + "is.com/CryptoKey\022Sprojects/{project}/loc"
    -          + "ations/{location}/keyRings/{key_ring}/cr"
    -          + "yptoKeys/{crypto_key}\352A\246\001\n(cloudkms.goog"
    -          + "leapis.com/CryptoKeyVersion\022zprojects/{p"
    -          + "roject}/locations/{location}/keyRings/{k"
    -          + "ey_ring}/cryptoKeys/{crypto_key}/cryptoK"
    -          + "eyVersions/{crypto_key_version}b\006proto3"
    +          + "peB\004\342A\001\003\0223\n\021encryption_status\030\004 \001(\0132\022.go"
    +          + "ogle.rpc.StatusB\004\342A\001\003\022J\n\017kms_key_version"
    +          + "\030\002 \001(\tB1\342A\001\003\372A*\n(cloudkms.googleapis.com"
    +          + "/CryptoKeyVersion\"\\\n\004Type\022\024\n\020TYPE_UNSPEC"
    +          + "IFIED\020\000\022\035\n\031GOOGLE_DEFAULT_ENCRYPTION\020\001\022\037"
    +          + "\n\033CUSTOMER_MANAGED_ENCRYPTION\020\002*\\\n\017Datab"
    +          + "aseDialect\022 \n\034DATABASE_DIALECT_UNSPECIFI"
    +          + "ED\020\000\022\027\n\023GOOGLE_STANDARD_SQL\020\001\022\016\n\nPOSTGRE"
    +          + "SQL\020\002B\242\004\n$com.google.spanner.admin.datab"
    +          + "ase.v1B\013CommonProtoP\001ZFcloud.google.com/"
    +          + "go/spanner/admin/database/apiv1/database"
    +          + "pb;databasepb\252\002&Google.Cloud.Spanner.Adm"
    +          + "in.Database.V1\312\002&Google\\Cloud\\Spanner\\Ad"
    +          + "min\\Database\\V1\352\002+Google::Cloud::Spanner"
    +          + "::Admin::Database::V1\352Ax\n!cloudkms.googl"
    +          + "eapis.com/CryptoKey\022Sprojects/{project}/"
    +          + "locations/{location}/keyRings/{key_ring}"
    +          + "/cryptoKeys/{crypto_key}\352A\246\001\n(cloudkms.g"
    +          + "oogleapis.com/CryptoKeyVersion\022zprojects"
    +          + "/{project}/locations/{location}/keyRings"
    +          + "/{key_ring}/cryptoKeys/{crypto_key}/cryp"
    +          + "toKeyVersions/{crypto_key_version}b\006prot"
    +          + "o3"
         };
         descriptor =
             com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
    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 3b571fd926b..bfa78ae301f 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CopyBackupEncryptionConfig();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_CopyBackupEncryptionConfig_descriptor;
    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 f2bc437a1ad..63db05c5083 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CopyBackupMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_CopyBackupMetadata_descriptor;
    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 810c5043ce9..62cbd05991d 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CopyBackupRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_CopyBackupRequest_descriptor;
    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 1381514795c..72efb786d53 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CreateBackupEncryptionConfig();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_CreateBackupEncryptionConfig_descriptor;
    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 c534895357a..83c3b45c003 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CreateBackupMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_CreateBackupMetadata_descriptor;
    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 96197d756b5..3ac0f2c8558 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CreateBackupRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_CreateBackupRequest_descriptor;
    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 b24893c407a..ebcc297cbba 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CreateDatabaseMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_CreateDatabaseMetadata_descriptor;
    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 e393b538ff4..38317542e4c 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
    @@ -40,7 +40,7 @@ private CreateDatabaseRequest(com.google.protobuf.GeneratedMessageV3.Builder
       private CreateDatabaseRequest() {
         parent_ = "";
         createStatement_ = "";
    -    extraStatements_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +    extraStatements_ = com.google.protobuf.LazyStringArrayList.emptyList();
         databaseDialect_ = 0;
       }
     
    @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CreateDatabaseRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_CreateDatabaseRequest_descriptor;
    @@ -189,7 +184,8 @@ public com.google.protobuf.ByteString getCreateStatementBytes() {
       public static final int EXTRA_STATEMENTS_FIELD_NUMBER = 3;
     
       @SuppressWarnings("serial")
    -  private com.google.protobuf.LazyStringList extraStatements_;
    +  private com.google.protobuf.LazyStringArrayList extraStatements_ =
    +      com.google.protobuf.LazyStringArrayList.emptyList();
       /**
        *
        *
    @@ -618,8 +614,7 @@ public Builder clear() {
           bitField0_ = 0;
           parent_ = "";
           createStatement_ = "";
    -      extraStatements_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    -      bitField0_ = (bitField0_ & ~0x00000004);
    +      extraStatements_ = com.google.protobuf.LazyStringArrayList.emptyList();
           encryptionConfig_ = null;
           if (encryptionConfigBuilder_ != null) {
             encryptionConfigBuilder_.dispose();
    @@ -653,7 +648,6 @@ public com.google.spanner.admin.database.v1.CreateDatabaseRequest build() {
         public com.google.spanner.admin.database.v1.CreateDatabaseRequest buildPartial() {
           com.google.spanner.admin.database.v1.CreateDatabaseRequest result =
               new com.google.spanner.admin.database.v1.CreateDatabaseRequest(this);
    -      buildPartialRepeatedFields(result);
           if (bitField0_ != 0) {
             buildPartial0(result);
           }
    @@ -661,15 +655,6 @@ public com.google.spanner.admin.database.v1.CreateDatabaseRequest buildPartial()
           return result;
         }
     
    -    private void buildPartialRepeatedFields(
    -        com.google.spanner.admin.database.v1.CreateDatabaseRequest result) {
    -      if (((bitField0_ & 0x00000004) != 0)) {
    -        extraStatements_ = extraStatements_.getUnmodifiableView();
    -        bitField0_ = (bitField0_ & ~0x00000004);
    -      }
    -      result.extraStatements_ = extraStatements_;
    -    }
    -
         private void buildPartial0(com.google.spanner.admin.database.v1.CreateDatabaseRequest result) {
           int from_bitField0_ = bitField0_;
           if (((from_bitField0_ & 0x00000001) != 0)) {
    @@ -678,6 +663,10 @@ private void buildPartial0(com.google.spanner.admin.database.v1.CreateDatabaseRe
           if (((from_bitField0_ & 0x00000002) != 0)) {
             result.createStatement_ = createStatement_;
           }
    +      if (((from_bitField0_ & 0x00000004) != 0)) {
    +        extraStatements_.makeImmutable();
    +        result.extraStatements_ = extraStatements_;
    +      }
           if (((from_bitField0_ & 0x00000008) != 0)) {
             result.encryptionConfig_ =
                 encryptionConfigBuilder_ == null ? encryptionConfig_ : encryptionConfigBuilder_.build();
    @@ -746,7 +735,7 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.CreateDatabaseRequ
           if (!other.extraStatements_.isEmpty()) {
             if (extraStatements_.isEmpty()) {
               extraStatements_ = other.extraStatements_;
    -          bitField0_ = (bitField0_ & ~0x00000004);
    +          bitField0_ |= 0x00000004;
             } else {
               ensureExtraStatementsIsMutable();
               extraStatements_.addAll(other.extraStatements_);
    @@ -1083,14 +1072,14 @@ public Builder setCreateStatementBytes(com.google.protobuf.ByteString value) {
           return this;
         }
     
    -    private com.google.protobuf.LazyStringList extraStatements_ =
    -        com.google.protobuf.LazyStringArrayList.EMPTY;
    +    private com.google.protobuf.LazyStringArrayList extraStatements_ =
    +        com.google.protobuf.LazyStringArrayList.emptyList();
     
         private void ensureExtraStatementsIsMutable() {
    -      if (!((bitField0_ & 0x00000004) != 0)) {
    +      if (!extraStatements_.isModifiable()) {
             extraStatements_ = new com.google.protobuf.LazyStringArrayList(extraStatements_);
    -        bitField0_ |= 0x00000004;
           }
    +      bitField0_ |= 0x00000004;
         }
         /**
          *
    @@ -1107,7 +1096,8 @@ private void ensureExtraStatementsIsMutable() {
          * @return A list containing the extraStatements.
          */
         public com.google.protobuf.ProtocolStringList getExtraStatementsList() {
    -      return extraStatements_.getUnmodifiableView();
    +      extraStatements_.makeImmutable();
    +      return extraStatements_;
         }
         /**
          *
    @@ -1184,6 +1174,7 @@ public Builder setExtraStatements(int index, java.lang.String value) {
           }
           ensureExtraStatementsIsMutable();
           extraStatements_.set(index, value);
    +      bitField0_ |= 0x00000004;
           onChanged();
           return this;
         }
    @@ -1208,6 +1199,7 @@ public Builder addExtraStatements(java.lang.String value) {
           }
           ensureExtraStatementsIsMutable();
           extraStatements_.add(value);
    +      bitField0_ |= 0x00000004;
           onChanged();
           return this;
         }
    @@ -1229,6 +1221,7 @@ public Builder addExtraStatements(java.lang.String value) {
         public Builder addAllExtraStatements(java.lang.Iterable values) {
           ensureExtraStatementsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(values, extraStatements_);
    +      bitField0_ |= 0x00000004;
           onChanged();
           return this;
         }
    @@ -1247,8 +1240,9 @@ public Builder addAllExtraStatements(java.lang.Iterable values
          * @return This builder for chaining.
          */
         public Builder clearExtraStatements() {
    -      extraStatements_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +      extraStatements_ = com.google.protobuf.LazyStringArrayList.emptyList();
           bitField0_ = (bitField0_ & ~0x00000004);
    +      ;
           onChanged();
           return this;
         }
    @@ -1274,6 +1268,7 @@ public Builder addExtraStatementsBytes(com.google.protobuf.ByteString value) {
           checkByteStringIsUtf8(value);
           ensureExtraStatementsIsMutable();
           extraStatements_.add(value);
    +      bitField0_ |= 0x00000004;
           onChanged();
           return this;
         }
    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 f982cfe291a..c87638bef4d 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
    @@ -52,11 +52,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new Database();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_Database_descriptor;
    @@ -119,6 +114,7 @@ public enum State implements com.google.protobuf.ProtocolMessageEnum {
          * 
          * The database is fully created and ready for use, but is still
          * being optimized for performance and cannot handle full load.
    +     *
          * In this state, the database still references the backup
          * it was restore from, preventing the backup
          * from being deleted. When optimizations are complete, the full performance
    @@ -169,6 +165,7 @@ public enum State implements com.google.protobuf.ProtocolMessageEnum {
          * 
          * The database is fully created and ready for use, but is still
          * being optimized for performance and cannot handle full load.
    +     *
          * In this state, the database still references the backup
          * it was restore from, preventing the backup
          * from being deleted. When optimizations are complete, the full performance
    @@ -550,8 +547,10 @@ public com.google.spanner.admin.database.v1.EncryptionConfig getEncryptionConfig
        * Output only. For databases that are using customer managed encryption, this
        * field contains the encryption information for the database, such as
        * encryption state and the Cloud KMS key versions that are in use.
    +   *
        * For databases that are using Google default or other types of encryption,
        * this field is empty.
    +   *
        * This field is propagated lazily from the backend. There might be a delay
        * from when a key version is being used and when it appears in this field.
        * 
    @@ -572,8 +571,10 @@ public com.google.spanner.admin.database.v1.EncryptionConfig getEncryptionConfig * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -594,8 +595,10 @@ public com.google.spanner.admin.database.v1.EncryptionConfig getEncryptionConfig * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -615,8 +618,10 @@ public int getEncryptionInfoCount() { * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -636,8 +641,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfo getEncryptionInfo(int * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -789,6 +796,7 @@ public com.google.protobuf.TimestampOrBuilder getEarliestVersionTimeOrBuilder() *
        * Output only. The read-write region which contains the database's leader
        * replicas.
    +   *
        * This is the same as the value of default_leader
        * database option set using DatabaseAdmin.CreateDatabase or
        * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -816,6 +824,7 @@ public java.lang.String getDefaultLeader() {
        * 
        * Output only. The read-write region which contains the database's leader
        * replicas.
    +   *
        * This is the same as the value of default_leader
        * database option set using DatabaseAdmin.CreateDatabase or
        * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -2503,8 +2512,10 @@ private void ensureEncryptionInfoIsMutable() {
          * Output only. For databases that are using customer managed encryption, this
          * field contains the encryption information for the database, such as
          * encryption state and the Cloud KMS key versions that are in use.
    +     *
          * For databases that are using Google default or other types of encryption,
          * this field is empty.
    +     *
          * This field is propagated lazily from the backend. There might be a delay
          * from when a key version is being used and when it appears in this field.
          * 
    @@ -2528,8 +2539,10 @@ private void ensureEncryptionInfoIsMutable() { * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2552,8 +2565,10 @@ public int getEncryptionInfoCount() { * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2576,8 +2591,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfo getEncryptionInfo(int * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2607,8 +2624,10 @@ public Builder setEncryptionInfo( * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2635,8 +2654,10 @@ public Builder setEncryptionInfo( * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2665,8 +2686,10 @@ public Builder addEncryptionInfo(com.google.spanner.admin.database.v1.Encryption * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2696,8 +2719,10 @@ public Builder addEncryptionInfo( * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -2724,8 +2749,10 @@ public Builder addEncryptionInfo( * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2752,8 +2779,10 @@ public Builder addEncryptionInfo( * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2780,8 +2809,10 @@ public Builder addAllEncryptionInfo( * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2807,8 +2838,10 @@ public Builder clearEncryptionInfo() { * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2834,8 +2867,10 @@ public Builder removeEncryptionInfo(int index) { * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2855,8 +2890,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfo.Builder getEncryption * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2880,8 +2917,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfoOrBuilder getEncryptio * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2905,8 +2944,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfoOrBuilder getEncryptio * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2926,8 +2967,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfo.Builder addEncryption * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -2949,8 +2992,10 @@ public com.google.spanner.admin.database.v1.EncryptionInfo.Builder addEncryption * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. * @@ -3359,6 +3404,7 @@ public com.google.protobuf.TimestampOrBuilder getEarliestVersionTimeOrBuilder() *
          * Output only. The read-write region which contains the database's leader
          * replicas.
    +     *
          * This is the same as the value of default_leader
          * database option set using DatabaseAdmin.CreateDatabase or
          * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -3385,6 +3431,7 @@ public java.lang.String getDefaultLeader() {
          * 
          * Output only. The read-write region which contains the database's leader
          * replicas.
    +     *
          * This is the same as the value of default_leader
          * database option set using DatabaseAdmin.CreateDatabase or
          * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -3411,6 +3458,7 @@ public com.google.protobuf.ByteString getDefaultLeaderBytes() {
          * 
          * Output only. The read-write region which contains the database's leader
          * replicas.
    +     *
          * This is the same as the value of default_leader
          * database option set using DatabaseAdmin.CreateDatabase or
          * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -3436,6 +3484,7 @@ public Builder setDefaultLeader(java.lang.String value) {
          * 
          * Output only. The read-write region which contains the database's leader
          * replicas.
    +     *
          * This is the same as the value of default_leader
          * database option set using DatabaseAdmin.CreateDatabase or
          * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -3457,6 +3506,7 @@ public Builder clearDefaultLeader() {
          * 
          * Output only. The read-write region which contains the database's leader
          * replicas.
    +     *
          * This is the same as the value of default_leader
          * database option set using DatabaseAdmin.CreateDatabase or
          * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseName.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseName.java
    index 93da0e4ae84..9c583702ee4 100644
    --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseName.java
    +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseName.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2022 Google LLC
    + * Copyright 2023 Google LLC
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
    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 0252781fe91..2dd394d2c7c 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
    @@ -224,8 +224,10 @@ public interface DatabaseOrBuilder
        * Output only. For databases that are using customer managed encryption, this
        * field contains the encryption information for the database, such as
        * encryption state and the Cloud KMS key versions that are in use.
    +   *
        * For databases that are using Google default or other types of encryption,
        * this field is empty.
    +   *
        * This field is propagated lazily from the backend. There might be a delay
        * from when a key version is being used and when it appears in this field.
        * 
    @@ -242,8 +244,10 @@ public interface DatabaseOrBuilder * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -260,8 +264,10 @@ public interface DatabaseOrBuilder * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -278,8 +284,10 @@ public interface DatabaseOrBuilder * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -297,8 +305,10 @@ public interface DatabaseOrBuilder * Output only. For databases that are using customer managed encryption, this * field contains the encryption information for the database, such as * encryption state and the Cloud KMS key versions that are in use. + * * For databases that are using Google default or other types of encryption, * this field is empty. + * * This field is propagated lazily from the backend. There might be a delay * from when a key version is being used and when it appears in this field. *
    @@ -402,6 +412,7 @@ com.google.spanner.admin.database.v1.EncryptionInfoOrBuilder getEncryptionInfoOr *
        * Output only. The read-write region which contains the database's leader
        * replicas.
    +   *
        * This is the same as the value of default_leader
        * database option set using DatabaseAdmin.CreateDatabase or
        * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    @@ -418,6 +429,7 @@ com.google.spanner.admin.database.v1.EncryptionInfoOrBuilder getEncryptionInfoOr
        * 
        * Output only. The read-write region which contains the database's leader
        * replicas.
    +   *
        * This is the same as the value of default_leader
        * database option set using DatabaseAdmin.CreateDatabase or
        * DatabaseAdmin.UpdateDatabaseDdl. If not explicitly set, this is empty.
    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 42caf41f84f..d0f86946079 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new DatabaseRole();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_DatabaseRole_descriptor;
    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
    new file mode 100644
    index 00000000000..8c57d14fb9b
    --- /dev/null
    +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfo.java
    @@ -0,0 +1,1161 @@
    +/*
    + * Copyright 2020 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/admin/database/v1/spanner_database_admin.proto
    +
    +package com.google.spanner.admin.database.v1;
    +
    +/**
    + *
    + *
    + * 
    + * Action information extracted from a DDL statement. This proto is used to
    + * display the brief info of the DDL statement for the operation
    + * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl].
    + * 
    + * + * Protobuf type {@code google.spanner.admin.database.v1.DdlStatementActionInfo} + */ +public final class DdlStatementActionInfo extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.admin.database.v1.DdlStatementActionInfo) + DdlStatementActionInfoOrBuilder { + private static final long serialVersionUID = 0L; + // Use DdlStatementActionInfo.newBuilder() to construct. + private DdlStatementActionInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private DdlStatementActionInfo() { + action_ = ""; + entityType_ = ""; + entityNames_ = com.google.protobuf.LazyStringArrayList.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new DdlStatementActionInfo(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.DdlStatementActionInfo.class, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder.class); + } + + public static final int ACTION_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object action_ = ""; + /** + * + * + *
    +   * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +   * This field is a non-empty string.
    +   * 
    + * + * string action = 1; + * + * @return The action. + */ + @java.lang.Override + public java.lang.String getAction() { + java.lang.Object ref = action_; + 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(); + action_ = s; + return s; + } + } + /** + * + * + *
    +   * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +   * This field is a non-empty string.
    +   * 
    + * + * string action = 1; + * + * @return The bytes for action. + */ + @java.lang.Override + public com.google.protobuf.ByteString getActionBytes() { + java.lang.Object ref = action_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + action_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ENTITY_TYPE_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object entityType_ = ""; + /** + * + * + *
    +   * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +   * This field can be empty string for some DDL statement,
    +   * e.g. for statement "ANALYZE", `entity_type` = "".
    +   * 
    + * + * string entity_type = 2; + * + * @return The entityType. + */ + @java.lang.Override + public java.lang.String getEntityType() { + java.lang.Object ref = entityType_; + 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(); + entityType_ = s; + return s; + } + } + /** + * + * + *
    +   * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +   * This field can be empty string for some DDL statement,
    +   * e.g. for statement "ANALYZE", `entity_type` = "".
    +   * 
    + * + * string entity_type = 2; + * + * @return The bytes for entityType. + */ + @java.lang.Override + public com.google.protobuf.ByteString getEntityTypeBytes() { + java.lang.Object ref = entityType_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + entityType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ENTITY_NAMES_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList entityNames_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @return A list containing the entityNames. + */ + public com.google.protobuf.ProtocolStringList getEntityNamesList() { + return entityNames_; + } + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @return The count of entityNames. + */ + public int getEntityNamesCount() { + return entityNames_.size(); + } + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @param index The index of the element to return. + * @return The entityNames at the given index. + */ + public java.lang.String getEntityNames(int index) { + return entityNames_.get(index); + } + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @param index The index of the value to return. + * @return The bytes of the entityNames at the given index. + */ + public com.google.protobuf.ByteString getEntityNamesBytes(int index) { + return entityNames_.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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(action_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, action_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(entityType_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, entityType_); + } + for (int i = 0; i < entityNames_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, entityNames_.getRaw(i)); + } + 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(action_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, action_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(entityType_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, entityType_); + } + { + int dataSize = 0; + for (int i = 0; i < entityNames_.size(); i++) { + dataSize += computeStringSizeNoTag(entityNames_.getRaw(i)); + } + size += dataSize; + size += 1 * getEntityNamesList().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.admin.database.v1.DdlStatementActionInfo)) { + return super.equals(obj); + } + com.google.spanner.admin.database.v1.DdlStatementActionInfo other = + (com.google.spanner.admin.database.v1.DdlStatementActionInfo) obj; + + if (!getAction().equals(other.getAction())) return false; + if (!getEntityType().equals(other.getEntityType())) return false; + if (!getEntityNamesList().equals(other.getEntityNamesList())) 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) + ACTION_FIELD_NUMBER; + hash = (53 * hash) + getAction().hashCode(); + hash = (37 * hash) + ENTITY_TYPE_FIELD_NUMBER; + hash = (53 * hash) + getEntityType().hashCode(); + if (getEntityNamesCount() > 0) { + hash = (37 * hash) + ENTITY_NAMES_FIELD_NUMBER; + hash = (53 * hash) + getEntityNamesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo 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.admin.database.v1.DdlStatementActionInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo 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.admin.database.v1.DdlStatementActionInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo 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.admin.database.v1.DdlStatementActionInfo parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo 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.admin.database.v1.DdlStatementActionInfo parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo 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.admin.database.v1.DdlStatementActionInfo 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; + } + /** + * + * + *
    +   * Action information extracted from a DDL statement. This proto is used to
    +   * display the brief info of the DDL statement for the operation
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl].
    +   * 
    + * + * Protobuf type {@code google.spanner.admin.database.v1.DdlStatementActionInfo} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.admin.database.v1.DdlStatementActionInfo) + com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.DdlStatementActionInfo.class, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder.class); + } + + // Construct using com.google.spanner.admin.database.v1.DdlStatementActionInfo.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + action_ = ""; + entityType_ = ""; + entityNames_ = com.google.protobuf.LazyStringArrayList.emptyList(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.DdlStatementActionInfo getDefaultInstanceForType() { + return com.google.spanner.admin.database.v1.DdlStatementActionInfo.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.DdlStatementActionInfo build() { + com.google.spanner.admin.database.v1.DdlStatementActionInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.DdlStatementActionInfo buildPartial() { + com.google.spanner.admin.database.v1.DdlStatementActionInfo result = + new com.google.spanner.admin.database.v1.DdlStatementActionInfo(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.admin.database.v1.DdlStatementActionInfo result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.action_ = action_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.entityType_ = entityType_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + entityNames_.makeImmutable(); + result.entityNames_ = entityNames_; + } + } + + @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.admin.database.v1.DdlStatementActionInfo) { + return mergeFrom((com.google.spanner.admin.database.v1.DdlStatementActionInfo) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.admin.database.v1.DdlStatementActionInfo other) { + if (other == com.google.spanner.admin.database.v1.DdlStatementActionInfo.getDefaultInstance()) + return this; + if (!other.getAction().isEmpty()) { + action_ = other.action_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getEntityType().isEmpty()) { + entityType_ = other.entityType_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.entityNames_.isEmpty()) { + if (entityNames_.isEmpty()) { + entityNames_ = other.entityNames_; + bitField0_ |= 0x00000004; + } else { + ensureEntityNamesIsMutable(); + entityNames_.addAll(other.entityNames_); + } + 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: + { + action_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + entityType_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + java.lang.String s = input.readStringRequireUtf8(); + ensureEntityNamesIsMutable(); + entityNames_.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 java.lang.Object action_ = ""; + /** + * + * + *
    +     * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +     * This field is a non-empty string.
    +     * 
    + * + * string action = 1; + * + * @return The action. + */ + public java.lang.String getAction() { + java.lang.Object ref = action_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + action_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
    +     * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +     * This field is a non-empty string.
    +     * 
    + * + * string action = 1; + * + * @return The bytes for action. + */ + public com.google.protobuf.ByteString getActionBytes() { + java.lang.Object ref = action_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + action_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
    +     * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +     * This field is a non-empty string.
    +     * 
    + * + * string action = 1; + * + * @param value The action to set. + * @return This builder for chaining. + */ + public Builder setAction(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + action_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
    +     * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +     * This field is a non-empty string.
    +     * 
    + * + * string action = 1; + * + * @return This builder for chaining. + */ + public Builder clearAction() { + action_ = getDefaultInstance().getAction(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
    +     * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +     * This field is a non-empty string.
    +     * 
    + * + * string action = 1; + * + * @param value The bytes for action to set. + * @return This builder for chaining. + */ + public Builder setActionBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + action_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object entityType_ = ""; + /** + * + * + *
    +     * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +     * This field can be empty string for some DDL statement,
    +     * e.g. for statement "ANALYZE", `entity_type` = "".
    +     * 
    + * + * string entity_type = 2; + * + * @return The entityType. + */ + public java.lang.String getEntityType() { + java.lang.Object ref = entityType_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + entityType_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
    +     * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +     * This field can be empty string for some DDL statement,
    +     * e.g. for statement "ANALYZE", `entity_type` = "".
    +     * 
    + * + * string entity_type = 2; + * + * @return The bytes for entityType. + */ + public com.google.protobuf.ByteString getEntityTypeBytes() { + java.lang.Object ref = entityType_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + entityType_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
    +     * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +     * This field can be empty string for some DDL statement,
    +     * e.g. for statement "ANALYZE", `entity_type` = "".
    +     * 
    + * + * string entity_type = 2; + * + * @param value The entityType to set. + * @return This builder for chaining. + */ + public Builder setEntityType(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + entityType_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
    +     * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +     * This field can be empty string for some DDL statement,
    +     * e.g. for statement "ANALYZE", `entity_type` = "".
    +     * 
    + * + * string entity_type = 2; + * + * @return This builder for chaining. + */ + public Builder clearEntityType() { + entityType_ = getDefaultInstance().getEntityType(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * + * + *
    +     * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +     * This field can be empty string for some DDL statement,
    +     * e.g. for statement "ANALYZE", `entity_type` = "".
    +     * 
    + * + * string entity_type = 2; + * + * @param value The bytes for entityType to set. + * @return This builder for chaining. + */ + public Builder setEntityTypeBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + entityType_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringArrayList entityNames_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + + private void ensureEntityNamesIsMutable() { + if (!entityNames_.isModifiable()) { + entityNames_ = new com.google.protobuf.LazyStringArrayList(entityNames_); + } + bitField0_ |= 0x00000004; + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @return A list containing the entityNames. + */ + public com.google.protobuf.ProtocolStringList getEntityNamesList() { + entityNames_.makeImmutable(); + return entityNames_; + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @return The count of entityNames. + */ + public int getEntityNamesCount() { + return entityNames_.size(); + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @param index The index of the element to return. + * @return The entityNames at the given index. + */ + public java.lang.String getEntityNames(int index) { + return entityNames_.get(index); + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @param index The index of the value to return. + * @return The bytes of the entityNames at the given index. + */ + public com.google.protobuf.ByteString getEntityNamesBytes(int index) { + return entityNames_.getByteString(index); + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @param index The index to set the value at. + * @param value The entityNames to set. + * @return This builder for chaining. + */ + public Builder setEntityNames(int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityNamesIsMutable(); + entityNames_.set(index, value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @param value The entityNames to add. + * @return This builder for chaining. + */ + public Builder addEntityNames(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityNamesIsMutable(); + entityNames_.add(value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @param values The entityNames to add. + * @return This builder for chaining. + */ + public Builder addAllEntityNames(java.lang.Iterable values) { + ensureEntityNamesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, entityNames_); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @return This builder for chaining. + */ + public Builder clearEntityNames() { + entityNames_ = com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + ; + onChanged(); + return this; + } + /** + * + * + *
    +     * The entity name(s) being operated on the DDL statement.
    +     * E.g.
    +     * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +     * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +     * 3. For statement "ANALYZE", `entity_names` = [].
    +     * 
    + * + * repeated string entity_names = 3; + * + * @param value The bytes of the entityNames to add. + * @return This builder for chaining. + */ + public Builder addEntityNamesBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureEntityNamesIsMutable(); + entityNames_.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.admin.database.v1.DdlStatementActionInfo) + } + + // @@protoc_insertion_point(class_scope:google.spanner.admin.database.v1.DdlStatementActionInfo) + private static final com.google.spanner.admin.database.v1.DdlStatementActionInfo DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.admin.database.v1.DdlStatementActionInfo(); + } + + public static com.google.spanner.admin.database.v1.DdlStatementActionInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DdlStatementActionInfo 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.admin.database.v1.DdlStatementActionInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} 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 new file mode 100644 index 00000000000..77632b556eb --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DdlStatementActionInfoOrBuilder.java @@ -0,0 +1,148 @@ +/* + * Copyright 2020 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/admin/database/v1/spanner_database_admin.proto + +package com.google.spanner.admin.database.v1; + +public interface DdlStatementActionInfoOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.admin.database.v1.DdlStatementActionInfo) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
    +   * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +   * This field is a non-empty string.
    +   * 
    + * + * string action = 1; + * + * @return The action. + */ + java.lang.String getAction(); + /** + * + * + *
    +   * The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc.
    +   * This field is a non-empty string.
    +   * 
    + * + * string action = 1; + * + * @return The bytes for action. + */ + com.google.protobuf.ByteString getActionBytes(); + + /** + * + * + *
    +   * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +   * This field can be empty string for some DDL statement,
    +   * e.g. for statement "ANALYZE", `entity_type` = "".
    +   * 
    + * + * string entity_type = 2; + * + * @return The entityType. + */ + java.lang.String getEntityType(); + /** + * + * + *
    +   * The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc.
    +   * This field can be empty string for some DDL statement,
    +   * e.g. for statement "ANALYZE", `entity_type` = "".
    +   * 
    + * + * string entity_type = 2; + * + * @return The bytes for entityType. + */ + com.google.protobuf.ByteString getEntityTypeBytes(); + + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @return A list containing the entityNames. + */ + java.util.List getEntityNamesList(); + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @return The count of entityNames. + */ + int getEntityNamesCount(); + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @param index The index of the element to return. + * @return The entityNames at the given index. + */ + java.lang.String getEntityNames(int index); + /** + * + * + *
    +   * The entity name(s) being operated on the DDL statement.
    +   * E.g.
    +   * 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"].
    +   * 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"].
    +   * 3. For statement "ANALYZE", `entity_names` = [].
    +   * 
    + * + * repeated string entity_names = 3; + * + * @param index The index of the value to return. + * @return The bytes of the entityNames at the given index. + */ + com.google.protobuf.ByteString getEntityNamesBytes(int index); +} 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 e095273e163..b7ec86f086c 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new DeleteBackupRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.BackupProto .internal_static_google_spanner_admin_database_v1_DeleteBackupRequest_descriptor; 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 2aea18dad1a..401e68627a3 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new DropDatabaseRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_descriptor; 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 1ef8ecc89c4..77046a46e50 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new EncryptionConfig(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.CommonProto .internal_static_google_spanner_admin_database_v1_EncryptionConfig_descriptor; 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 87cecf2d4a4..b5a473e4b8b 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 @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new EncryptionInfo(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.CommonProto .internal_static_google_spanner_admin_database_v1_EncryptionInfo_descriptor; 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 7f3cad81b14..cd3c0180bc6 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetBackupRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.BackupProto .internal_static_google_spanner_admin_database_v1_GetBackupRequest_descriptor; 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 528e3bb5d78..311555b751c 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetDatabaseDdlRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_descriptor; 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 c4ad5e76da3..fd710da5da0 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 @@ -38,7 +38,7 @@ private GetDatabaseDdlResponse(com.google.protobuf.GeneratedMessageV3.Builder } private GetDatabaseDdlResponse() { - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); } @java.lang.Override @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetDatabaseDdlResponse(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_descriptor; @@ -70,7 +65,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { public static final int STATEMENTS_FIELD_NUMBER = 1; @SuppressWarnings("serial") - private com.google.protobuf.LazyStringList statements_; + private com.google.protobuf.LazyStringArrayList statements_ = + com.google.protobuf.LazyStringArrayList.emptyList(); /** * * @@ -340,8 +336,7 @@ private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { public Builder clear() { super.clear(); bitField0_ = 0; - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000001); + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); return this; } @@ -369,7 +364,6 @@ public com.google.spanner.admin.database.v1.GetDatabaseDdlResponse build() { public com.google.spanner.admin.database.v1.GetDatabaseDdlResponse buildPartial() { com.google.spanner.admin.database.v1.GetDatabaseDdlResponse result = new com.google.spanner.admin.database.v1.GetDatabaseDdlResponse(this); - buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -377,17 +371,12 @@ public com.google.spanner.admin.database.v1.GetDatabaseDdlResponse buildPartial( return result; } - private void buildPartialRepeatedFields( - com.google.spanner.admin.database.v1.GetDatabaseDdlResponse result) { - if (((bitField0_ & 0x00000001) != 0)) { - statements_ = statements_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.statements_ = statements_; - } - private void buildPartial0(com.google.spanner.admin.database.v1.GetDatabaseDdlResponse result) { int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + statements_.makeImmutable(); + result.statements_ = statements_; + } } @java.lang.Override @@ -439,7 +428,7 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.GetDatabaseDdlResp if (!other.statements_.isEmpty()) { if (statements_.isEmpty()) { statements_ = other.statements_; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ |= 0x00000001; } else { ensureStatementsIsMutable(); statements_.addAll(other.statements_); @@ -498,14 +487,14 @@ public Builder mergeFrom( private int bitField0_; - private com.google.protobuf.LazyStringList statements_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList statements_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureStatementsIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { + if (!statements_.isModifiable()) { statements_ = new com.google.protobuf.LazyStringArrayList(statements_); - bitField0_ |= 0x00000001; } + bitField0_ |= 0x00000001; } /** * @@ -520,7 +509,8 @@ private void ensureStatementsIsMutable() { * @return A list containing the statements. */ public com.google.protobuf.ProtocolStringList getStatementsList() { - return statements_.getUnmodifiableView(); + statements_.makeImmutable(); + return statements_; } /** * @@ -589,6 +579,7 @@ public Builder setStatements(int index, java.lang.String value) { } ensureStatementsIsMutable(); statements_.set(index, value); + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -611,6 +602,7 @@ public Builder addStatements(java.lang.String value) { } ensureStatementsIsMutable(); statements_.add(value); + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -630,6 +622,7 @@ public Builder addStatements(java.lang.String value) { public Builder addAllStatements(java.lang.Iterable values) { ensureStatementsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, statements_); + bitField0_ |= 0x00000001; onChanged(); return this; } @@ -646,8 +639,9 @@ public Builder addAllStatements(java.lang.Iterable values) { * @return This builder for chaining. */ public Builder clearStatements() { - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); + ; onChanged(); return this; } @@ -671,6 +665,7 @@ public Builder addStatementsBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureStatementsIsMutable(); statements_.add(value); + bitField0_ |= 0x00000001; onChanged(); return this; } 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 2a501d6d7cf..d6b52bfbbfa 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetDatabaseRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_GetDatabaseRequest_descriptor; diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/InstanceName.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/InstanceName.java index abe1ad6b3d8..afc77685648 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/InstanceName.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/InstanceName.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 5426f3dd857..a871c005dc6 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 @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ListBackupOperationsRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.BackupProto .internal_static_google_spanner_admin_database_v1_ListBackupOperationsRequest_descriptor; @@ -136,13 +131,16 @@ public com.google.protobuf.ByteString getParentBytes() { * *
        * An expression that filters the list of returned backup operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -154,10 +152,13 @@ public com.google.protobuf.ByteString getParentBytes() {
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
        *      `metadata.database:prod` - Returns operations where:
    @@ -218,13 +219,16 @@ public java.lang.String getFilter() {
        *
        * 
        * An expression that filters the list of returned backup operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -236,10 +240,13 @@ public java.lang.String getFilter() {
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
        *      `metadata.database:prod` - Returns operations where:
    @@ -917,13 +924,16 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *
          * 
          * An expression that filters the list of returned backup operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -935,10 +945,13 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
          *      `metadata.database:prod` - Returns operations where:
    @@ -998,13 +1011,16 @@ public java.lang.String getFilter() {
          *
          * 
          * An expression that filters the list of returned backup operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1016,10 +1032,13 @@ public java.lang.String getFilter() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
          *      `metadata.database:prod` - Returns operations where:
    @@ -1079,13 +1098,16 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *
          * 
          * An expression that filters the list of returned backup operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1097,10 +1119,13 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
          *      `metadata.database:prod` - Returns operations where:
    @@ -1159,13 +1184,16 @@ public Builder setFilter(java.lang.String value) {
          *
          * 
          * An expression that filters the list of returned backup operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1177,10 +1205,13 @@ public Builder setFilter(java.lang.String value) {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
          *      `metadata.database:prod` - Returns operations where:
    @@ -1235,13 +1266,16 @@ public Builder clearFilter() {
          *
          * 
          * An expression that filters the list of returned backup operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1253,10 +1287,13 @@ public Builder clearFilter() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
          *      `metadata.database:prod` - Returns operations where:
    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 4d862ccc097..4268655ed60 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
    @@ -59,13 +59,16 @@ public interface ListBackupOperationsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned backup operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -77,10 +80,13 @@ public interface ListBackupOperationsRequestOrBuilder
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
        *      `metadata.database:prod` - Returns operations where:
    @@ -130,13 +136,16 @@ public interface ListBackupOperationsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned backup operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -148,10 +157,13 @@ public interface ListBackupOperationsRequestOrBuilder
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata) AND` \
        *      `metadata.database:prod` - Returns operations where:
    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 a1a12ed3bf8..4afe5a1cc6a 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListBackupOperationsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_ListBackupOperationsResponse_descriptor;
    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 0140292e32b..69c1786eec9 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListBackupsRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_ListBackupsRequest_descriptor;
    @@ -135,12 +130,15 @@ public com.google.protobuf.ByteString getParentBytes() {
        *
        * 
        * An expression that filters the list of returned backups.
    +   *
        * A filter expression consists of a field name, a comparison operator, and a
        * value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +   *
        *   * `name`
        *   * `database`
        *   * `state`
    @@ -148,10 +146,13 @@ public com.google.protobuf.ByteString getParentBytes() {
        *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `size_bytes`
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `name:Howl` - The backup's name contains the string "howl".
        *   * `database:prod`
        *          - The database's name contains the string "prod".
    @@ -186,12 +187,15 @@ public java.lang.String getFilter() {
        *
        * 
        * An expression that filters the list of returned backups.
    +   *
        * A filter expression consists of a field name, a comparison operator, and a
        * value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +   *
        *   * `name`
        *   * `database`
        *   * `state`
    @@ -199,10 +203,13 @@ public java.lang.String getFilter() {
        *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `size_bytes`
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `name:Howl` - The backup's name contains the string "howl".
        *   * `database:prod`
        *          - The database's name contains the string "prod".
    @@ -849,12 +856,15 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *
          * 
          * An expression that filters the list of returned backups.
    +     *
          * A filter expression consists of a field name, a comparison operator, and a
          * value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +     *
          *   * `name`
          *   * `database`
          *   * `state`
    @@ -862,10 +872,13 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `size_bytes`
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `name:Howl` - The backup's name contains the string "howl".
          *   * `database:prod`
          *          - The database's name contains the string "prod".
    @@ -899,12 +912,15 @@ public java.lang.String getFilter() {
          *
          * 
          * An expression that filters the list of returned backups.
    +     *
          * A filter expression consists of a field name, a comparison operator, and a
          * value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +     *
          *   * `name`
          *   * `database`
          *   * `state`
    @@ -912,10 +928,13 @@ public java.lang.String getFilter() {
          *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `size_bytes`
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `name:Howl` - The backup's name contains the string "howl".
          *   * `database:prod`
          *          - The database's name contains the string "prod".
    @@ -949,12 +968,15 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *
          * 
          * An expression that filters the list of returned backups.
    +     *
          * A filter expression consists of a field name, a comparison operator, and a
          * value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +     *
          *   * `name`
          *   * `database`
          *   * `state`
    @@ -962,10 +984,13 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `size_bytes`
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `name:Howl` - The backup's name contains the string "howl".
          *   * `database:prod`
          *          - The database's name contains the string "prod".
    @@ -998,12 +1023,15 @@ public Builder setFilter(java.lang.String value) {
          *
          * 
          * An expression that filters the list of returned backups.
    +     *
          * A filter expression consists of a field name, a comparison operator, and a
          * value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +     *
          *   * `name`
          *   * `database`
          *   * `state`
    @@ -1011,10 +1039,13 @@ public Builder setFilter(java.lang.String value) {
          *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `size_bytes`
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `name:Howl` - The backup's name contains the string "howl".
          *   * `database:prod`
          *          - The database's name contains the string "prod".
    @@ -1043,12 +1074,15 @@ public Builder clearFilter() {
          *
          * 
          * An expression that filters the list of returned backups.
    +     *
          * A filter expression consists of a field name, a comparison operator, and a
          * value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +     *
          *   * `name`
          *   * `database`
          *   * `state`
    @@ -1056,10 +1090,13 @@ public Builder clearFilter() {
          *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
          *   * `size_bytes`
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic, but
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `name:Howl` - The backup's name contains the string "howl".
          *   * `database:prod`
          *          - The database's name contains the string "prod".
    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 4ea911b53ce..3c253ef05bf 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
    @@ -59,12 +59,15 @@ public interface ListBackupsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned backups.
    +   *
        * A filter expression consists of a field name, a comparison operator, and a
        * value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +   *
        *   * `name`
        *   * `database`
        *   * `state`
    @@ -72,10 +75,13 @@ public interface ListBackupsRequestOrBuilder
        *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `size_bytes`
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `name:Howl` - The backup's name contains the string "howl".
        *   * `database:prod`
        *          - The database's name contains the string "prod".
    @@ -99,12 +105,15 @@ public interface ListBackupsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned backups.
    +   *
        * A filter expression consists of a field name, a comparison operator, and a
        * value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Backup][google.spanner.admin.database.v1.Backup] are eligible for filtering:
    +   *
        *   * `name`
        *   * `database`
        *   * `state`
    @@ -112,10 +121,13 @@ public interface ListBackupsRequestOrBuilder
        *   * `expire_time`  (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `version_time` (and values are of the format YYYY-MM-DDTHH:MM:SSZ)
        *   * `size_bytes`
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic, but
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `name:Howl` - The backup's name contains the string "howl".
        *   * `database:prod`
        *          - The database's name contains the string "prod".
    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 e320ee4aba2..8c06fc77b79 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListBackupsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_ListBackupsResponse_descriptor;
    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 9bf375def87..4b0abaf18d2 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
    @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListDatabaseOperationsRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_descriptor;
    @@ -136,13 +131,16 @@ public com.google.protobuf.ByteString getParentBytes() {
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -154,10 +152,13 @@ public com.google.protobuf.ByteString getParentBytes() {
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
        *     `(metadata.source_type:BACKUP) AND` \
    @@ -194,13 +195,16 @@ public java.lang.String getFilter() {
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -212,10 +216,13 @@ public java.lang.String getFilter() {
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
        *     `(metadata.source_type:BACKUP) AND` \
    @@ -873,13 +880,16 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -891,10 +901,13 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
          *     `(metadata.source_type:BACKUP) AND` \
    @@ -930,13 +943,16 @@ public java.lang.String getFilter() {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -948,10 +964,13 @@ public java.lang.String getFilter() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
          *     `(metadata.source_type:BACKUP) AND` \
    @@ -987,13 +1006,16 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1005,10 +1027,13 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
          *     `(metadata.source_type:BACKUP) AND` \
    @@ -1043,13 +1068,16 @@ public Builder setFilter(java.lang.String value) {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1061,10 +1089,13 @@ public Builder setFilter(java.lang.String value) {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
          *     `(metadata.source_type:BACKUP) AND` \
    @@ -1095,13 +1126,16 @@ public Builder clearFilter() {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1113,10 +1147,13 @@ public Builder clearFilter() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
          *     `(metadata.source_type:BACKUP) AND` \
    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 e020307e57f..4d1f7f23c82 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
    @@ -59,13 +59,16 @@ public interface ListDatabaseOperationsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -77,10 +80,13 @@ public interface ListDatabaseOperationsRequestOrBuilder
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
        *     `(metadata.source_type:BACKUP) AND` \
    @@ -106,13 +112,16 @@ public interface ListDatabaseOperationsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -124,10 +133,13 @@ public interface ListDatabaseOperationsRequestOrBuilder
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=type.googleapis.com/google.spanner.admin.database.v1.RestoreDatabaseMetadata) AND` \
        *     `(metadata.source_type:BACKUP) AND` \
    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 763faff8830..110f68ff83d 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
    @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListDatabaseOperationsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_descriptor;
    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 4b7453090ce..e26e0089963 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListDatabaseRolesRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_descriptor;
    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 ac539aa5acf..442ed797d6f 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListDatabaseRolesResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_descriptor;
    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 eac171f8df9..c6c3c695459 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListDatabasesRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_ListDatabasesRequest_descriptor;
    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 dd3ce964137..6063e3bb8a3 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListDatabasesResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_ListDatabasesResponse_descriptor;
    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 dceff032df0..7a4a49e58e6 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new OperationProgress();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.CommonProto
             .internal_static_google_spanner_admin_database_v1_OperationProgress_descriptor;
    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 ce652f5318f..372757476db 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
    @@ -51,11 +51,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new OptimizeRestoredDatabaseMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_descriptor;
    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 54aa3135f07..19523910055 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new RestoreDatabaseEncryptionConfig();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_descriptor;
    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 0225666e1ff..49ca8fde967 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
    @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new RestoreDatabaseMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_descriptor;
    @@ -71,6 +66,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
       }
     
       private int sourceInfoCase_ = 0;
    +
    +  @SuppressWarnings("serial")
       private java.lang.Object sourceInfo_;
     
       public enum SourceInfoCase
    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 35ad6d76e9d..a6b1bc97877 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
    @@ -259,6 +259,5 @@ public interface RestoreDatabaseMetadataOrBuilder
        */
       com.google.protobuf.ByteString getOptimizeDatabaseOperationNameBytes();
     
    -  public com.google.spanner.admin.database.v1.RestoreDatabaseMetadata.SourceInfoCase
    -      getSourceInfoCase();
    +  com.google.spanner.admin.database.v1.RestoreDatabaseMetadata.SourceInfoCase getSourceInfoCase();
     }
    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 c89cf015544..96d866db827 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new RestoreDatabaseRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_descriptor;
    @@ -70,6 +65,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
       }
     
       private int sourceCase_ = 0;
    +
    +  @SuppressWarnings("serial")
       private java.lang.Object source_;
     
       public enum SourceCase
    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 f7c1c6e1f82..e2047038bd5 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
    @@ -188,5 +188,5 @@ public interface RestoreDatabaseRequestOrBuilder
       com.google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfigOrBuilder
           getEncryptionConfigOrBuilder();
     
    -  public com.google.spanner.admin.database.v1.RestoreDatabaseRequest.SourceCase getSourceCase();
    +  com.google.spanner.admin.database.v1.RestoreDatabaseRequest.SourceCase getSourceCase();
     }
    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 e76b3bcef86..02c67d53686 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new RestoreInfo();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_RestoreInfo_descriptor;
    @@ -68,6 +63,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
       }
     
       private int sourceInfoCase_ = 0;
    +
    +  @SuppressWarnings("serial")
       private java.lang.Object sourceInfo_;
     
       public enum SourceInfoCase
    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 f1b55bcc5f5..d02746a0ed6 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
    @@ -86,5 +86,5 @@ public interface RestoreInfoOrBuilder
        */
       com.google.spanner.admin.database.v1.BackupInfoOrBuilder getBackupInfoOrBuilder();
     
    -  public com.google.spanner.admin.database.v1.RestoreInfo.SourceInfoCase getSourceInfoCase();
    +  com.google.spanner.admin.database.v1.RestoreInfo.SourceInfoCase getSourceInfoCase();
     }
    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 0045ee30f35..4ac1d45264c 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
    @@ -67,6 +67,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r
           internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor;
       static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_fieldAccessorTable;
    +  static final com.google.protobuf.Descriptors.Descriptor
    +      internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor;
    +  static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    +      internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_fieldAccessorTable;
       static final com.google.protobuf.Descriptors.Descriptor
           internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor;
       static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
    @@ -144,249 +148,253 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
               + "ource_type\030\001 \001(\01623.google.spanner.admin."
               + "database.v1.RestoreSourceType\022C\n\013backup_"
               + "info\030\002 \001(\0132,.google.spanner.admin.databa"
    -          + "se.v1.BackupInfoH\000B\r\n\013source_info\"\312\006\n\010Da"
    -          + "tabase\022\021\n\004name\030\001 \001(\tB\003\340A\002\022D\n\005state\030\002 \001(\016"
    -          + "20.google.spanner.admin.database.v1.Data"
    -          + "base.StateB\003\340A\003\0224\n\013create_time\030\003 \001(\0132\032.g"
    -          + "oogle.protobuf.TimestampB\003\340A\003\022H\n\014restore"
    -          + "_info\030\004 \001(\0132-.google.spanner.admin.datab"
    -          + "ase.v1.RestoreInfoB\003\340A\003\022R\n\021encryption_co"
    -          + "nfig\030\005 \001(\01322.google.spanner.admin.databa"
    -          + "se.v1.EncryptionConfigB\003\340A\003\022N\n\017encryptio"
    -          + "n_info\030\010 \003(\01320.google.spanner.admin.data"
    -          + "base.v1.EncryptionInfoB\003\340A\003\022%\n\030version_r"
    -          + "etention_period\030\006 \001(\tB\003\340A\003\022>\n\025earliest_v"
    -          + "ersion_time\030\007 \001(\0132\032.google.protobuf.Time"
    -          + "stampB\003\340A\003\022\033\n\016default_leader\030\t \001(\tB\003\340A\003\022"
    -          + "P\n\020database_dialect\030\n \001(\01621.google.spann"
    -          + "er.admin.database.v1.DatabaseDialectB\003\340A"
    -          + "\003\022\036\n\026enable_drop_protection\030\013 \001(\010\022\030\n\013rec"
    -          + "onciling\030\014 \001(\010B\003\340A\003\"M\n\005State\022\025\n\021STATE_UN"
    -          + "SPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n\005READY\020\002\022\024\n\020"
    -          + "READY_OPTIMIZING\020\003:b\352A_\n\037spanner.googlea"
    -          + "pis.com/Database\022\202\323\344\223\002/\022-"
    -          + "/v1/{parent=projects/*/instances/*}/data"
    -          + "bases\332A\006parent\022\244\002\n\016CreateDatabase\0227.goog"
    -          + "le.spanner.admin.database.v1.CreateDatab"
    -          + "aseRequest\032\035.google.longrunning.Operatio"
    -          + "n\"\271\001\202\323\344\223\0022\"-/v1/{parent=projects/*/insta"
    -          + "nces/*}/databases:\001*\332A\027parent,create_sta"
    -          + "tement\312Ad\n)google.spanner.admin.database"
    -          + ".v1.Database\0227google.spanner.admin.datab"
    -          + "ase.v1.CreateDatabaseMetadata\022\255\001\n\013GetDat"
    -          + "abase\0224.google.spanner.admin.database.v1"
    -          + ".GetDatabaseRequest\032*.google.spanner.adm"
    -          + "in.database.v1.Database\"<\202\323\344\223\002/\022-/v1/{na"
    -          + "me=projects/*/instances/*/databases/*}\332A"
    -          + "\004name\022\357\001\n\016UpdateDatabase\0227.google.spanne"
    -          + "r.admin.database.v1.UpdateDatabaseReques"
    -          + "t\032\035.google.longrunning.Operation\"\204\001\202\323\344\223\002"
    -          + "B26/v1/{database.name=projects/*/instanc"
    -          + "es/*/databases/*}:\010database\332A\024database,u"
    -          + "pdate_mask\312A\"\n\010Database\022\026UpdateDatabaseM"
    -          + "etadata\022\235\002\n\021UpdateDatabaseDdl\022:.google.s"
    -          + "panner.admin.database.v1.UpdateDatabaseD"
    -          + "dlRequest\032\035.google.longrunning.Operation"
    -          + "\"\254\001\202\323\344\223\002:25/v1/{database=projects/*/inst"
    -          + "ances/*/databases/*}/ddl:\001*\332A\023database,s"
    -          + "tatements\312AS\n\025google.protobuf.Empty\022:goo"
    -          + "gle.spanner.admin.database.v1.UpdateData"
    -          + "baseDdlMetadata\022\243\001\n\014DropDatabase\0225.googl"
    -          + "e.spanner.admin.database.v1.DropDatabase"
    -          + "Request\032\026.google.protobuf.Empty\"D\202\323\344\223\0023*"
    -          + "1/v1/{database=projects/*/instances/*/da"
    -          + "tabases/*}\332A\010database\022\315\001\n\016GetDatabaseDdl"
    -          + "\0227.google.spanner.admin.database.v1.GetD"
    -          + "atabaseDdlRequest\0328.google.spanner.admin"
    -          + ".database.v1.GetDatabaseDdlResponse\"H\202\323\344"
    -          + "\223\0027\0225/v1/{database=projects/*/instances/"
    -          + "*/databases/*}/ddl\332A\010database\022\353\001\n\014SetIam"
    -          + "Policy\022\".google.iam.v1.SetIamPolicyReque"
    -          + "st\032\025.google.iam.v1.Policy\"\237\001\202\323\344\223\002\206\001\">/v1"
    -          + "/{resource=projects/*/instances/*/databa"
    -          + "ses/*}:setIamPolicy:\001*ZA\"/v1/{"
    -          + "resource=projects/*/instances/*/database"
    -          + "s/*}:getIamPolicy:\001*ZA\".google.spanner.admin.databa"
    -          + "se.v1.ListBackupOperationsResponse\"E\202\323\344\223"
    -          + "\0026\0224/v1/{parent=projects/*/instances/*}/"
    -          + "backupOperations\332A\006parent\022\334\001\n\021ListDataba"
    -          + "seRoles\022:.google.spanner.admin.database."
    -          + "v1.ListDatabaseRolesRequest\032;.google.spa"
    -          + "nner.admin.database.v1.ListDatabaseRoles"
    -          + "Response\"N\202\323\344\223\002?\022=/v1/{parent=projects/*"
    -          + "/instances/*/databases/*}/databaseRoles\332"
    -          + "A\006parent\032x\312A\026spanner.googleapis.com\322A\\ht"
    -          + "tps://www.googleapis.com/auth/cloud-plat"
    -          + "form,https://www.googleapis.com/auth/spa"
    -          + "nner.adminB\330\002\n$com.google.spanner.admin."
    -          + "database.v1B\031SpannerDatabaseAdminProtoP\001"
    -          + "ZFcloud.google.com/go/spanner/admin/data"
    -          + "base/apiv1/databasepb;databasepb\252\002&Googl"
    -          + "e.Cloud.Spanner.Admin.Database.V1\312\002&Goog"
    -          + "le\\Cloud\\Spanner\\Admin\\Database\\V1\352\002+Goo"
    -          + "gle::Cloud::Spanner::Admin::Database::V1"
    -          + "\352AJ\n\037spanner.googleapis.com/Instance\022\'pr"
    -          + "ojects/{project}/instances/{instance}b\006p"
    -          + "roto3"
    +          + "is.com/Database\022E\n\010progress\030\002 \001(\01323.goog"
    +          + "le.spanner.admin.database.v1.OperationPr"
    +          + "ogress\"\237\001\n\014DatabaseRole\022\022\n\004name\030\001 \001(\tB\004\342"
    +          + "A\001\002:{\352Ax\n#spanner.googleapis.com/Databas"
    +          + "eRole\022Qprojects/{project}/instances/{ins"
    +          + "tance}/databases/{database}/databaseRole"
    +          + "s/{role}\"{\n\030ListDatabaseRolesRequest\0228\n\006"
    +          + "parent\030\001 \001(\tB(\342A\001\002\372A!\n\037spanner.googleapi"
    +          + "s.com/Database\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npag"
    +          + "e_token\030\003 \001(\t\"|\n\031ListDatabaseRolesRespon"
    +          + "se\022F\n\016database_roles\030\001 \003(\0132..google.span"
    +          + "ner.admin.database.v1.DatabaseRole\022\027\n\017ne"
    +          + "xt_page_token\030\002 \001(\t*5\n\021RestoreSourceType"
    +          + "\022\024\n\020TYPE_UNSPECIFIED\020\000\022\n\n\006BACKUP\020\0012\356%\n\rD"
    +          + "atabaseAdmin\022\300\001\n\rListDatabases\0226.google."
    +          + "spanner.admin.database.v1.ListDatabasesR"
    +          + "equest\0327.google.spanner.admin.database.v"
    +          + "1.ListDatabasesResponse\">\332A\006parent\202\323\344\223\002/"
    +          + "\022-/v1/{parent=projects/*/instances/*}/da"
    +          + "tabases\022\244\002\n\016CreateDatabase\0227.google.span"
    +          + "ner.admin.database.v1.CreateDatabaseRequ"
    +          + "est\032\035.google.longrunning.Operation\"\271\001\312Ad"
    +          + "\n)google.spanner.admin.database.v1.Datab"
    +          + "ase\0227google.spanner.admin.database.v1.Cr"
    +          + "eateDatabaseMetadata\332A\027parent,create_sta"
    +          + "tement\202\323\344\223\0022\"-/v1/{parent=projects/*/ins"
    +          + "tances/*}/databases:\001*\022\255\001\n\013GetDatabase\0224"
    +          + ".google.spanner.admin.database.v1.GetDat"
    +          + "abaseRequest\032*.google.spanner.admin.data"
    +          + "base.v1.Database\"<\332A\004name\202\323\344\223\002/\022-/v1/{na"
    +          + "me=projects/*/instances/*/databases/*}\022\357"
    +          + "\001\n\016UpdateDatabase\0227.google.spanner.admin"
    +          + ".database.v1.UpdateDatabaseRequest\032\035.goo"
    +          + "gle.longrunning.Operation\"\204\001\312A\"\n\010Databas"
    +          + "e\022\026UpdateDatabaseMetadata\332A\024database,upd"
    +          + "ate_mask\202\323\344\223\002B26/v1/{database.name=proje"
    +          + "cts/*/instances/*/databases/*}:\010database"
    +          + "\022\235\002\n\021UpdateDatabaseDdl\022:.google.spanner."
    +          + "admin.database.v1.UpdateDatabaseDdlReque"
    +          + "st\032\035.google.longrunning.Operation\"\254\001\312AS\n"
    +          + "\025google.protobuf.Empty\022:google.spanner.a"
    +          + "dmin.database.v1.UpdateDatabaseDdlMetada"
    +          + "ta\332A\023database,statements\202\323\344\223\002:25/v1/{dat"
    +          + "abase=projects/*/instances/*/databases/*"
    +          + "}/ddl:\001*\022\243\001\n\014DropDatabase\0225.google.spann"
    +          + "er.admin.database.v1.DropDatabaseRequest"
    +          + "\032\026.google.protobuf.Empty\"D\332A\010database\202\323\344"
    +          + "\223\0023*1/v1/{database=projects/*/instances/"
    +          + "*/databases/*}\022\315\001\n\016GetDatabaseDdl\0227.goog"
    +          + "le.spanner.admin.database.v1.GetDatabase"
    +          + "DdlRequest\0328.google.spanner.admin.databa"
    +          + "se.v1.GetDatabaseDdlResponse\"H\332A\010databas"
    +          + "e\202\323\344\223\0027\0225/v1/{database=projects/*/instan"
    +          + "ces/*/databases/*}/ddl\022\353\001\n\014SetIamPolicy\022"
    +          + "\".google.iam.v1.SetIamPolicyRequest\032\025.go"
    +          + "ogle.iam.v1.Policy\"\237\001\332A\017resource,policy\202"
    +          + "\323\344\223\002\206\001\">/v1/{resource=projects/*/instanc"
    +          + "es/*/databases/*}:setIamPolicy:\001*ZA\"/"
    +          + "v1/{resource=projects/*/instances/*/data"
    +          + "bases/*}:getIamPolicy:\001*ZA\".google.spanner.admin.database.v1.L"
    +          + "istBackupOperationsResponse\"E\332A\006parent\202\323"
    +          + "\344\223\0026\0224/v1/{parent=projects/*/instances/*"
    +          + "}/backupOperations\022\334\001\n\021ListDatabaseRoles"
    +          + "\022:.google.spanner.admin.database.v1.List"
    +          + "DatabaseRolesRequest\032;.google.spanner.ad"
    +          + "min.database.v1.ListDatabaseRolesRespons"
    +          + "e\"N\332A\006parent\202\323\344\223\002?\022=/v1/{parent=projects"
    +          + "/*/instances/*/databases/*}/databaseRole"
    +          + "s\032x\312A\026spanner.googleapis.com\322A\\https://w"
    +          + "ww.googleapis.com/auth/cloud-platform,ht"
    +          + "tps://www.googleapis.com/auth/spanner.ad"
    +          + "minB\330\002\n$com.google.spanner.admin.databas"
    +          + "e.v1B\031SpannerDatabaseAdminProtoP\001ZFcloud"
    +          + ".google.com/go/spanner/admin/database/ap"
    +          + "iv1/databasepb;databasepb\252\002&Google.Cloud"
    +          + ".Spanner.Admin.Database.V1\312\002&Google\\Clou"
    +          + "d\\Spanner\\Admin\\Database\\V1\352\002+Google::Cl"
    +          + "oud::Spanner::Admin::Database::V1\352AJ\n\037sp"
    +          + "anner.googleapis.com/Instance\022\'projects/"
    +          + "{project}/instances/{instance}b\006proto3"
         };
         descriptor =
             com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
    @@ -496,16 +504,24 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                 new java.lang.String[] {
                   "Database", "Statements", "OperationId",
                 });
    -    internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor =
    +    internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor =
             getDescriptor().getMessageTypes().get(10);
    +    internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_fieldAccessorTable =
    +        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
    +            internal_static_google_spanner_admin_database_v1_DdlStatementActionInfo_descriptor,
    +            new java.lang.String[] {
    +              "Action", "EntityType", "EntityNames",
    +            });
    +    internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor =
    +        getDescriptor().getMessageTypes().get(11);
         internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor,
                 new java.lang.String[] {
    -              "Database", "Statements", "CommitTimestamps", "Throttled", "Progress",
    +              "Database", "Statements", "CommitTimestamps", "Throttled", "Progress", "Actions",
                 });
         internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_descriptor =
    -        getDescriptor().getMessageTypes().get(11);
    +        getDescriptor().getMessageTypes().get(12);
         internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_descriptor,
    @@ -513,7 +529,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Database",
                 });
         internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_descriptor =
    -        getDescriptor().getMessageTypes().get(12);
    +        getDescriptor().getMessageTypes().get(13);
         internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_descriptor,
    @@ -521,7 +537,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Database",
                 });
         internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_descriptor =
    -        getDescriptor().getMessageTypes().get(13);
    +        getDescriptor().getMessageTypes().get(14);
         internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_descriptor,
    @@ -529,7 +545,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Statements",
                 });
         internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_descriptor =
    -        getDescriptor().getMessageTypes().get(14);
    +        getDescriptor().getMessageTypes().get(15);
         internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_descriptor,
    @@ -537,7 +553,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Parent", "Filter", "PageSize", "PageToken",
                 });
         internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_descriptor =
    -        getDescriptor().getMessageTypes().get(15);
    +        getDescriptor().getMessageTypes().get(16);
         internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_descriptor,
    @@ -545,7 +561,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Operations", "NextPageToken",
                 });
         internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_descriptor =
    -        getDescriptor().getMessageTypes().get(16);
    +        getDescriptor().getMessageTypes().get(17);
         internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_descriptor,
    @@ -553,7 +569,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Parent", "DatabaseId", "Backup", "EncryptionConfig", "Source",
                 });
         internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_descriptor =
    -        getDescriptor().getMessageTypes().get(17);
    +        getDescriptor().getMessageTypes().get(18);
         internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_descriptor,
    @@ -561,7 +577,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "EncryptionType", "KmsKeyName",
                 });
         internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_descriptor =
    -        getDescriptor().getMessageTypes().get(18);
    +        getDescriptor().getMessageTypes().get(19);
         internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_descriptor,
    @@ -575,7 +591,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "SourceInfo",
                 });
         internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_descriptor =
    -        getDescriptor().getMessageTypes().get(19);
    +        getDescriptor().getMessageTypes().get(20);
         internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_descriptor,
    @@ -583,7 +599,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Name", "Progress",
                 });
         internal_static_google_spanner_admin_database_v1_DatabaseRole_descriptor =
    -        getDescriptor().getMessageTypes().get(20);
    +        getDescriptor().getMessageTypes().get(21);
         internal_static_google_spanner_admin_database_v1_DatabaseRole_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_DatabaseRole_descriptor,
    @@ -591,7 +607,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Name",
                 });
         internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_descriptor =
    -        getDescriptor().getMessageTypes().get(21);
    +        getDescriptor().getMessageTypes().get(22);
         internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_descriptor,
    @@ -599,7 +615,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
                   "Parent", "PageSize", "PageToken",
                 });
         internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_descriptor =
    -        getDescriptor().getMessageTypes().get(22);
    +        getDescriptor().getMessageTypes().get(23);
         internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_fieldAccessorTable =
             new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                 internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_descriptor,
    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 ccd25df5763..9da77849b35 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
    @@ -45,11 +45,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new UpdateBackupRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.BackupProto
             .internal_static_google_spanner_admin_database_v1_UpdateBackupRequest_descriptor;
    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 d4625807d12..0e9f3b0a5d3 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
    @@ -40,9 +40,10 @@ private UpdateDatabaseDdlMetadata(com.google.protobuf.GeneratedMessageV3.Builder
     
       private UpdateDatabaseDdlMetadata() {
         database_ = "";
    -    statements_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +    statements_ = com.google.protobuf.LazyStringArrayList.emptyList();
         commitTimestamps_ = java.util.Collections.emptyList();
         progress_ = java.util.Collections.emptyList();
    +    actions_ = java.util.Collections.emptyList();
       }
     
       @java.lang.Override
    @@ -51,11 +52,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new UpdateDatabaseDdlMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto
             .internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor;
    @@ -125,7 +121,8 @@ public com.google.protobuf.ByteString getDatabaseBytes() {
       public static final int STATEMENTS_FIELD_NUMBER = 2;
     
       @SuppressWarnings("serial")
    -  private com.google.protobuf.LazyStringList statements_;
    +  private com.google.protobuf.LazyStringArrayList statements_ =
    +      com.google.protobuf.LazyStringArrayList.emptyList();
       /**
        *
        *
    @@ -276,7 +273,7 @@ public com.google.protobuf.TimestampOrBuilder getCommitTimestampsOrBuilder(int i
        *
        *
        * 
    -   * Output only. When true, indicates that the operation is throttled e.g
    +   * Output only. When true, indicates that the operation is throttled e.g.
        * due to resource constraints. When resources become available the operation
        * will resume and this field will be false again.
        * 
    @@ -299,13 +296,12 @@ public boolean getThrottled() { * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -319,13 +315,12 @@ public java.util.List ge * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -340,13 +335,12 @@ public java.util.List ge * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -360,13 +354,12 @@ public int getProgressCount() { * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -380,13 +373,12 @@ public com.google.spanner.admin.database.v1.OperationProgress getProgress(int in * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -397,6 +389,85 @@ public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgre return progress_.get(index); } + public static final int ACTIONS_FIELD_NUMBER = 6; + + @SuppressWarnings("serial") + private java.util.List actions_; + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + @java.lang.Override + public java.util.List + getActionsList() { + return actions_; + } + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder> + getActionsOrBuilderList() { + return actions_; + } + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + @java.lang.Override + public int getActionsCount() { + return actions_.size(); + } + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.DdlStatementActionInfo getActions(int index) { + return actions_.get(index); + } + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder getActionsOrBuilder( + int index) { + return actions_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -426,6 +497,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < progress_.size(); i++) { output.writeMessage(5, progress_.get(i)); } + for (int i = 0; i < actions_.size(); i++) { + output.writeMessage(6, actions_.get(i)); + } getUnknownFields().writeTo(output); } @@ -455,6 +529,9 @@ public int getSerializedSize() { for (int i = 0; i < progress_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, progress_.get(i)); } + for (int i = 0; i < actions_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, actions_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -476,6 +553,7 @@ public boolean equals(final java.lang.Object obj) { if (!getCommitTimestampsList().equals(other.getCommitTimestampsList())) return false; if (getThrottled() != other.getThrottled()) return false; if (!getProgressList().equals(other.getProgressList())) return false; + if (!getActionsList().equals(other.getActionsList())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -503,6 +581,10 @@ public int hashCode() { hash = (37 * hash) + PROGRESS_FIELD_NUMBER; hash = (53 * hash) + getProgressList().hashCode(); } + if (getActionsCount() > 0) { + hash = (37 * hash) + ACTIONS_FIELD_NUMBER; + hash = (53 * hash) + getActionsList().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -645,8 +727,7 @@ public Builder clear() { super.clear(); bitField0_ = 0; database_ = ""; - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); if (commitTimestampsBuilder_ == null) { commitTimestamps_ = java.util.Collections.emptyList(); } else { @@ -662,6 +743,13 @@ public Builder clear() { progressBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000010); + if (actionsBuilder_ == null) { + actions_ = java.util.Collections.emptyList(); + } else { + actions_ = null; + actionsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -700,11 +788,6 @@ public com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata buildParti private void buildPartialRepeatedFields( com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata result) { - if (((bitField0_ & 0x00000002) != 0)) { - statements_ = statements_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.statements_ = statements_; if (commitTimestampsBuilder_ == null) { if (((bitField0_ & 0x00000004) != 0)) { commitTimestamps_ = java.util.Collections.unmodifiableList(commitTimestamps_); @@ -723,6 +806,15 @@ private void buildPartialRepeatedFields( } else { result.progress_ = progressBuilder_.build(); } + if (actionsBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0)) { + actions_ = java.util.Collections.unmodifiableList(actions_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.actions_ = actions_; + } else { + result.actions_ = actionsBuilder_.build(); + } } private void buildPartial0( @@ -731,6 +823,10 @@ private void buildPartial0( if (((from_bitField0_ & 0x00000001) != 0)) { result.database_ = database_; } + if (((from_bitField0_ & 0x00000002) != 0)) { + statements_.makeImmutable(); + result.statements_ = statements_; + } if (((from_bitField0_ & 0x00000008) != 0)) { result.throttled_ = throttled_; } @@ -791,7 +887,7 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.UpdateDatabaseDdlM if (!other.statements_.isEmpty()) { if (statements_.isEmpty()) { statements_ = other.statements_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ |= 0x00000002; } else { ensureStatementsIsMutable(); statements_.addAll(other.statements_); @@ -855,6 +951,33 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.UpdateDatabaseDdlM } } } + if (actionsBuilder_ == null) { + if (!other.actions_.isEmpty()) { + if (actions_.isEmpty()) { + actions_ = other.actions_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureActionsIsMutable(); + actions_.addAll(other.actions_); + } + onChanged(); + } + } else { + if (!other.actions_.isEmpty()) { + if (actionsBuilder_.isEmpty()) { + actionsBuilder_.dispose(); + actionsBuilder_ = null; + actions_ = other.actions_; + bitField0_ = (bitField0_ & ~0x00000020); + actionsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getActionsFieldBuilder() + : null; + } else { + actionsBuilder_.addAllMessages(other.actions_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -926,6 +1049,20 @@ public Builder mergeFrom( } break; } // case 42 + case 50: + { + com.google.spanner.admin.database.v1.DdlStatementActionInfo m = + input.readMessage( + com.google.spanner.admin.database.v1.DdlStatementActionInfo.parser(), + extensionRegistry); + if (actionsBuilder_ == null) { + ensureActionsIsMutable(); + actions_.add(m); + } else { + actionsBuilder_.addMessage(m); + } + break; + } // case 50 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1051,14 +1188,14 @@ public Builder setDatabaseBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.protobuf.LazyStringList statements_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList statements_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureStatementsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!statements_.isModifiable()) { statements_ = new com.google.protobuf.LazyStringArrayList(statements_); - bitField0_ |= 0x00000002; } + bitField0_ |= 0x00000002; } /** * @@ -1073,7 +1210,8 @@ private void ensureStatementsIsMutable() { * @return A list containing the statements. */ public com.google.protobuf.ProtocolStringList getStatementsList() { - return statements_.getUnmodifiableView(); + statements_.makeImmutable(); + return statements_; } /** * @@ -1142,6 +1280,7 @@ public Builder setStatements(int index, java.lang.String value) { } ensureStatementsIsMutable(); statements_.set(index, value); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1164,6 +1303,7 @@ public Builder addStatements(java.lang.String value) { } ensureStatementsIsMutable(); statements_.add(value); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1183,6 +1323,7 @@ public Builder addStatements(java.lang.String value) { public Builder addAllStatements(java.lang.Iterable values) { ensureStatementsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, statements_); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1199,8 +1340,9 @@ public Builder addAllStatements(java.lang.Iterable values) { * @return This builder for chaining. */ public Builder clearStatements() { - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000002); + ; onChanged(); return this; } @@ -1224,6 +1366,7 @@ public Builder addStatementsBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureStatementsIsMutable(); statements_.add(value); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1621,7 +1764,7 @@ public java.util.List getCommitTimestamps * * *
    -     * Output only. When true, indicates that the operation is throttled e.g
    +     * Output only. When true, indicates that the operation is throttled e.g.
          * due to resource constraints. When resources become available the operation
          * will resume and this field will be false again.
          * 
    @@ -1638,7 +1781,7 @@ public boolean getThrottled() { * * *
    -     * Output only. When true, indicates that the operation is throttled e.g
    +     * Output only. When true, indicates that the operation is throttled e.g.
          * due to resource constraints. When resources become available the operation
          * will resume and this field will be false again.
          * 
    @@ -1659,7 +1802,7 @@ public Builder setThrottled(boolean value) { * * *
    -     * Output only. When true, indicates that the operation is throttled e.g
    +     * Output only. When true, indicates that the operation is throttled e.g.
          * due to resource constraints. When resources become available the operation
          * will resume and this field will be false again.
          * 
    @@ -1698,13 +1841,12 @@ private void ensureProgressIsMutable() { * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1722,13 +1864,12 @@ private void ensureProgressIsMutable() { * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1745,13 +1886,12 @@ public int getProgressCount() { * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1768,13 +1908,12 @@ public com.google.spanner.admin.database.v1.OperationProgress getProgress(int in * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1798,13 +1937,12 @@ public Builder setProgress( * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1825,13 +1963,12 @@ public Builder setProgress( * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1854,13 +1991,12 @@ public Builder addProgress(com.google.spanner.admin.database.v1.OperationProgres * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1884,13 +2020,12 @@ public Builder addProgress( * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1911,13 +2046,12 @@ public Builder addProgress( * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1938,13 +2072,12 @@ public Builder addProgress( * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1966,13 +2099,12 @@ public Builder addAllProgress( * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -1992,13 +2124,12 @@ public Builder clearProgress() { * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2018,13 +2149,12 @@ public Builder removeProgress(int index) { * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2038,13 +2168,12 @@ public com.google.spanner.admin.database.v1.OperationProgress.Builder getProgres * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2062,13 +2191,12 @@ public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgre * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2086,13 +2214,12 @@ public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgre * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2106,13 +2233,12 @@ public com.google.spanner.admin.database.v1.OperationProgress.Builder addProgres * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2128,13 +2254,12 @@ public com.google.spanner.admin.database.v1.OperationProgress.Builder addProgres * *
          * The progress of the
    -     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -     * Currently, only index creation statements will have a continuously
    -     * updating progress.
    -     * For non-index creation statements, `progress[i]` will have start time
    -     * and end time populated with commit timestamp of operation,
    -     * as well as a progress of 100% once the operation has completed.
    -     * `progress[i]` is the operation progress for `statements[i]`.
    +     * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +     * operations. All DDL statements will have continuously updating progress,
    +     * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +     * `progress[i]` will have start time and end time populated with commit
    +     * timestamp of operation, as well as a progress of 100% once the operation
    +     * has completed.
          * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -2161,6 +2286,389 @@ public com.google.spanner.admin.database.v1.OperationProgress.Builder addProgres return progressBuilder_; } + private java.util.List actions_ = + java.util.Collections.emptyList(); + + private void ensureActionsIsMutable() { + if (!((bitField0_ & 0x00000020) != 0)) { + actions_ = + new java.util.ArrayList( + actions_); + bitField0_ |= 0x00000020; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.admin.database.v1.DdlStatementActionInfo, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder, + com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder> + actionsBuilder_; + + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public java.util.List + getActionsList() { + if (actionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(actions_); + } else { + return actionsBuilder_.getMessageList(); + } + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public int getActionsCount() { + if (actionsBuilder_ == null) { + return actions_.size(); + } else { + return actionsBuilder_.getCount(); + } + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public com.google.spanner.admin.database.v1.DdlStatementActionInfo getActions(int index) { + if (actionsBuilder_ == null) { + return actions_.get(index); + } else { + return actionsBuilder_.getMessage(index); + } + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder setActions( + int index, com.google.spanner.admin.database.v1.DdlStatementActionInfo value) { + if (actionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureActionsIsMutable(); + actions_.set(index, value); + onChanged(); + } else { + actionsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder setActions( + int index, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder builderForValue) { + if (actionsBuilder_ == null) { + ensureActionsIsMutable(); + actions_.set(index, builderForValue.build()); + onChanged(); + } else { + actionsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder addActions(com.google.spanner.admin.database.v1.DdlStatementActionInfo value) { + if (actionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureActionsIsMutable(); + actions_.add(value); + onChanged(); + } else { + actionsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder addActions( + int index, com.google.spanner.admin.database.v1.DdlStatementActionInfo value) { + if (actionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureActionsIsMutable(); + actions_.add(index, value); + onChanged(); + } else { + actionsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder addActions( + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder builderForValue) { + if (actionsBuilder_ == null) { + ensureActionsIsMutable(); + actions_.add(builderForValue.build()); + onChanged(); + } else { + actionsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder addActions( + int index, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder builderForValue) { + if (actionsBuilder_ == null) { + ensureActionsIsMutable(); + actions_.add(index, builderForValue.build()); + onChanged(); + } else { + actionsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder addAllActions( + java.lang.Iterable + values) { + if (actionsBuilder_ == null) { + ensureActionsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, actions_); + onChanged(); + } else { + actionsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder clearActions() { + if (actionsBuilder_ == null) { + actions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + actionsBuilder_.clear(); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public Builder removeActions(int index) { + if (actionsBuilder_ == null) { + ensureActionsIsMutable(); + actions_.remove(index); + onChanged(); + } else { + actionsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder getActionsBuilder( + int index) { + return getActionsFieldBuilder().getBuilder(index); + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder getActionsOrBuilder( + int index) { + if (actionsBuilder_ == null) { + return actions_.get(index); + } else { + return actionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public java.util.List< + ? extends com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder> + getActionsOrBuilderList() { + if (actionsBuilder_ != null) { + return actionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(actions_); + } + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder addActionsBuilder() { + return getActionsFieldBuilder() + .addBuilder( + com.google.spanner.admin.database.v1.DdlStatementActionInfo.getDefaultInstance()); + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder addActionsBuilder( + int index) { + return getActionsFieldBuilder() + .addBuilder( + index, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.getDefaultInstance()); + } + /** + * + * + *
    +     * The brief action info for the DDL statements.
    +     * `actions[i]` is the brief info for `statements[i]`.
    +     * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + public java.util.List + getActionsBuilderList() { + return getActionsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.admin.database.v1.DdlStatementActionInfo, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder, + com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder> + getActionsFieldBuilder() { + if (actionsBuilder_ == null) { + actionsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.admin.database.v1.DdlStatementActionInfo, + com.google.spanner.admin.database.v1.DdlStatementActionInfo.Builder, + com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder>( + actions_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean()); + actions_ = null; + } + return actionsBuilder_; + } + @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/UpdateDatabaseDdlMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseDdlMetadataOrBuilder.java index 0557d7314d1..5b435a6844c 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 @@ -169,7 +169,7 @@ public interface UpdateDatabaseDdlMetadataOrBuilder * * *
    -   * Output only. When true, indicates that the operation is throttled e.g
    +   * Output only. When true, indicates that the operation is throttled e.g.
        * due to resource constraints. When resources become available the operation
        * will resume and this field will be false again.
        * 
    @@ -185,13 +185,12 @@ public interface UpdateDatabaseDdlMetadataOrBuilder * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -202,13 +201,12 @@ public interface UpdateDatabaseDdlMetadataOrBuilder * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -219,13 +217,12 @@ public interface UpdateDatabaseDdlMetadataOrBuilder * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -236,13 +233,12 @@ public interface UpdateDatabaseDdlMetadataOrBuilder * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; @@ -254,16 +250,73 @@ public interface UpdateDatabaseDdlMetadataOrBuilder * *
        * The progress of the
    -   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations.
    -   * Currently, only index creation statements will have a continuously
    -   * updating progress.
    -   * For non-index creation statements, `progress[i]` will have start time
    -   * and end time populated with commit timestamp of operation,
    -   * as well as a progress of 100% once the operation has completed.
    -   * `progress[i]` is the operation progress for `statements[i]`.
    +   * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]
    +   * operations. All DDL statements will have continuously updating progress,
    +   * and `progress[i]` is the operation progress for `statements[i]`. Also,
    +   * `progress[i]` will have start time and end time populated with commit
    +   * timestamp of operation, as well as a progress of 100% once the operation
    +   * has completed.
        * 
    * * repeated .google.spanner.admin.database.v1.OperationProgress progress = 5; */ com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder(int index); + + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + java.util.List getActionsList(); + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + com.google.spanner.admin.database.v1.DdlStatementActionInfo getActions(int index); + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + int getActionsCount(); + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + java.util.List + getActionsOrBuilderList(); + /** + * + * + *
    +   * The brief action info for the DDL statements.
    +   * `actions[i]` is the brief info for `statements[i]`.
    +   * 
    + * + * repeated .google.spanner.admin.database.v1.DdlStatementActionInfo actions = 6; + */ + com.google.spanner.admin.database.v1.DdlStatementActionInfoOrBuilder getActionsOrBuilder( + int index); } 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 a2c59a7b9b6..aa78a8f7a15 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 @@ -32,6 +32,7 @@ * there is some data-related problem like a `NULL` value in a column to * which `NOT NULL` would be added). If a statement fails, all * subsequent statements in the batch are automatically cancelled. + * * Each batch of statements is assigned a name which can be used with * the [Operations][google.longrunning.Operations] API to monitor * progress. See the @@ -53,7 +54,7 @@ private UpdateDatabaseDdlRequest(com.google.protobuf.GeneratedMessageV3.Builder< private UpdateDatabaseDdlRequest() { database_ = ""; - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); operationId_ = ""; } @@ -63,11 +64,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new UpdateDatabaseDdlRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor; @@ -141,7 +137,8 @@ public com.google.protobuf.ByteString getDatabaseBytes() { public static final int STATEMENTS_FIELD_NUMBER = 2; @SuppressWarnings("serial") - private com.google.protobuf.LazyStringList statements_; + private com.google.protobuf.LazyStringArrayList statements_ = + com.google.protobuf.LazyStringArrayList.emptyList(); /** * * @@ -213,6 +210,7 @@ public com.google.protobuf.ByteString getStatementsBytes(int index) { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -220,6 +218,7 @@ public com.google.protobuf.ByteString getStatementsBytes(int index) { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -252,6 +251,7 @@ public java.lang.String getOperationId() { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -259,6 +259,7 @@ public java.lang.String getOperationId() { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -483,6 +484,7 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * there is some data-related problem like a `NULL` value in a column to * which `NOT NULL` would be added). If a statement fails, all * subsequent statements in the batch are automatically cancelled. + * * Each batch of statements is assigned a name which can be used with * the [Operations][google.longrunning.Operations] API to monitor * progress. See the @@ -523,8 +525,7 @@ public Builder clear() { super.clear(); bitField0_ = 0; database_ = ""; - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); operationId_ = ""; return this; } @@ -554,7 +555,6 @@ public com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest build() { public com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest buildPartial() { com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest result = new com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest(this); - buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -562,21 +562,16 @@ public com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest buildPartia return result; } - private void buildPartialRepeatedFields( - com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest result) { - if (((bitField0_ & 0x00000002) != 0)) { - statements_ = statements_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.statements_ = statements_; - } - private void buildPartial0( com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { result.database_ = database_; } + if (((from_bitField0_ & 0x00000002) != 0)) { + statements_.makeImmutable(); + result.statements_ = statements_; + } if (((from_bitField0_ & 0x00000004) != 0)) { result.operationId_ = operationId_; } @@ -637,7 +632,7 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.UpdateDatabaseDdlR if (!other.statements_.isEmpty()) { if (statements_.isEmpty()) { statements_ = other.statements_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ |= 0x00000002; } else { ensureStatementsIsMutable(); statements_.addAll(other.statements_); @@ -829,14 +824,14 @@ public Builder setDatabaseBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.protobuf.LazyStringList statements_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList statements_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureStatementsIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { + if (!statements_.isModifiable()) { statements_ = new com.google.protobuf.LazyStringArrayList(statements_); - bitField0_ |= 0x00000002; } + bitField0_ |= 0x00000002; } /** * @@ -850,7 +845,8 @@ private void ensureStatementsIsMutable() { * @return A list containing the statements. */ public com.google.protobuf.ProtocolStringList getStatementsList() { - return statements_.getUnmodifiableView(); + statements_.makeImmutable(); + return statements_; } /** * @@ -915,6 +911,7 @@ public Builder setStatements(int index, java.lang.String value) { } ensureStatementsIsMutable(); statements_.set(index, value); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -936,6 +933,7 @@ public Builder addStatements(java.lang.String value) { } ensureStatementsIsMutable(); statements_.add(value); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -954,6 +952,7 @@ public Builder addStatements(java.lang.String value) { public Builder addAllStatements(java.lang.Iterable values) { ensureStatementsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, statements_); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -969,8 +968,9 @@ public Builder addAllStatements(java.lang.Iterable values) { * @return This builder for chaining. */ public Builder clearStatements() { - statements_ = com.google.protobuf.LazyStringArrayList.EMPTY; + statements_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000002); + ; onChanged(); return this; } @@ -993,6 +993,7 @@ public Builder addStatementsBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureStatementsIsMutable(); statements_.add(value); + bitField0_ |= 0x00000002; onChanged(); return this; } @@ -1006,6 +1007,7 @@ public Builder addStatementsBytes(com.google.protobuf.ByteString value) { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -1013,6 +1015,7 @@ public Builder addStatementsBytes(com.google.protobuf.ByteString value) { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -1044,6 +1047,7 @@ public java.lang.String getOperationId() { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -1051,6 +1055,7 @@ public java.lang.String getOperationId() { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -1082,6 +1087,7 @@ public com.google.protobuf.ByteString getOperationIdBytes() { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -1089,6 +1095,7 @@ public com.google.protobuf.ByteString getOperationIdBytes() { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -1119,6 +1126,7 @@ public Builder setOperationId(java.lang.String value) { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -1126,6 +1134,7 @@ public Builder setOperationId(java.lang.String value) { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -1152,6 +1161,7 @@ public Builder clearOperationId() { * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -1159,6 +1169,7 @@ public Builder clearOperationId() { * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an 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 cad7c3a28a2..0933a94e09e 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 @@ -111,6 +111,7 @@ public interface UpdateDatabaseDdlRequestOrBuilder * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -118,6 +119,7 @@ public interface UpdateDatabaseDdlRequestOrBuilder * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an @@ -139,6 +141,7 @@ public interface UpdateDatabaseDdlRequestOrBuilder * automatically-generated operation ID. Otherwise, `operation_id` * is used to construct the name of the resulting * [Operation][google.longrunning.Operation]. + * * Specifying an explicit operation ID simplifies determining * whether the statements were executed in the event that the * [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, @@ -146,6 +149,7 @@ public interface UpdateDatabaseDdlRequestOrBuilder * `operation_id` fields can be combined to form the * [name][google.longrunning.Operation.name] of the resulting * [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. + * * `operation_id` should be unique within the database, and must be * a valid identifier: `[a-z][a-z0-9_]*`. Note that * automatically-generated operation IDs always begin with an 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 f37b1ad1ef6..e42f634cdf0 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 @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new UpdateDatabaseMetadata(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor; 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 c496653a2fd..bb83a712eec 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 @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new UpdateDatabaseRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto .internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor; 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 f45bb932fda..6cf0e5a4b94 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 @@ -676,6 +676,27 @@ message UpdateDatabaseDdlRequest { string operation_id = 3; } +// Action information extracted from a DDL statement. This proto is used to +// display the brief info of the DDL statement for the operation +// [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]. +message DdlStatementActionInfo { + // The action for the DDL statement, e.g. CREATE, ALTER, DROP, GRANT, etc. + // This field is a non-empty string. + string action = 1; + + // The entity type for the DDL statement, e.g. TABLE, INDEX, VIEW, etc. + // This field can be empty string for some DDL statement, + // e.g. for statement "ANALYZE", `entity_type` = "". + string entity_type = 2; + + // The entity name(s) being operated on the DDL statement. + // E.g. + // 1. For statement "CREATE TABLE t1(...)", `entity_names` = ["t1"]. + // 2. For statement "GRANT ROLE r1, r2 ...", `entity_names` = ["r1", "r2"]. + // 3. For statement "ANALYZE", `entity_names` = []. + repeated string entity_names = 3; +} + // Metadata type for the operation returned by // [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]. message UpdateDatabaseDdlMetadata { @@ -693,20 +714,23 @@ message UpdateDatabaseDdlMetadata { // timestamp for the statement `statements[i]`. repeated google.protobuf.Timestamp commit_timestamps = 3; - // Output only. When true, indicates that the operation is throttled e.g + // Output only. When true, indicates that the operation is throttled e.g. // due to resource constraints. When resources become available the operation // will resume and this field will be false again. bool throttled = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // The progress of the - // [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] operations. - // Currently, only index creation statements will have a continuously - // updating progress. - // For non-index creation statements, `progress[i]` will have start time - // and end time populated with commit timestamp of operation, - // as well as a progress of 100% once the operation has completed. - // `progress[i]` is the operation progress for `statements[i]`. + // [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] + // operations. All DDL statements will have continuously updating progress, + // and `progress[i]` is the operation progress for `statements[i]`. Also, + // `progress[i]` will have start time and end time populated with commit + // timestamp of operation, as well as a progress of 100% once the operation + // has completed. repeated OperationProgress progress = 5; + + // The brief action info for the DDL statements. + // `actions[i]` is the brief info for `statements[i]`. + repeated DdlStatementActionInfo actions = 6; } // The request for [DropDatabase][google.spanner.admin.database.v1.DatabaseAdmin.DropDatabase]. diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index 7b1d1974d05..a5efcde5353 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.43.2 + 6.44.0 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.43.2 + 6.44.0 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 ddb0edf39fc..7957451eb76 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 @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new CreateInstanceConfigMetadata(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_CreateInstanceConfigMetadata_descriptor; 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 0d9bd2336fb..f283c425854 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new CreateInstanceConfigRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_CreateInstanceConfigRequest_descriptor; 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 5dbce1d85d0..72dad2442f8 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 @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new CreateInstanceMetadata(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_CreateInstanceMetadata_descriptor; 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 5bc14b342f4..1e3de9da213 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new CreateInstanceRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_CreateInstanceRequest_descriptor; 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 97f3875a680..cd5397978a0 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new DeleteInstanceConfigRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_DeleteInstanceConfigRequest_descriptor; 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 cbfa1e94aef..362cafcb798 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 @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new DeleteInstanceRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_DeleteInstanceRequest_descriptor; 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 80d5c4007ad..11b2d456206 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 @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetInstanceConfigRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_GetInstanceConfigRequest_descriptor; 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 5e5f96640b0..fb836dd7a2f 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 @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetInstanceRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_GetInstanceRequest_descriptor; 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 b2adc5f5222..3f81d952f62 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 @@ -42,7 +42,7 @@ private Instance() { config_ = ""; displayName_ = ""; state_ = 0; - endpointUris_ = com.google.protobuf.LazyStringArrayList.EMPTY; + endpointUris_ = com.google.protobuf.LazyStringArrayList.emptyList(); } @java.lang.Override @@ -51,11 +51,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new Instance(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_Instance_descriptor; @@ -426,6 +421,7 @@ public com.google.protobuf.ByteString getDisplayNameBytes() { * node_count or processing_units should be present in the message. This * may be zero in API responses for instances that are not yet in state * `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -449,6 +445,7 @@ public int getNodeCount() { * The number of processing units allocated to this instance. At most one of * processing_units or node_count should be present in the message. This may * be zero in API responses for instances that are not yet in state `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -548,12 +545,15 @@ public int getLabelsCount() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -587,12 +587,15 @@ public java.util.Map getLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -617,12 +620,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -654,12 +660,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -685,7 +694,8 @@ public java.lang.String getLabelsOrThrow(java.lang.String key) { public static final int ENDPOINT_URIS_FIELD_NUMBER = 8; @SuppressWarnings("serial") - private com.google.protobuf.LazyStringList endpointUris_; + private com.google.protobuf.LazyStringArrayList endpointUris_ = + com.google.protobuf.LazyStringArrayList.emptyList(); /** * * @@ -1176,8 +1186,7 @@ public Builder clear() { processingUnits_ = 0; state_ = 0; internalGetMutableLabels().clear(); - endpointUris_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000080); + endpointUris_ = com.google.protobuf.LazyStringArrayList.emptyList(); createTime_ = null; if (createTimeBuilder_ != null) { createTimeBuilder_.dispose(); @@ -1215,7 +1224,6 @@ public com.google.spanner.admin.instance.v1.Instance build() { public com.google.spanner.admin.instance.v1.Instance buildPartial() { com.google.spanner.admin.instance.v1.Instance result = new com.google.spanner.admin.instance.v1.Instance(this); - buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -1223,14 +1231,6 @@ public com.google.spanner.admin.instance.v1.Instance buildPartial() { return result; } - private void buildPartialRepeatedFields(com.google.spanner.admin.instance.v1.Instance result) { - if (((bitField0_ & 0x00000080) != 0)) { - endpointUris_ = endpointUris_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000080); - } - result.endpointUris_ = endpointUris_; - } - private void buildPartial0(com.google.spanner.admin.instance.v1.Instance result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1255,6 +1255,10 @@ private void buildPartial0(com.google.spanner.admin.instance.v1.Instance result) result.labels_ = internalGetLabels(); result.labels_.makeImmutable(); } + if (((from_bitField0_ & 0x00000080) != 0)) { + endpointUris_.makeImmutable(); + result.endpointUris_ = endpointUris_; + } if (((from_bitField0_ & 0x00000100) != 0)) { result.createTime_ = createTimeBuilder_ == null ? createTime_ : createTimeBuilder_.build(); } @@ -1337,7 +1341,7 @@ public Builder mergeFrom(com.google.spanner.admin.instance.v1.Instance other) { if (!other.endpointUris_.isEmpty()) { if (endpointUris_.isEmpty()) { endpointUris_ = other.endpointUris_; - bitField0_ = (bitField0_ & ~0x00000080); + bitField0_ |= 0x00000080; } else { ensureEndpointUrisIsMutable(); endpointUris_.addAll(other.endpointUris_); @@ -1834,6 +1838,7 @@ public Builder setDisplayNameBytes(com.google.protobuf.ByteString value) { * node_count or processing_units should be present in the message. This * may be zero in API responses for instances that are not yet in state * `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -1855,6 +1860,7 @@ public int getNodeCount() { * node_count or processing_units should be present in the message. This * may be zero in API responses for instances that are not yet in state * `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -1880,6 +1886,7 @@ public Builder setNodeCount(int value) { * node_count or processing_units should be present in the message. This * may be zero in API responses for instances that are not yet in state * `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -1904,6 +1911,7 @@ public Builder clearNodeCount() { * The number of processing units allocated to this instance. At most one of * processing_units or node_count should be present in the message. This may * be zero in API responses for instances that are not yet in state `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -1924,6 +1932,7 @@ public int getProcessingUnits() { * The number of processing units allocated to this instance. At most one of * processing_units or node_count should be present in the message. This may * be zero in API responses for instances that are not yet in state `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -1948,6 +1957,7 @@ public Builder setProcessingUnits(int value) { * The number of processing units allocated to this instance. At most one of * processing_units or node_count should be present in the message. This may * be zero in API responses for instances that are not yet in state `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -2121,12 +2131,15 @@ public int getLabelsCount() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2160,12 +2173,15 @@ public java.util.Map getLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2190,12 +2206,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2227,12 +2246,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2270,12 +2292,15 @@ public Builder clearLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2309,12 +2334,15 @@ public java.util.Map getMutableLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2346,12 +2374,15 @@ public Builder putLabels(java.lang.String key, java.lang.String value) { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -2368,14 +2399,14 @@ public Builder putAllLabels(java.util.Map va return this; } - private com.google.protobuf.LazyStringList endpointUris_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList endpointUris_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureEndpointUrisIsMutable() { - if (!((bitField0_ & 0x00000080) != 0)) { + if (!endpointUris_.isModifiable()) { endpointUris_ = new com.google.protobuf.LazyStringArrayList(endpointUris_); - bitField0_ |= 0x00000080; } + bitField0_ |= 0x00000080; } /** * @@ -2389,7 +2420,8 @@ private void ensureEndpointUrisIsMutable() { * @return A list containing the endpointUris. */ public com.google.protobuf.ProtocolStringList getEndpointUrisList() { - return endpointUris_.getUnmodifiableView(); + endpointUris_.makeImmutable(); + return endpointUris_; } /** * @@ -2454,6 +2486,7 @@ public Builder setEndpointUris(int index, java.lang.String value) { } ensureEndpointUrisIsMutable(); endpointUris_.set(index, value); + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2475,6 +2508,7 @@ public Builder addEndpointUris(java.lang.String value) { } ensureEndpointUrisIsMutable(); endpointUris_.add(value); + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2493,6 +2527,7 @@ public Builder addEndpointUris(java.lang.String value) { public Builder addAllEndpointUris(java.lang.Iterable values) { ensureEndpointUrisIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointUris_); + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2508,8 +2543,9 @@ public Builder addAllEndpointUris(java.lang.Iterable values) { * @return This builder for chaining. */ public Builder clearEndpointUris() { - endpointUris_ = com.google.protobuf.LazyStringArrayList.EMPTY; + endpointUris_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000080); + ; onChanged(); return this; } @@ -2532,6 +2568,7 @@ public Builder addEndpointUrisBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureEndpointUrisIsMutable(); endpointUris_.add(value); + bitField0_ |= 0x00000080; onChanged(); return this; } 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 e8b1cd418e3..0351972ca66 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 @@ -46,7 +46,7 @@ private InstanceConfig() { optionalReplicas_ = java.util.Collections.emptyList(); baseConfig_ = ""; etag_ = ""; - leaderOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY; + leaderOptions_ = com.google.protobuf.LazyStringArrayList.emptyList(); state_ = 0; } @@ -56,11 +56,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new InstanceConfig(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_InstanceConfig_descriptor; @@ -813,12 +808,15 @@ public int getLabelsCount() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -852,12 +850,15 @@ public java.util.Map getLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -882,12 +883,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -919,12 +923,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -1019,7 +1026,8 @@ public com.google.protobuf.ByteString getEtagBytes() { public static final int LEADER_OPTIONS_FIELD_NUMBER = 4; @SuppressWarnings("serial") - private com.google.protobuf.LazyStringList leaderOptions_; + private com.google.protobuf.LazyStringArrayList leaderOptions_ = + com.google.protobuf.LazyStringArrayList.emptyList(); /** * * @@ -1497,8 +1505,7 @@ public Builder clear() { baseConfig_ = ""; internalGetMutableLabels().clear(); etag_ = ""; - leaderOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000100); + leaderOptions_ = com.google.protobuf.LazyStringArrayList.emptyList(); reconciling_ = false; state_ = 0; return this; @@ -1556,11 +1563,6 @@ private void buildPartialRepeatedFields( } else { result.optionalReplicas_ = optionalReplicasBuilder_.build(); } - if (((bitField0_ & 0x00000100) != 0)) { - leaderOptions_ = leaderOptions_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000100); - } - result.leaderOptions_ = leaderOptions_; } private void buildPartial0(com.google.spanner.admin.instance.v1.InstanceConfig result) { @@ -1584,6 +1586,10 @@ private void buildPartial0(com.google.spanner.admin.instance.v1.InstanceConfig r if (((from_bitField0_ & 0x00000080) != 0)) { result.etag_ = etag_; } + if (((from_bitField0_ & 0x00000100) != 0)) { + leaderOptions_.makeImmutable(); + result.leaderOptions_ = leaderOptions_; + } if (((from_bitField0_ & 0x00000200) != 0)) { result.reconciling_ = reconciling_; } @@ -1720,7 +1726,7 @@ public Builder mergeFrom(com.google.spanner.admin.instance.v1.InstanceConfig oth if (!other.leaderOptions_.isEmpty()) { if (leaderOptions_.isEmpty()) { leaderOptions_ = other.leaderOptions_; - bitField0_ = (bitField0_ & ~0x00000100); + bitField0_ |= 0x00000100; } else { ensureLeaderOptionsIsMutable(); leaderOptions_.addAll(other.leaderOptions_); @@ -3137,12 +3143,15 @@ public int getLabelsCount() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3176,12 +3185,15 @@ public java.util.Map getLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3206,12 +3218,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3243,12 +3258,15 @@ public java.util.Map getLabelsMap() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3286,12 +3304,15 @@ public Builder clearLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3325,12 +3346,15 @@ public java.util.Map getMutableLabels() { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3362,12 +3386,15 @@ public Builder putLabels(java.lang.String key, java.lang.String value) { * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -3535,14 +3562,14 @@ public Builder setEtagBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.protobuf.LazyStringList leaderOptions_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList leaderOptions_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureLeaderOptionsIsMutable() { - if (!((bitField0_ & 0x00000100) != 0)) { + if (!leaderOptions_.isModifiable()) { leaderOptions_ = new com.google.protobuf.LazyStringArrayList(leaderOptions_); - bitField0_ |= 0x00000100; } + bitField0_ |= 0x00000100; } /** * @@ -3557,7 +3584,8 @@ private void ensureLeaderOptionsIsMutable() { * @return A list containing the leaderOptions. */ public com.google.protobuf.ProtocolStringList getLeaderOptionsList() { - return leaderOptions_.getUnmodifiableView(); + leaderOptions_.makeImmutable(); + return leaderOptions_; } /** * @@ -3626,6 +3654,7 @@ public Builder setLeaderOptions(int index, java.lang.String value) { } ensureLeaderOptionsIsMutable(); leaderOptions_.set(index, value); + bitField0_ |= 0x00000100; onChanged(); return this; } @@ -3648,6 +3677,7 @@ public Builder addLeaderOptions(java.lang.String value) { } ensureLeaderOptionsIsMutable(); leaderOptions_.add(value); + bitField0_ |= 0x00000100; onChanged(); return this; } @@ -3667,6 +3697,7 @@ public Builder addLeaderOptions(java.lang.String value) { public Builder addAllLeaderOptions(java.lang.Iterable values) { ensureLeaderOptionsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, leaderOptions_); + bitField0_ |= 0x00000100; onChanged(); return this; } @@ -3683,8 +3714,9 @@ public Builder addAllLeaderOptions(java.lang.Iterable values) * @return This builder for chaining. */ public Builder clearLeaderOptions() { - leaderOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY; + leaderOptions_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000100); + ; onChanged(); return this; } @@ -3708,6 +3740,7 @@ public Builder addLeaderOptionsBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureLeaderOptionsIsMutable(); leaderOptions_.add(value); + bitField0_ |= 0x00000100; onChanged(); return this; } diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigName.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigName.java index f35e6486198..013ea8d822f 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigName.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceConfigName.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 cd54bc42865..acf1f898390 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 @@ -273,12 +273,15 @@ public interface InstanceConfigOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -300,12 +303,15 @@ public interface InstanceConfigOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -330,12 +336,15 @@ public interface InstanceConfigOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -357,12 +366,15 @@ public interface InstanceConfigOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon @@ -388,12 +400,15 @@ java.lang.String getLabelsOrDefault( * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. Therefore, you are advised to use * an internal label representation, such as JSON, which doesn't rely upon diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceName.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceName.java index c20c3d693c2..bdf8fc16fc5 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceName.java +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/InstanceName.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 202d5c0bfe2..accad92c855 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 @@ -124,6 +124,7 @@ public interface InstanceOrBuilder * node_count or processing_units should be present in the message. This * may be zero in API responses for instances that are not yet in state * `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -142,6 +143,7 @@ public interface InstanceOrBuilder * The number of processing units allocated to this instance. At most one of * processing_units or node_count should be present in the message. This may * be zero in API responses for instances that are not yet in state `READY`. + * * See [the * documentation](https://cloud.google.com/spanner/docs/compute-capacity) * for more information about nodes and processing units. @@ -200,12 +202,15 @@ public interface InstanceOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -227,12 +232,15 @@ public interface InstanceOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -257,12 +265,15 @@ public interface InstanceOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -284,12 +295,15 @@ public interface InstanceOrBuilder * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon @@ -315,12 +329,15 @@ java.lang.String getLabelsOrDefault( * resources. They can be used to control how resource metrics are aggregated. * And they can be used as arguments to policy management rules (e.g. route, * firewall, load balancing, etc.). + * * * Label keys must be between 1 and 63 characters long and must conform to * the following regular expression: `[a-z][a-z0-9_-]{0,62}`. * * Label values must be between 0 and 63 characters long and must conform * to the regular expression `[a-z0-9_-]{0,63}`. * * No more than 64 labels can be associated with a given resource. + * * See https://goo.gl/xmQnxf for more information on and examples of labels. + * * If you plan to use labels in your own code, please note that additional * characters may be allowed in the future. And so you are advised to use an * internal label representation, such as JSON, which doesn't rely upon 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 f2383b48b41..542bafb332b 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 @@ -52,11 +52,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ListInstanceConfigOperationsRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto .internal_static_google_spanner_admin_instance_v1_ListInstanceConfigOperationsRequest_descriptor; @@ -138,13 +133,16 @@ public com.google.protobuf.ByteString getParentBytes() { * *
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -158,10 +156,13 @@ public com.google.protobuf.ByteString getParentBytes() {
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=` \
        *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -197,13 +198,16 @@ public java.lang.String getFilter() {
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -217,10 +221,13 @@ public java.lang.String getFilter() {
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=` \
        *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -883,13 +890,16 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -903,10 +913,13 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=` \
          *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -941,13 +954,16 @@ public java.lang.String getFilter() {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -961,10 +977,13 @@ public java.lang.String getFilter() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=` \
          *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -999,13 +1018,16 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1019,10 +1041,13 @@ public com.google.protobuf.ByteString getFilterBytes() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=` \
          *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -1056,13 +1081,16 @@ public Builder setFilter(java.lang.String value) {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1076,10 +1104,13 @@ public Builder setFilter(java.lang.String value) {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=` \
          *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -1109,13 +1140,16 @@ public Builder clearFilter() {
          *
          * 
          * An expression that filters the list of returned operations.
    +     *
          * A filter expression consists of a field name, a
          * comparison operator, and a value for filtering.
          * The value must be a string, a number, or a boolean. The comparison operator
          * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
          * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +     *
          * The following fields in the [Operation][google.longrunning.Operation]
          * are eligible for filtering:
    +     *
          *   * `name` - The name of the long-running operation
          *   * `done` - False if the operation is in progress, else true.
          *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -1129,10 +1163,13 @@ public Builder clearFilter() {
          *   * `error` - Error associated with the long-running operation.
          *   * `response.@type` - the type of response.
          *   * `response.<field_name>` - any field in response.value.
    +     *
          * You can combine multiple expressions by enclosing each expression in
          * parentheses. By default, expressions are combined with AND logic. However,
          * you can specify AND, OR, and NOT logic explicitly.
    +     *
          * Here are a few examples:
    +     *
          *   * `done:true` - The operation is complete.
          *   * `(metadata.@type=` \
          *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    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 3e79ae5fff3..b9116f3d765 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
    @@ -59,13 +59,16 @@ public interface ListInstanceConfigOperationsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -79,10 +82,13 @@ public interface ListInstanceConfigOperationsRequestOrBuilder
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=` \
        *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    @@ -107,13 +113,16 @@ public interface ListInstanceConfigOperationsRequestOrBuilder
        *
        * 
        * An expression that filters the list of returned operations.
    +   *
        * A filter expression consists of a field name, a
        * comparison operator, and a value for filtering.
        * The value must be a string, a number, or a boolean. The comparison operator
        * must be one of: `<`, `>`, `<=`, `>=`, `!=`, `=`, or `:`.
        * Colon `:` is the contains operator. Filter rules are not case sensitive.
    +   *
        * The following fields in the [Operation][google.longrunning.Operation]
        * are eligible for filtering:
    +   *
        *   * `name` - The name of the long-running operation
        *   * `done` - False if the operation is in progress, else true.
        *   * `metadata.@type` - the type of metadata. For example, the type string
    @@ -127,10 +136,13 @@ public interface ListInstanceConfigOperationsRequestOrBuilder
        *   * `error` - Error associated with the long-running operation.
        *   * `response.@type` - the type of response.
        *   * `response.<field_name>` - any field in response.value.
    +   *
        * You can combine multiple expressions by enclosing each expression in
        * parentheses. By default, expressions are combined with AND logic. However,
        * you can specify AND, OR, and NOT logic explicitly.
    +   *
        * Here are a few examples:
    +   *
        *   * `done:true` - The operation is complete.
        *   * `(metadata.@type=` \
        *     `type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceConfigMetadata)
    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 f120ee9ea3b..5ea6dd69395 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
    @@ -51,11 +51,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListInstanceConfigOperationsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_ListInstanceConfigOperationsResponse_descriptor;
    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 ccfd7f89e98..9101130a4c0 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListInstanceConfigsRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_ListInstanceConfigsRequest_descriptor;
    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 d5611dd1e8d..0d8cac1c67f 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListInstanceConfigsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_ListInstanceConfigsResponse_descriptor;
    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 2ba8ebb3487..1236936495a 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
    @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListInstancesRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_ListInstancesRequest_descriptor;
    @@ -213,10 +208,13 @@ public com.google.protobuf.ByteString getPageTokenBytes() {
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `name`
        *   * `display_name`
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `name:*` --> The instance has a name.
        *   * `name:Howl` --> The instance's name contains the string "howl".
        *   * `name:HOWL` --> Equivalent to above.
    @@ -251,10 +249,13 @@ public java.lang.String getFilter() {
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `name`
        *   * `display_name`
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `name:*` --> The instance has a name.
        *   * `name:Howl` --> The instance's name contains the string "howl".
        *   * `name:HOWL` --> Equivalent to above.
    @@ -1003,10 +1004,13 @@ public Builder setPageTokenBytes(com.google.protobuf.ByteString value) {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `name`
          *   * `display_name`
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `name:*` --> The instance has a name.
          *   * `name:Howl` --> The instance's name contains the string "howl".
          *   * `name:HOWL` --> Equivalent to above.
    @@ -1040,10 +1044,13 @@ public java.lang.String getFilter() {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `name`
          *   * `display_name`
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `name:*` --> The instance has a name.
          *   * `name:Howl` --> The instance's name contains the string "howl".
          *   * `name:HOWL` --> Equivalent to above.
    @@ -1077,10 +1084,13 @@ public com.google.protobuf.ByteString getFilterBytes() {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `name`
          *   * `display_name`
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `name:*` --> The instance has a name.
          *   * `name:Howl` --> The instance's name contains the string "howl".
          *   * `name:HOWL` --> Equivalent to above.
    @@ -1113,10 +1123,13 @@ public Builder setFilter(java.lang.String value) {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `name`
          *   * `display_name`
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `name:*` --> The instance has a name.
          *   * `name:Howl` --> The instance's name contains the string "howl".
          *   * `name:HOWL` --> Equivalent to above.
    @@ -1145,10 +1158,13 @@ public Builder clearFilter() {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `name`
          *   * `display_name`
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `name:*` --> The instance has a name.
          *   * `name:Howl` --> The instance's name contains the string "howl".
          *   * `name:HOWL` --> Equivalent to above.
    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 fe48b843731..4d2e9869ded 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
    @@ -105,10 +105,13 @@ public interface ListInstancesRequestOrBuilder
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `name`
        *   * `display_name`
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `name:*` --> The instance has a name.
        *   * `name:Howl` --> The instance's name contains the string "howl".
        *   * `name:HOWL` --> Equivalent to above.
    @@ -132,10 +135,13 @@ public interface ListInstancesRequestOrBuilder
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `name`
        *   * `display_name`
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `name:*` --> The instance has a name.
        *   * `name:Howl` --> The instance's name contains the string "howl".
        *   * `name:HOWL` --> Equivalent to above.
    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 89519d1b539..65ae986053e 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
    @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListInstancesResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_ListInstancesResponse_descriptor;
    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 8a822c2c7d2..37971de7ed9 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new OperationProgress();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.CommonProto
             .internal_static_google_spanner_admin_instance_v1_OperationProgress_descriptor;
    diff --git a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ProjectName.java b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ProjectName.java
    index 54cecb928ac..ac48875b84f 100644
    --- a/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ProjectName.java
    +++ b/proto-google-cloud-spanner-admin-instance-v1/src/main/java/com/google/spanner/admin/instance/v1/ProjectName.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2022 Google LLC
    + * Copyright 2023 Google LLC
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
    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 2553f2fff57..e180b6bbb6d 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
    @@ -40,11 +40,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ReplicaInfo();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_ReplicaInfo_descriptor;
    @@ -87,6 +82,7 @@ public enum ReplicaType implements com.google.protobuf.ProtocolMessageEnum {
          *
          * 
          * Read-write replicas support both reads and writes. These replicas:
    +     *
          * * Maintain a full copy of your data.
          * * Serve reads.
          * * Can vote whether to commit a write.
    @@ -102,6 +98,7 @@ public enum ReplicaType implements com.google.protobuf.ProtocolMessageEnum {
          *
          * 
          * Read-only replicas only support reads (not writes). Read-only replicas:
    +     *
          * * Maintain a full copy of your data.
          * * Serve reads.
          * * Do not participate in voting to commit writes.
    @@ -117,6 +114,7 @@ public enum ReplicaType implements com.google.protobuf.ProtocolMessageEnum {
          * 
          * Witness replicas don't support reads but do participate in voting to
          * commit writes. Witness replicas:
    +     *
          * * Do not maintain a full copy of data.
          * * Do not serve reads.
          * * Vote whether to commit writes.
    @@ -144,6 +142,7 @@ public enum ReplicaType implements com.google.protobuf.ProtocolMessageEnum {
          *
          * 
          * Read-write replicas support both reads and writes. These replicas:
    +     *
          * * Maintain a full copy of your data.
          * * Serve reads.
          * * Can vote whether to commit a write.
    @@ -159,6 +158,7 @@ public enum ReplicaType implements com.google.protobuf.ProtocolMessageEnum {
          *
          * 
          * Read-only replicas only support reads (not writes). Read-only replicas:
    +     *
          * * Maintain a full copy of your data.
          * * Serve reads.
          * * Do not participate in voting to commit writes.
    @@ -174,6 +174,7 @@ public enum ReplicaType implements com.google.protobuf.ProtocolMessageEnum {
          * 
          * Witness replicas don't support reads but do participate in voting to
          * commit writes. Witness replicas:
    +     *
          * * Do not maintain a full copy of data.
          * * Do not serve reads.
          * * Vote whether to commit writes.
    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 3d5256cbd62..8fc561a4fa7 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
    @@ -144,203 +144,204 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
               + "min.instance.v1.ReplicaInfo.ReplicaType\022"
               + "\037\n\027default_leader_location\030\003 \001(\010\"O\n\013Repl"
               + "icaType\022\024\n\020TYPE_UNSPECIFIED\020\000\022\016\n\nREAD_WR"
    -          + "ITE\020\001\022\r\n\tREAD_ONLY\020\002\022\013\n\007WITNESS\020\003\"\276\006\n\016In"
    +          + "ITE\020\001\022\r\n\tREAD_ONLY\020\002\022\013\n\007WITNESS\020\003\"\302\006\n\016In"
               + "stanceConfig\022\014\n\004name\030\001 \001(\t\022\024\n\014display_na"
    -          + "me\030\002 \001(\t\022O\n\013config_type\030\005 \001(\01625.google.s"
    +          + "me\030\002 \001(\t\022P\n\013config_type\030\005 \001(\01625.google.s"
               + "panner.admin.instance.v1.InstanceConfig."
    -          + "TypeB\003\340A\003\022?\n\010replicas\030\003 \003(\0132-.google.spa"
    -          + "nner.admin.instance.v1.ReplicaInfo\022M\n\021op"
    -          + "tional_replicas\030\006 \003(\0132-.google.spanner.a"
    -          + "dmin.instance.v1.ReplicaInfoB\003\340A\003\022?\n\013bas"
    -          + "e_config\030\007 \001(\tB*\372A\'\n%spanner.googleapis."
    -          + "com/InstanceConfig\022L\n\006labels\030\010 \003(\0132<.goo"
    -          + "gle.spanner.admin.instance.v1.InstanceCo"
    -          + "nfig.LabelsEntry\022\014\n\004etag\030\t \001(\t\022\026\n\016leader"
    -          + "_options\030\004 \003(\t\022\030\n\013reconciling\030\n \001(\010B\003\340A\003"
    -          + "\022J\n\005state\030\013 \001(\01626.google.spanner.admin.i"
    -          + "nstance.v1.InstanceConfig.StateB\003\340A\003\032-\n\013"
    -          + "LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:"
    -          + "\0028\001\"B\n\004Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\022\n\016GOO"
    -          + "GLE_MANAGED\020\001\022\020\n\014USER_MANAGED\020\002\"7\n\005State"
    -          + "\022\025\n\021STATE_UNSPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n"
    -          + "\005READY\020\002:`\352A]\n%spanner.googleapis.com/In"
    -          + "stanceConfig\0224projects/{project}/instanc"
    -          + "eConfigs/{instance_config}\"\355\004\n\010Instance\022"
    -          + "\021\n\004name\030\001 \001(\tB\003\340A\002\022=\n\006config\030\002 \001(\tB-\340A\002\372"
    -          + "A\'\n%spanner.googleapis.com/InstanceConfi"
    -          + "g\022\031\n\014display_name\030\003 \001(\tB\003\340A\002\022\022\n\nnode_cou"
    -          + "nt\030\005 \001(\005\022\030\n\020processing_units\030\t \001(\005\022D\n\005st"
    -          + "ate\030\006 \001(\01620.google.spanner.admin.instanc"
    -          + "e.v1.Instance.StateB\003\340A\003\022F\n\006labels\030\007 \003(\013"
    -          + "26.google.spanner.admin.instance.v1.Inst"
    -          + "ance.LabelsEntry\022\025\n\rendpoint_uris\030\010 \003(\t\022"
    -          + "4\n\013create_time\030\013 \001(\0132\032.google.protobuf.T"
    -          + "imestampB\003\340A\003\0224\n\013update_time\030\014 \001(\0132\032.goo"
    -          + "gle.protobuf.TimestampB\003\340A\003\032-\n\013LabelsEnt"
    -          + "ry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"7\n\005St"
    -          + "ate\022\025\n\021STATE_UNSPECIFIED\020\000\022\014\n\010CREATING\020\001"
    -          + "\022\t\n\005READY\020\002:M\352AJ\n\037spanner.googleapis.com"
    -          + "/Instance\022\'projects/{project}/instances/"
    -          + "{instance}\"\210\001\n\032ListInstanceConfigsReques"
    -          + "t\022C\n\006parent\030\001 \001(\tB3\340A\002\372A-\n+cloudresource"
    -          + "manager.googleapis.com/Project\022\021\n\tpage_s"
    -          + "ize\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\"\202\001\n\033ListIn"
    -          + "stanceConfigsResponse\022J\n\020instance_config"
    -          + "s\030\001 \003(\01320.google.spanner.admin.instance."
    -          + "v1.InstanceConfig\022\027\n\017next_page_token\030\002 \001"
    -          + "(\t\"W\n\030GetInstanceConfigRequest\022;\n\004name\030\001"
    -          + " \001(\tB-\340A\002\372A\'\n%spanner.googleapis.com/Ins"
    -          + "tanceConfig\"\352\001\n\033CreateInstanceConfigRequ"
    -          + "est\022C\n\006parent\030\001 \001(\tB3\340A\002\372A-\n+cloudresour"
    -          + "cemanager.googleapis.com/Project\022\037\n\022inst"
    -          + "ance_config_id\030\002 \001(\tB\003\340A\002\022N\n\017instance_co"
    -          + "nfig\030\003 \001(\01320.google.spanner.admin.instan"
    -          + "ce.v1.InstanceConfigB\003\340A\002\022\025\n\rvalidate_on"
    -          + "ly\030\004 \001(\010\"\272\001\n\033UpdateInstanceConfigRequest"
    -          + "\022N\n\017instance_config\030\001 \001(\01320.google.spann"
    -          + "er.admin.instance.v1.InstanceConfigB\003\340A\002"
    -          + "\0224\n\013update_mask\030\002 \001(\0132\032.google.protobuf."
    -          + "FieldMaskB\003\340A\002\022\025\n\rvalidate_only\030\003 \001(\010\"\177\n"
    -          + "\033DeleteInstanceConfigRequest\022;\n\004name\030\001 \001"
    -          + "(\tB-\340A\002\372A\'\n%spanner.googleapis.com/Insta"
    -          + "nceConfig\022\014\n\004etag\030\002 \001(\t\022\025\n\rvalidate_only"
    -          + "\030\003 \001(\010\"\241\001\n#ListInstanceConfigOperationsR"
    -          + "equest\022C\n\006parent\030\001 \001(\tB3\340A\002\372A-\n+cloudres"
    -          + "ourcemanager.googleapis.com/Project\022\016\n\006f"
    -          + "ilter\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\022\n\npage_t"
    -          + "oken\030\004 \001(\t\"r\n$ListInstanceConfigOperatio"
    -          + "nsResponse\0221\n\noperations\030\001 \003(\0132\035.google."
    -          + "longrunning.Operation\022\027\n\017next_page_token"
    -          + "\030\002 \001(\t\"{\n\022GetInstanceRequest\0225\n\004name\030\001 \001"
    -          + "(\tB\'\340A\002\372A!\n\037spanner.googleapis.com/Insta"
    -          + "nce\022.\n\nfield_mask\030\002 \001(\0132\032.google.protobu"
    -          + "f.FieldMask\"\271\001\n\025CreateInstanceRequest\022C\n"
    -          + "\006parent\030\001 \001(\tB3\340A\002\372A-\n+cloudresourcemana"
    -          + "ger.googleapis.com/Project\022\030\n\013instance_i"
    -          + "d\030\002 \001(\tB\003\340A\002\022A\n\010instance\030\003 \001(\0132*.google."
    -          + "spanner.admin.instance.v1.InstanceB\003\340A\002\""
    -          + "\222\001\n\024ListInstancesRequest\022C\n\006parent\030\001 \001(\t"
    -          + "B3\340A\002\372A-\n+cloudresourcemanager.googleapi"
    -          + "s.com/Project\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage"
    -          + "_token\030\003 \001(\t\022\016\n\006filter\030\004 \001(\t\"o\n\025ListInst"
    -          + "ancesResponse\022=\n\tinstances\030\001 \003(\0132*.googl"
    -          + "e.spanner.admin.instance.v1.Instance\022\027\n\017"
    -          + "next_page_token\030\002 \001(\t\"\217\001\n\025UpdateInstance"
    -          + "Request\022A\n\010instance\030\001 \001(\0132*.google.spann"
    -          + "er.admin.instance.v1.InstanceB\003\340A\002\0223\n\nfi"
    -          + "eld_mask\030\002 \001(\0132\032.google.protobuf.FieldMa"
    -          + "skB\003\340A\002\"N\n\025DeleteInstanceRequest\0225\n\004name"
    -          + "\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googleapis.com/I"
    -          + "nstance\"\345\001\n\026CreateInstanceMetadata\022<\n\010in"
    -          + "stance\030\001 \001(\0132*.google.spanner.admin.inst"
    -          + "ance.v1.Instance\022.\n\nstart_time\030\002 \001(\0132\032.g"
    -          + "oogle.protobuf.Timestamp\022/\n\013cancel_time\030"
    -          + "\003 \001(\0132\032.google.protobuf.Timestamp\022,\n\010end"
    -          + "_time\030\004 \001(\0132\032.google.protobuf.Timestamp\""
    -          + "\345\001\n\026UpdateInstanceMetadata\022<\n\010instance\030\001"
    -          + " \001(\0132*.google.spanner.admin.instance.v1."
    -          + "Instance\022.\n\nstart_time\030\002 \001(\0132\032.google.pr"
    -          + "otobuf.Timestamp\022/\n\013cancel_time\030\003 \001(\0132\032."
    -          + "google.protobuf.Timestamp\022,\n\010end_time\030\004 "
    -          + "\001(\0132\032.google.protobuf.Timestamp\"\341\001\n\034Crea"
    -          + "teInstanceConfigMetadata\022I\n\017instance_con"
    -          + "fig\030\001 \001(\01320.google.spanner.admin.instanc"
    -          + "e.v1.InstanceConfig\022E\n\010progress\030\002 \001(\01323."
    -          + "google.spanner.admin.instance.v1.Operati"
    -          + "onProgress\022/\n\013cancel_time\030\003 \001(\0132\032.google"
    -          + ".protobuf.Timestamp\"\341\001\n\034UpdateInstanceCo"
    +          + "TypeB\004\342A\001\003\022?\n\010replicas\030\003 \003(\0132-.google.sp"
    +          + "anner.admin.instance.v1.ReplicaInfo\022N\n\021o"
    +          + "ptional_replicas\030\006 \003(\0132-.google.spanner."
    +          + "admin.instance.v1.ReplicaInfoB\004\342A\001\003\022?\n\013b"
    +          + "ase_config\030\007 \001(\tB*\372A\'\n%spanner.googleapi"
    +          + "s.com/InstanceConfig\022L\n\006labels\030\010 \003(\0132<.g"
    +          + "oogle.spanner.admin.instance.v1.Instance"
    +          + "Config.LabelsEntry\022\014\n\004etag\030\t \001(\t\022\026\n\016lead"
    +          + "er_options\030\004 \003(\t\022\031\n\013reconciling\030\n \001(\010B\004\342"
    +          + "A\001\003\022K\n\005state\030\013 \001(\01626.google.spanner.admi"
    +          + "n.instance.v1.InstanceConfig.StateB\004\342A\001\003"
    +          + "\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 "
    +          + "\001(\t:\0028\001\"B\n\004Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\022\n"
    +          + "\016GOOGLE_MANAGED\020\001\022\020\n\014USER_MANAGED\020\002\"7\n\005S"
    +          + "tate\022\025\n\021STATE_UNSPECIFIED\020\000\022\014\n\010CREATING\020"
    +          + "\001\022\t\n\005READY\020\002:`\352A]\n%spanner.googleapis.co"
    +          + "m/InstanceConfig\0224projects/{project}/ins"
    +          + "tanceConfigs/{instance_config}\"\363\004\n\010Insta"
    +          + "nce\022\022\n\004name\030\001 \001(\tB\004\342A\001\002\022>\n\006config\030\002 \001(\tB"
    +          + ".\342A\001\002\372A\'\n%spanner.googleapis.com/Instanc"
    +          + "eConfig\022\032\n\014display_name\030\003 \001(\tB\004\342A\001\002\022\022\n\nn"
    +          + "ode_count\030\005 \001(\005\022\030\n\020processing_units\030\t \001("
    +          + "\005\022E\n\005state\030\006 \001(\01620.google.spanner.admin."
    +          + "instance.v1.Instance.StateB\004\342A\001\003\022F\n\006labe"
    +          + "ls\030\007 \003(\01326.google.spanner.admin.instance"
    +          + ".v1.Instance.LabelsEntry\022\025\n\rendpoint_uri"
    +          + "s\030\010 \003(\t\0225\n\013create_time\030\013 \001(\0132\032.google.pr"
    +          + "otobuf.TimestampB\004\342A\001\003\0225\n\013update_time\030\014 "
    +          + "\001(\0132\032.google.protobuf.TimestampB\004\342A\001\003\032-\n"
    +          + "\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t"
    +          + ":\0028\001\"7\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\014\n\010"
    +          + "CREATING\020\001\022\t\n\005READY\020\002:M\352AJ\n\037spanner.goog"
    +          + "leapis.com/Instance\022\'projects/{project}/"
    +          + "instances/{instance}\"\211\001\n\032ListInstanceCon"
    +          + "figsRequest\022D\n\006parent\030\001 \001(\tB4\342A\001\002\372A-\n+cl"
    +          + "oudresourcemanager.googleapis.com/Projec"
    +          + "t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t"
    +          + "\"\202\001\n\033ListInstanceConfigsResponse\022J\n\020inst"
    +          + "ance_configs\030\001 \003(\01320.google.spanner.admi"
    +          + "n.instance.v1.InstanceConfig\022\027\n\017next_pag"
    +          + "e_token\030\002 \001(\t\"X\n\030GetInstanceConfigReques"
    +          + "t\022<\n\004name\030\001 \001(\tB.\342A\001\002\372A\'\n%spanner.google"
    +          + "apis.com/InstanceConfig\"\355\001\n\033CreateInstan"
    +          + "ceConfigRequest\022D\n\006parent\030\001 \001(\tB4\342A\001\002\372A-"
    +          + "\n+cloudresourcemanager.googleapis.com/Pr"
    +          + "oject\022 \n\022instance_config_id\030\002 \001(\tB\004\342A\001\002\022"
    +          + "O\n\017instance_config\030\003 \001(\01320.google.spanne"
    +          + "r.admin.instance.v1.InstanceConfigB\004\342A\001\002"
    +          + "\022\025\n\rvalidate_only\030\004 \001(\010\"\274\001\n\033UpdateInstan"
    +          + "ceConfigRequest\022O\n\017instance_config\030\001 \001(\013"
    +          + "20.google.spanner.admin.instance.v1.Inst"
    +          + "anceConfigB\004\342A\001\002\0225\n\013update_mask\030\002 \001(\0132\032."
    +          + "google.protobuf.FieldMaskB\004\342A\001\002\022\025\n\rvalid"
    +          + "ate_only\030\003 \001(\010\"\200\001\n\033DeleteInstanceConfigR"
    +          + "equest\022<\n\004name\030\001 \001(\tB.\342A\001\002\372A\'\n%spanner.g"
    +          + "oogleapis.com/InstanceConfig\022\014\n\004etag\030\002 \001"
    +          + "(\t\022\025\n\rvalidate_only\030\003 \001(\010\"\242\001\n#ListInstan"
    +          + "ceConfigOperationsRequest\022D\n\006parent\030\001 \001("
    +          + "\tB4\342A\001\002\372A-\n+cloudresourcemanager.googlea"
    +          + "pis.com/Project\022\016\n\006filter\030\002 \001(\t\022\021\n\tpage_"
    +          + "size\030\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\"r\n$ListIn"
    +          + "stanceConfigOperationsResponse\0221\n\noperat"
    +          + "ions\030\001 \003(\0132\035.google.longrunning.Operatio"
    +          + "n\022\027\n\017next_page_token\030\002 \001(\t\"|\n\022GetInstanc"
    +          + "eRequest\0226\n\004name\030\001 \001(\tB(\342A\001\002\372A!\n\037spanner"
    +          + ".googleapis.com/Instance\022.\n\nfield_mask\030\002"
    +          + " \001(\0132\032.google.protobuf.FieldMask\"\274\001\n\025Cre"
    +          + "ateInstanceRequest\022D\n\006parent\030\001 \001(\tB4\342A\001\002"
    +          + "\372A-\n+cloudresourcemanager.googleapis.com"
    +          + "/Project\022\031\n\013instance_id\030\002 \001(\tB\004\342A\001\002\022B\n\010i"
    +          + "nstance\030\003 \001(\0132*.google.spanner.admin.ins"
    +          + "tance.v1.InstanceB\004\342A\001\002\"\223\001\n\024ListInstance"
    +          + "sRequest\022D\n\006parent\030\001 \001(\tB4\342A\001\002\372A-\n+cloud"
    +          + "resourcemanager.googleapis.com/Project\022\021"
    +          + "\n\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\022\016\n"
    +          + "\006filter\030\004 \001(\t\"o\n\025ListInstancesResponse\022="
    +          + "\n\tinstances\030\001 \003(\0132*.google.spanner.admin"
    +          + ".instance.v1.Instance\022\027\n\017next_page_token"
    +          + "\030\002 \001(\t\"\221\001\n\025UpdateInstanceRequest\022B\n\010inst"
    +          + "ance\030\001 \001(\0132*.google.spanner.admin.instan"
    +          + "ce.v1.InstanceB\004\342A\001\002\0224\n\nfield_mask\030\002 \001(\013"
    +          + "2\032.google.protobuf.FieldMaskB\004\342A\001\002\"O\n\025De"
    +          + "leteInstanceRequest\0226\n\004name\030\001 \001(\tB(\342A\001\002\372"
    +          + "A!\n\037spanner.googleapis.com/Instance\"\345\001\n\026"
    +          + "CreateInstanceMetadata\022<\n\010instance\030\001 \001(\013"
    +          + "2*.google.spanner.admin.instance.v1.Inst"
    +          + "ance\022.\n\nstart_time\030\002 \001(\0132\032.google.protob"
    +          + "uf.Timestamp\022/\n\013cancel_time\030\003 \001(\0132\032.goog"
    +          + "le.protobuf.Timestamp\022,\n\010end_time\030\004 \001(\0132"
    +          + "\032.google.protobuf.Timestamp\"\345\001\n\026UpdateIn"
    +          + "stanceMetadata\022<\n\010instance\030\001 \001(\0132*.googl"
    +          + "e.spanner.admin.instance.v1.Instance\022.\n\n"
    +          + "start_time\030\002 \001(\0132\032.google.protobuf.Times"
    +          + "tamp\022/\n\013cancel_time\030\003 \001(\0132\032.google.proto"
    +          + "buf.Timestamp\022,\n\010end_time\030\004 \001(\0132\032.google"
    +          + ".protobuf.Timestamp\"\341\001\n\034CreateInstanceCo"
               + "nfigMetadata\022I\n\017instance_config\030\001 \001(\01320."
               + "google.spanner.admin.instance.v1.Instanc"
               + "eConfig\022E\n\010progress\030\002 \001(\01323.google.spann"
               + "er.admin.instance.v1.OperationProgress\022/"
               + "\n\013cancel_time\030\003 \001(\0132\032.google.protobuf.Ti"
    -          + "mestamp2\362\030\n\rInstanceAdmin\022\314\001\n\023ListInstan"
    -          + "ceConfigs\022<.google.spanner.admin.instanc"
    -          + "e.v1.ListInstanceConfigsRequest\032=.google"
    -          + ".spanner.admin.instance.v1.ListInstanceC"
    -          + "onfigsResponse\"8\202\323\344\223\002)\022\'/v1/{parent=proj"
    -          + "ects/*}/instanceConfigs\332A\006parent\022\271\001\n\021Get"
    -          + "InstanceConfig\022:.google.spanner.admin.in"
    -          + "stance.v1.GetInstanceConfigRequest\0320.goo"
    -          + "gle.spanner.admin.instance.v1.InstanceCo"
    -          + "nfig\"6\202\323\344\223\002)\022\'/v1/{name=projects/*/insta"
    -          + "nceConfigs/*}\332A\004name\022\310\002\n\024CreateInstanceC"
    -          + "onfig\022=.google.spanner.admin.instance.v1"
    -          + ".CreateInstanceConfigRequest\032\035.google.lo"
    -          + "ngrunning.Operation\"\321\001\202\323\344\223\002,\"\'/v1/{paren"
    -          + "t=projects/*}/instanceConfigs:\001*\332A)paren"
    -          + "t,instance_config,instance_config_id\312Ap\n"
    -          + "/google.spanner.admin.instance.v1.Instan"
    -          + "ceConfig\022=google.spanner.admin.instance."
    -          + "v1.CreateInstanceConfigMetadata\022\312\002\n\024Upda"
    -          + "teInstanceConfig\022=.google.spanner.admin."
    -          + "instance.v1.UpdateInstanceConfigRequest\032"
    -          + "\035.google.longrunning.Operation\"\323\001\202\323\344\223\002<2"
    -          + "7/v1/{instance_config.name=projects/*/in"
    -          + "stanceConfigs/*}:\001*\332A\033instance_config,up"
    -          + "date_mask\312Ap\n/google.spanner.admin.insta"
    -          + "nce.v1.InstanceConfig\022=google.spanner.ad"
    -          + "min.instance.v1.UpdateInstanceConfigMeta"
    -          + "data\022\245\001\n\024DeleteInstanceConfig\022=.google.s"
    -          + "panner.admin.instance.v1.DeleteInstanceC"
    -          + "onfigRequest\032\026.google.protobuf.Empty\"6\202\323"
    -          + "\344\223\002)*\'/v1/{name=projects/*/instanceConfi"
    -          + "gs/*}\332A\004name\022\360\001\n\034ListInstanceConfigOpera"
    -          + "tions\022E.google.spanner.admin.instance.v1"
    -          + ".ListInstanceConfigOperationsRequest\032F.g"
    -          + "oogle.spanner.admin.instance.v1.ListInst"
    -          + "anceConfigOperationsResponse\"A\202\323\344\223\0022\0220/v"
    -          + "1/{parent=projects/*}/instanceConfigOper"
    -          + "ations\332A\006parent\022\264\001\n\rListInstances\0226.goog"
    +          + "mestamp\"\341\001\n\034UpdateInstanceConfigMetadata"
    +          + "\022I\n\017instance_config\030\001 \001(\01320.google.spann"
    +          + "er.admin.instance.v1.InstanceConfig\022E\n\010p"
    +          + "rogress\030\002 \001(\01323.google.spanner.admin.ins"
    +          + "tance.v1.OperationProgress\022/\n\013cancel_tim"
    +          + "e\030\003 \001(\0132\032.google.protobuf.Timestamp2\362\030\n\r"
    +          + "InstanceAdmin\022\314\001\n\023ListInstanceConfigs\022<."
    +          + "google.spanner.admin.instance.v1.ListIns"
    +          + "tanceConfigsRequest\032=.google.spanner.adm"
    +          + "in.instance.v1.ListInstanceConfigsRespon"
    +          + "se\"8\332A\006parent\202\323\344\223\002)\022\'/v1/{parent=project"
    +          + "s/*}/instanceConfigs\022\271\001\n\021GetInstanceConf"
    +          + "ig\022:.google.spanner.admin.instance.v1.Ge"
    +          + "tInstanceConfigRequest\0320.google.spanner."
    +          + "admin.instance.v1.InstanceConfig\"6\332A\004nam"
    +          + "e\202\323\344\223\002)\022\'/v1/{name=projects/*/instanceCo"
    +          + "nfigs/*}\022\310\002\n\024CreateInstanceConfig\022=.goog"
    +          + "le.spanner.admin.instance.v1.CreateInsta"
    +          + "nceConfigRequest\032\035.google.longrunning.Op"
    +          + "eration\"\321\001\312Ap\n/google.spanner.admin.inst"
    +          + "ance.v1.InstanceConfig\022=google.spanner.a"
    +          + "dmin.instance.v1.CreateInstanceConfigMet"
    +          + "adata\332A)parent,instance_config,instance_"
    +          + "config_id\202\323\344\223\002,\"\'/v1/{parent=projects/*}"
    +          + "/instanceConfigs:\001*\022\312\002\n\024UpdateInstanceCo"
    +          + "nfig\022=.google.spanner.admin.instance.v1."
    +          + "UpdateInstanceConfigRequest\032\035.google.lon"
    +          + "grunning.Operation\"\323\001\312Ap\n/google.spanner"
    +          + ".admin.instance.v1.InstanceConfig\022=googl"
    +          + "e.spanner.admin.instance.v1.UpdateInstan"
    +          + "ceConfigMetadata\332A\033instance_config,updat"
    +          + "e_mask\202\323\344\223\002<27/v1/{instance_config.name="
    +          + "projects/*/instanceConfigs/*}:\001*\022\245\001\n\024Del"
    +          + "eteInstanceConfig\022=.google.spanner.admin"
    +          + ".instance.v1.DeleteInstanceConfigRequest"
    +          + "\032\026.google.protobuf.Empty\"6\332A\004name\202\323\344\223\002)*"
    +          + "\'/v1/{name=projects/*/instanceConfigs/*}"
    +          + "\022\360\001\n\034ListInstanceConfigOperations\022E.goog"
               + "le.spanner.admin.instance.v1.ListInstanc"
    -          + "esRequest\0327.google.spanner.admin.instanc"
    -          + "e.v1.ListInstancesResponse\"2\202\323\344\223\002#\022!/v1/"
    -          + "{parent=projects/*}/instances\332A\006parent\022\241"
    -          + "\001\n\013GetInstance\0224.google.spanner.admin.in"
    -          + "stance.v1.GetInstanceRequest\032*.google.sp"
    -          + "anner.admin.instance.v1.Instance\"0\202\323\344\223\002#"
    -          + "\022!/v1/{name=projects/*/instances/*}\332A\004na"
    -          + "me\022\234\002\n\016CreateInstance\0227.google.spanner.a"
    -          + "dmin.instance.v1.CreateInstanceRequest\032\035"
    -          + ".google.longrunning.Operation\"\261\001\202\323\344\223\002&\"!"
    -          + "/v1/{parent=projects/*}/instances:\001*\332A\033p"
    -          + "arent,instance_id,instance\312Ad\n)google.sp"
    -          + "anner.admin.instance.v1.Instance\0227google"
    -          + ".spanner.admin.instance.v1.CreateInstanc"
    -          + "eMetadata\022\235\002\n\016UpdateInstance\0227.google.sp"
    -          + "anner.admin.instance.v1.UpdateInstanceRe"
    -          + "quest\032\035.google.longrunning.Operation\"\262\001\202"
    -          + "\323\344\223\002/2*/v1/{instance.name=projects/*/ins"
    -          + "tances/*}:\001*\332A\023instance,field_mask\312Ad\n)g"
    -          + "oogle.spanner.admin.instance.v1.Instance"
    -          + "\0227google.spanner.admin.instance.v1.Updat"
    -          + "eInstanceMetadata\022\223\001\n\016DeleteInstance\0227.g"
    -          + "oogle.spanner.admin.instance.v1.DeleteIn"
    -          + "stanceRequest\032\026.google.protobuf.Empty\"0\202"
    -          + "\323\344\223\002#*!/v1/{name=projects/*/instances/*}"
    -          + "\332A\004name\022\232\001\n\014SetIamPolicy\022\".google.iam.v1"
    -          + ".SetIamPolicyRequest\032\025.google.iam.v1.Pol"
    -          + "icy\"O\202\323\344\223\0027\"2/v1/{resource=projects/*/in"
    -          + "stances/*}:setIamPolicy:\001*\332A\017resource,po"
    -          + "licy\022\223\001\n\014GetIamPolicy\022\".google.iam.v1.Ge"
    -          + "tIamPolicyRequest\032\025.google.iam.v1.Policy"
    -          + "\"H\202\323\344\223\0027\"2/v1/{resource=projects/*/insta"
    -          + "nces/*}:getIamPolicy:\001*\332A\010resource\022\305\001\n\022T"
    -          + "estIamPermissions\022(.google.iam.v1.TestIa"
    -          + "mPermissionsRequest\032).google.iam.v1.Test"
    -          + "IamPermissionsResponse\"Z\202\323\344\223\002=\"8/v1/{res"
    -          + "ource=projects/*/instances/*}:testIamPer"
    -          + "missions:\001*\332A\024resource,permissions\032x\312A\026s"
    -          + "panner.googleapis.com\322A\\https://www.goog"
    -          + "leapis.com/auth/cloud-platform,https://w"
    -          + "ww.googleapis.com/auth/spanner.adminB\213\002\n"
    -          + "$com.google.spanner.admin.instance.v1B\031S"
    -          + "pannerInstanceAdminProtoP\001ZFcloud.google"
    -          + ".com/go/spanner/admin/instance/apiv1/ins"
    -          + "tancepb;instancepb\252\002&Google.Cloud.Spanne"
    -          + "r.Admin.Instance.V1\312\002&Google\\Cloud\\Spann"
    -          + "er\\Admin\\Instance\\V1\352\002+Google::Cloud::Sp"
    -          + "anner::Admin::Instance::V1b\006proto3"
    +          + "eConfigOperationsRequest\032F.google.spanne"
    +          + "r.admin.instance.v1.ListInstanceConfigOp"
    +          + "erationsResponse\"A\332A\006parent\202\323\344\223\0022\0220/v1/{"
    +          + "parent=projects/*}/instanceConfigOperati"
    +          + "ons\022\264\001\n\rListInstances\0226.google.spanner.a"
    +          + "dmin.instance.v1.ListInstancesRequest\0327."
    +          + "google.spanner.admin.instance.v1.ListIns"
    +          + "tancesResponse\"2\332A\006parent\202\323\344\223\002#\022!/v1/{pa"
    +          + "rent=projects/*}/instances\022\241\001\n\013GetInstan"
    +          + "ce\0224.google.spanner.admin.instance.v1.Ge"
    +          + "tInstanceRequest\032*.google.spanner.admin."
    +          + "instance.v1.Instance\"0\332A\004name\202\323\344\223\002#\022!/v1"
    +          + "/{name=projects/*/instances/*}\022\234\002\n\016Creat"
    +          + "eInstance\0227.google.spanner.admin.instanc"
    +          + "e.v1.CreateInstanceRequest\032\035.google.long"
    +          + "running.Operation\"\261\001\312Ad\n)google.spanner."
    +          + "admin.instance.v1.Instance\0227google.spann"
    +          + "er.admin.instance.v1.CreateInstanceMetad"
    +          + "ata\332A\033parent,instance_id,instance\202\323\344\223\002&\""
    +          + "!/v1/{parent=projects/*}/instances:\001*\022\235\002"
    +          + "\n\016UpdateInstance\0227.google.spanner.admin."
    +          + "instance.v1.UpdateInstanceRequest\032\035.goog"
    +          + "le.longrunning.Operation\"\262\001\312Ad\n)google.s"
    +          + "panner.admin.instance.v1.Instance\0227googl"
    +          + "e.spanner.admin.instance.v1.UpdateInstan"
    +          + "ceMetadata\332A\023instance,field_mask\202\323\344\223\002/2*"
    +          + "/v1/{instance.name=projects/*/instances/"
    +          + "*}:\001*\022\223\001\n\016DeleteInstance\0227.google.spanne"
    +          + "r.admin.instance.v1.DeleteInstanceReques"
    +          + "t\032\026.google.protobuf.Empty\"0\332A\004name\202\323\344\223\002#"
    +          + "*!/v1/{name=projects/*/instances/*}\022\232\001\n\014"
    +          + "SetIamPolicy\022\".google.iam.v1.SetIamPolic"
    +          + "yRequest\032\025.google.iam.v1.Policy\"O\332A\017reso"
    +          + "urce,policy\202\323\344\223\0027\"2/v1/{resource=project"
    +          + "s/*/instances/*}:setIamPolicy:\001*\022\223\001\n\014Get"
    +          + "IamPolicy\022\".google.iam.v1.GetIamPolicyRe"
    +          + "quest\032\025.google.iam.v1.Policy\"H\332A\010resourc"
    +          + "e\202\323\344\223\0027\"2/v1/{resource=projects/*/instan"
    +          + "ces/*}:getIamPolicy:\001*\022\305\001\n\022TestIamPermis"
    +          + "sions\022(.google.iam.v1.TestIamPermissions"
    +          + "Request\032).google.iam.v1.TestIamPermissio"
    +          + "nsResponse\"Z\332A\024resource,permissions\202\323\344\223\002"
    +          + "=\"8/v1/{resource=projects/*/instances/*}"
    +          + ":testIamPermissions:\001*\032x\312A\026spanner.googl"
    +          + "eapis.com\322A\\https://www.googleapis.com/a"
    +          + "uth/cloud-platform,https://www.googleapi"
    +          + "s.com/auth/spanner.adminB\213\002\n$com.google."
    +          + "spanner.admin.instance.v1B\031SpannerInstan"
    +          + "ceAdminProtoP\001ZFcloud.google.com/go/span"
    +          + "ner/admin/instance/apiv1/instancepb;inst"
    +          + "ancepb\252\002&Google.Cloud.Spanner.Admin.Inst"
    +          + "ance.V1\312\002&Google\\Cloud\\Spanner\\Admin\\Ins"
    +          + "tance\\V1\352\002+Google::Cloud::Spanner::Admin"
    +          + "::Instance::V1b\006proto3"
         };
         descriptor =
             com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
    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 5a22311f981..48f2e9e1683 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new UpdateInstanceConfigMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_UpdateInstanceConfigMetadata_descriptor;
    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 9c93dda8798..d2916ab0a74 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new UpdateInstanceConfigRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_UpdateInstanceConfigRequest_descriptor;
    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 a421f384777..291ad67bc82 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new UpdateInstanceMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_UpdateInstanceMetadata_descriptor;
    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 b8eaa2160d8..3c734c86d6e 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new UpdateInstanceRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.admin.instance.v1.SpannerInstanceAdminProto
             .internal_static_google_spanner_admin_instance_v1_UpdateInstanceRequest_descriptor;
    diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml
    index 53897ef1f5a..531815bfe6b 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.43.2
    +  6.44.0
       proto-google-cloud-spanner-v1
       PROTO library for proto-google-cloud-spanner-v1
       
         com.google.cloud
         google-cloud-spanner-parent
    -    6.43.2
    +    6.44.0
       
       
         
    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 9b92cd1cb03..1bdb2f44a29 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new BatchCreateSessionsRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_BatchCreateSessionsRequest_descriptor;
    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 a53a5644317..9a8d1c91120 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new BatchCreateSessionsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_BatchCreateSessionsResponse_descriptor;
    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 d676fd87ea6..fae0074b1ca 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new BeginTransactionRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_BeginTransactionRequest_descriptor;
    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 9d5d7d5891b..a052d9059b4 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CommitRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_CommitRequest_descriptor;
    @@ -69,6 +64,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
       }
     
       private int transactionCase_ = 0;
    +
    +  @SuppressWarnings("serial")
       private java.lang.Object transaction_;
     
       public enum TransactionCase
    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 67704563b20..c55778357bb 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
    @@ -247,5 +247,5 @@ public interface CommitRequestOrBuilder
        */
       com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder();
     
    -  public com.google.spanner.v1.CommitRequest.TransactionCase getTransactionCase();
    +  com.google.spanner.v1.CommitRequest.TransactionCase getTransactionCase();
     }
    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 89661b86be0..f3331b717f4 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
    @@ -45,11 +45,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CommitResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.CommitResponseProto
             .internal_static_google_spanner_v1_CommitResponse_descriptor;
    @@ -116,11 +111,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
           return new CommitStats();
         }
     
    -    @java.lang.Override
    -    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -      return this.unknownFields;
    -    }
    -
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
           return com.google.spanner.v1.CommitResponseProto
               .internal_static_google_spanner_v1_CommitResponse_CommitStats_descriptor;
    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 fe3fc6e7e6b..68c912c6598 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new CreateSessionRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_CreateSessionRequest_descriptor;
    diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DatabaseName.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DatabaseName.java
    index e7f0be608ab..3df2c6e0804 100644
    --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DatabaseName.java
    +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DatabaseName.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2022 Google LLC
    + * Copyright 2023 Google LLC
      *
      * Licensed under the Apache License, Version 2.0 (the "License");
      * you may not use this file except in compliance with the License.
    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 f285dd8124e..26f385c994c 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new DeleteSessionRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_DeleteSessionRequest_descriptor;
    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 c4392561ad7..3c9f88a1e4e 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ExecuteBatchDmlRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor;
    @@ -103,12 +98,16 @@ public interface StatementOrBuilder
          *
          * 
          * Parameter names and values that bind to placeholders in the DML string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The
          * same parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -122,12 +121,16 @@ public interface StatementOrBuilder * *
          * Parameter names and values that bind to placeholders in the DML string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The
          * same parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -141,12 +144,16 @@ public interface StatementOrBuilder * *
          * Parameter names and values that bind to placeholders in the DML string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The
          * same parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -161,6 +168,7 @@ public interface StatementOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -177,6 +185,7 @@ public interface StatementOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -196,6 +205,7 @@ public interface StatementOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -212,6 +222,7 @@ public interface StatementOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -232,6 +243,7 @@ com.google.spanner.v1.Type getParamTypesOrDefault( * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -271,11 +283,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new Statement(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor; @@ -360,12 +367,16 @@ public com.google.protobuf.ByteString getSqlBytes() { * *
          * Parameter names and values that bind to placeholders in the DML string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The
          * same parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -382,12 +393,16 @@ public boolean hasParams() { * *
          * Parameter names and values that bind to placeholders in the DML string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The
          * same parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -404,12 +419,16 @@ public com.google.protobuf.Struct getParams() { * *
          * Parameter names and values that bind to placeholders in the DML string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The
          * same parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -457,6 +476,7 @@ public int getParamTypesCount() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -485,6 +505,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -504,6 +525,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -531,6 +553,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1104,12 +1127,16 @@ public Builder setSqlBytes(com.google.protobuf.ByteString value) { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1125,12 +1152,16 @@ public boolean hasParams() { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1150,12 +1181,16 @@ public com.google.protobuf.Struct getParams() { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1179,12 +1214,16 @@ public Builder setParams(com.google.protobuf.Struct value) { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1205,12 +1244,16 @@ public Builder setParams(com.google.protobuf.Struct.Builder builderForValue) { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1237,12 +1280,16 @@ public Builder mergeParams(com.google.protobuf.Struct value) { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1263,12 +1310,16 @@ public Builder clearParams() { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1284,12 +1335,16 @@ public com.google.protobuf.Struct.Builder getParamsBuilder() { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1307,12 +1362,16 @@ public com.google.protobuf.StructOrBuilder getParamsOrBuilder() { * *
            * Parameter names and values that bind to placeholders in the DML string.
    +       *
            * A parameter placeholder consists of the `@` character followed by the
            * parameter name (for example, `@firstName`). Parameter names can contain
            * letters, numbers, and underscores.
    +       *
            * Parameters can appear anywhere that a literal value is expected.  The
            * same parameter name can be used more than once, for example:
    +       *
            * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +       *
            * It is an error to execute a SQL statement with unbound parameters.
            * 
    * @@ -1371,6 +1430,7 @@ public int getParamTypesCount() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1399,6 +1459,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1418,6 +1479,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1445,6 +1507,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1478,6 +1541,7 @@ public Builder clearParamTypes() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1506,6 +1570,7 @@ public java.util.Map getMutablePar * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1532,6 +1597,7 @@ public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type va * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1673,6 +1739,7 @@ public com.google.protobuf.ByteString getSessionBytes() { * *
        * Required. The transaction to use. Must be a read-write transaction.
    +   *
        * To protect against replays, single-use transactions are not supported. The
        * caller must either supply an existing transaction ID or begin a new
        * transaction.
    @@ -1693,6 +1760,7 @@ public boolean hasTransaction() {
        *
        * 
        * Required. The transaction to use. Must be a read-write transaction.
    +   *
        * To protect against replays, single-use transactions are not supported. The
        * caller must either supply an existing transaction ID or begin a new
        * transaction.
    @@ -1715,6 +1783,7 @@ public com.google.spanner.v1.TransactionSelector getTransaction() {
        *
        * 
        * Required. The transaction to use. Must be a read-write transaction.
    +   *
        * To protect against replays, single-use transactions are not supported. The
        * caller must either supply an existing transaction ID or begin a new
        * transaction.
    @@ -1743,6 +1812,7 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde
        * serially, such that the effects of statement `i` are visible to statement
        * `i+1`. Each statement must be a DML statement. Execution stops at the
        * first failed statement; the remaining statements are not executed.
    +   *
        * Callers must provide at least one statement.
        * 
    * @@ -1763,6 +1833,7 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -1783,6 +1854,7 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -1802,6 +1874,7 @@ public int getStatementsCount() { * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -1821,6 +1894,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -1843,6 +1917,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatem * Required. A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously @@ -2534,6 +2609,7 @@ public Builder setSessionBytes(com.google.protobuf.ByteString value) { * *
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2553,6 +2629,7 @@ public boolean hasTransaction() {
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2578,6 +2655,7 @@ public com.google.spanner.v1.TransactionSelector getTransaction() {
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2605,6 +2683,7 @@ public Builder setTransaction(com.google.spanner.v1.TransactionSelector value) {
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2630,6 +2709,7 @@ public Builder setTransaction(
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2660,6 +2740,7 @@ public Builder mergeTransaction(com.google.spanner.v1.TransactionSelector value)
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2684,6 +2765,7 @@ public Builder clearTransaction() {
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2703,6 +2785,7 @@ public com.google.spanner.v1.TransactionSelector.Builder getTransactionBuilder()
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2726,6 +2809,7 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde
          *
          * 
          * Required. The transaction to use. Must be a read-write transaction.
    +     *
          * To protect against replays, single-use transactions are not supported. The
          * caller must either supply an existing transaction ID or begin a new
          * transaction.
    @@ -2778,6 +2862,7 @@ private void ensureStatementsIsMutable() {
          * serially, such that the effects of statement `i` are visible to statement
          * `i+1`. Each statement must be a DML statement. Execution stops at the
          * first failed statement; the remaining statements are not executed.
    +     *
          * Callers must provide at least one statement.
          * 
    * @@ -2801,6 +2886,7 @@ private void ensureStatementsIsMutable() { * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2823,6 +2909,7 @@ public int getStatementsCount() { * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2845,6 +2932,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2874,6 +2962,7 @@ public Builder setStatements( * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2900,6 +2989,7 @@ public Builder setStatements( * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2928,6 +3018,7 @@ public Builder addStatements(com.google.spanner.v1.ExecuteBatchDmlRequest.Statem * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2957,6 +3048,7 @@ public Builder addStatements( * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -2983,6 +3075,7 @@ public Builder addStatements( * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3009,6 +3102,7 @@ public Builder addStatements( * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3036,6 +3130,7 @@ public Builder addAllStatements( * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3061,6 +3156,7 @@ public Builder clearStatements() { * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3086,6 +3182,7 @@ public Builder removeStatements(int index) { * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3105,6 +3202,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder getStateme * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3128,6 +3226,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatem * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3151,6 +3250,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatem * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3170,6 +3270,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStateme * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3191,6 +3292,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStateme * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -3228,6 +3330,7 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStateme * Required. A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously @@ -3249,6 +3352,7 @@ public long getSeqno() { * Required. A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously @@ -3274,6 +3378,7 @@ public Builder setSeqno(long value) { * Required. A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously 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 87364106697..b0ecb6ff7ca 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 @@ -57,6 +57,7 @@ public interface ExecuteBatchDmlRequestOrBuilder * *
        * Required. The transaction to use. Must be a read-write transaction.
    +   *
        * To protect against replays, single-use transactions are not supported. The
        * caller must either supply an existing transaction ID or begin a new
        * transaction.
    @@ -74,6 +75,7 @@ public interface ExecuteBatchDmlRequestOrBuilder
        *
        * 
        * Required. The transaction to use. Must be a read-write transaction.
    +   *
        * To protect against replays, single-use transactions are not supported. The
        * caller must either supply an existing transaction ID or begin a new
        * transaction.
    @@ -91,6 +93,7 @@ public interface ExecuteBatchDmlRequestOrBuilder
        *
        * 
        * Required. The transaction to use. Must be a read-write transaction.
    +   *
        * To protect against replays, single-use transactions are not supported. The
        * caller must either supply an existing transaction ID or begin a new
        * transaction.
    @@ -110,6 +113,7 @@ public interface ExecuteBatchDmlRequestOrBuilder
        * serially, such that the effects of statement `i` are visible to statement
        * `i+1`. Each statement must be a DML statement. Execution stops at the
        * first failed statement; the remaining statements are not executed.
    +   *
        * Callers must provide at least one statement.
        * 
    * @@ -126,6 +130,7 @@ public interface ExecuteBatchDmlRequestOrBuilder * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -142,6 +147,7 @@ public interface ExecuteBatchDmlRequestOrBuilder * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -158,6 +164,7 @@ public interface ExecuteBatchDmlRequestOrBuilder * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -175,6 +182,7 @@ public interface ExecuteBatchDmlRequestOrBuilder * serially, such that the effects of statement `i` are visible to statement * `i+1`. Each statement must be a DML statement. Execution stops at the * first failed statement; the remaining statements are not executed. + * * Callers must provide at least one statement. *
    * @@ -191,6 +199,7 @@ public interface ExecuteBatchDmlRequestOrBuilder * Required. A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously 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 3e7163fe1be..b467bf5feb0 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 @@ -26,16 +26,22 @@ * of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML statement that has successfully * executed, in the same order as the statements in the request. If a statement * fails, the status in the response body identifies the cause of the failure. + * * To check for DML statements that failed, use the following approach: + * * 1. Check the status in the response message. The [google.rpc.Code][google.rpc.Code] enum * value `OK` indicates that all statements were executed successfully. * 2. If the status was not `OK`, check the number of result sets in the * response. If the response contains `N` [ResultSet][google.spanner.v1.ResultSet] messages, then * statement `N+1` in the request failed. + * * Example 1: + * * * Request: 5 DML statements, all executed successfully. * * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the status `OK`. + * * Example 2: + * * * Request: 5 DML statements. The third statement has a syntax error. * * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax error (`INVALID_ARGUMENT`) * status. The number of [ResultSet][google.spanner.v1.ResultSet] messages indicates that the third @@ -64,11 +70,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ExecuteBatchDmlResponse(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor; @@ -96,6 +97,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -114,6 +116,7 @@ public java.util.List getResultSetsList() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -133,6 +136,7 @@ public java.util.List getResultSetsList() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -151,6 +155,7 @@ public int getResultSetsCount() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -169,6 +174,7 @@ public com.google.spanner.v1.ResultSet getResultSets(int index) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -412,16 +418,22 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML statement that has successfully * executed, in the same order as the statements in the request. If a statement * fails, the status in the response body identifies the cause of the failure. + * * To check for DML statements that failed, use the following approach: + * * 1. Check the status in the response message. The [google.rpc.Code][google.rpc.Code] enum * value `OK` indicates that all statements were executed successfully. * 2. If the status was not `OK`, check the number of result sets in the * response. If the response contains `N` [ResultSet][google.spanner.v1.ResultSet] messages, then * statement `N+1` in the request failed. + * * Example 1: + * * * Request: 5 DML statements, all executed successfully. * * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the status `OK`. + * * Example 2: + * * * Request: 5 DML statements. The third statement has a syntax error. * * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax error (`INVALID_ARGUMENT`) * status. The number of [ResultSet][google.spanner.v1.ResultSet] messages indicates that the third @@ -688,6 +700,7 @@ private void ensureResultSetsIsMutable() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -709,6 +722,7 @@ public java.util.List getResultSetsList() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -730,6 +744,7 @@ public int getResultSetsCount() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -751,6 +766,7 @@ public com.google.spanner.v1.ResultSet getResultSets(int index) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -778,6 +794,7 @@ public Builder setResultSets(int index, com.google.spanner.v1.ResultSet value) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -803,6 +820,7 @@ public Builder setResultSets( * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -830,6 +848,7 @@ public Builder addResultSets(com.google.spanner.v1.ResultSet value) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -857,6 +876,7 @@ public Builder addResultSets(int index, com.google.spanner.v1.ResultSet value) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -881,6 +901,7 @@ public Builder addResultSets(com.google.spanner.v1.ResultSet.Builder builderForV * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -906,6 +927,7 @@ public Builder addResultSets( * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -931,6 +953,7 @@ public Builder addAllResultSets( * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -955,6 +978,7 @@ public Builder clearResultSets() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -979,6 +1003,7 @@ public Builder removeResultSets(int index) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -996,6 +1021,7 @@ public com.google.spanner.v1.ResultSet.Builder getResultSetsBuilder(int index) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -1017,6 +1043,7 @@ public com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -1039,6 +1066,7 @@ public com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -1057,6 +1085,7 @@ public com.google.spanner.v1.ResultSet.Builder addResultSetsBuilder() { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -1075,6 +1104,7 @@ public com.google.spanner.v1.ResultSet.Builder addResultSetsBuilder(int index) { * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    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 b2891c067a8..ac45d58c2fc 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 @@ -31,6 +31,7 @@ public interface ExecuteBatchDmlResponseOrBuilder * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -46,6 +47,7 @@ public interface ExecuteBatchDmlResponseOrBuilder * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -61,6 +63,7 @@ public interface ExecuteBatchDmlResponseOrBuilder * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -76,6 +79,7 @@ public interface ExecuteBatchDmlResponseOrBuilder * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    @@ -91,6 +95,7 @@ public interface ExecuteBatchDmlResponseOrBuilder * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain * the number of rows modified by the statement. + * * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. *
    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 70f4c8219c2..8418e41cc38 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 @@ -52,11 +52,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ExecuteSqlRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_ExecuteSqlRequest_descriptor; @@ -254,20 +249,26 @@ public interface QueryOptionsOrBuilder * *
          * An option to control the selection of optimizer version.
    +     *
          * This parameter allows individual queries to pick different query
          * optimizer versions.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the
          * latest supported query optimizer version. If not specified, Cloud Spanner
          * uses the optimizer version set at the database level options. Any other
          * positive integer (from the list of supported optimizer versions)
          * overrides the default optimizer version for query execution.
    +     *
          * The list of supported optimizer versions can be queried from
          * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +     *
          * Executing a SQL statement with an invalid optimizer version fails with
          * an `INVALID_ARGUMENT` error.
    +     *
          * See
          * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
          * for more information on managing the query optimizer.
    +     *
          * The `optimizer_version` statement hint has precedence over this setting.
          * 
    * @@ -281,20 +282,26 @@ public interface QueryOptionsOrBuilder * *
          * An option to control the selection of optimizer version.
    +     *
          * This parameter allows individual queries to pick different query
          * optimizer versions.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the
          * latest supported query optimizer version. If not specified, Cloud Spanner
          * uses the optimizer version set at the database level options. Any other
          * positive integer (from the list of supported optimizer versions)
          * overrides the default optimizer version for query execution.
    +     *
          * The list of supported optimizer versions can be queried from
          * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +     *
          * Executing a SQL statement with an invalid optimizer version fails with
          * an `INVALID_ARGUMENT` error.
    +     *
          * See
          * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
          * for more information on managing the query optimizer.
    +     *
          * The `optimizer_version` statement hint has precedence over this setting.
          * 
    * @@ -309,20 +316,26 @@ public interface QueryOptionsOrBuilder * *
          * An option to control the selection of optimizer statistics package.
    +     *
          * This parameter allows individual queries to use a different query
          * optimizer statistics package.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the latest
          * generated statistics package. If not specified, Cloud Spanner uses
          * the statistics package set at the database level options, or the latest
          * package if the database option is not set.
    +     *
          * The statistics package requested by the query has to be exempt from
          * garbage collection. This can be achieved with the following DDL
          * statement:
    +     *
          * ```
          * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
          * ```
    +     *
          * The list of available statistics packages can be queried from
          * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +     *
          * Executing a SQL statement with an invalid optimizer statistics package
          * or with a statistics package that allows garbage collection fails with
          * an `INVALID_ARGUMENT` error.
    @@ -338,20 +351,26 @@ public interface QueryOptionsOrBuilder
          *
          * 
          * An option to control the selection of optimizer statistics package.
    +     *
          * This parameter allows individual queries to use a different query
          * optimizer statistics package.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the latest
          * generated statistics package. If not specified, Cloud Spanner uses
          * the statistics package set at the database level options, or the latest
          * package if the database option is not set.
    +     *
          * The statistics package requested by the query has to be exempt from
          * garbage collection. This can be achieved with the following DDL
          * statement:
    +     *
          * ```
          * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
          * ```
    +     *
          * The list of available statistics packages can be queried from
          * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +     *
          * Executing a SQL statement with an invalid optimizer statistics package
          * or with a statistics package that allows garbage collection fails with
          * an `INVALID_ARGUMENT` error.
    @@ -393,11 +412,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
           return new QueryOptions();
         }
     
    -    @java.lang.Override
    -    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -      return this.unknownFields;
    -    }
    -
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
           return com.google.spanner.v1.SpannerProto
               .internal_static_google_spanner_v1_ExecuteSqlRequest_QueryOptions_descriptor;
    @@ -422,20 +436,26 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
          *
          * 
          * An option to control the selection of optimizer version.
    +     *
          * This parameter allows individual queries to pick different query
          * optimizer versions.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the
          * latest supported query optimizer version. If not specified, Cloud Spanner
          * uses the optimizer version set at the database level options. Any other
          * positive integer (from the list of supported optimizer versions)
          * overrides the default optimizer version for query execution.
    +     *
          * The list of supported optimizer versions can be queried from
          * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +     *
          * Executing a SQL statement with an invalid optimizer version fails with
          * an `INVALID_ARGUMENT` error.
    +     *
          * See
          * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
          * for more information on managing the query optimizer.
    +     *
          * The `optimizer_version` statement hint has precedence over this setting.
          * 
    * @@ -460,20 +480,26 @@ public java.lang.String getOptimizerVersion() { * *
          * An option to control the selection of optimizer version.
    +     *
          * This parameter allows individual queries to pick different query
          * optimizer versions.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the
          * latest supported query optimizer version. If not specified, Cloud Spanner
          * uses the optimizer version set at the database level options. Any other
          * positive integer (from the list of supported optimizer versions)
          * overrides the default optimizer version for query execution.
    +     *
          * The list of supported optimizer versions can be queried from
          * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +     *
          * Executing a SQL statement with an invalid optimizer version fails with
          * an `INVALID_ARGUMENT` error.
    +     *
          * See
          * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
          * for more information on managing the query optimizer.
    +     *
          * The `optimizer_version` statement hint has precedence over this setting.
          * 
    * @@ -503,20 +529,26 @@ public com.google.protobuf.ByteString getOptimizerVersionBytes() { * *
          * An option to control the selection of optimizer statistics package.
    +     *
          * This parameter allows individual queries to use a different query
          * optimizer statistics package.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the latest
          * generated statistics package. If not specified, Cloud Spanner uses
          * the statistics package set at the database level options, or the latest
          * package if the database option is not set.
    +     *
          * The statistics package requested by the query has to be exempt from
          * garbage collection. This can be achieved with the following DDL
          * statement:
    +     *
          * ```
          * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
          * ```
    +     *
          * The list of available statistics packages can be queried from
          * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +     *
          * Executing a SQL statement with an invalid optimizer statistics package
          * or with a statistics package that allows garbage collection fails with
          * an `INVALID_ARGUMENT` error.
    @@ -543,20 +575,26 @@ public java.lang.String getOptimizerStatisticsPackage() {
          *
          * 
          * An option to control the selection of optimizer statistics package.
    +     *
          * This parameter allows individual queries to use a different query
          * optimizer statistics package.
    +     *
          * Specifying `latest` as a value instructs Cloud Spanner to use the latest
          * generated statistics package. If not specified, Cloud Spanner uses
          * the statistics package set at the database level options, or the latest
          * package if the database option is not set.
    +     *
          * The statistics package requested by the query has to be exempt from
          * garbage collection. This can be achieved with the following DDL
          * statement:
    +     *
          * ```
          * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
          * ```
    +     *
          * The list of available statistics packages can be queried from
          * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +     *
          * Executing a SQL statement with an invalid optimizer statistics package
          * or with a statistics package that allows garbage collection fails with
          * an `INVALID_ARGUMENT` error.
    @@ -959,20 +997,26 @@ public Builder mergeFrom(
            *
            * 
            * An option to control the selection of optimizer version.
    +       *
            * This parameter allows individual queries to pick different query
            * optimizer versions.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the
            * latest supported query optimizer version. If not specified, Cloud Spanner
            * uses the optimizer version set at the database level options. Any other
            * positive integer (from the list of supported optimizer versions)
            * overrides the default optimizer version for query execution.
    +       *
            * The list of supported optimizer versions can be queried from
            * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +       *
            * Executing a SQL statement with an invalid optimizer version fails with
            * an `INVALID_ARGUMENT` error.
    +       *
            * See
            * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
            * for more information on managing the query optimizer.
    +       *
            * The `optimizer_version` statement hint has precedence over this setting.
            * 
    * @@ -996,20 +1040,26 @@ public java.lang.String getOptimizerVersion() { * *
            * An option to control the selection of optimizer version.
    +       *
            * This parameter allows individual queries to pick different query
            * optimizer versions.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the
            * latest supported query optimizer version. If not specified, Cloud Spanner
            * uses the optimizer version set at the database level options. Any other
            * positive integer (from the list of supported optimizer versions)
            * overrides the default optimizer version for query execution.
    +       *
            * The list of supported optimizer versions can be queried from
            * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +       *
            * Executing a SQL statement with an invalid optimizer version fails with
            * an `INVALID_ARGUMENT` error.
    +       *
            * See
            * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
            * for more information on managing the query optimizer.
    +       *
            * The `optimizer_version` statement hint has precedence over this setting.
            * 
    * @@ -1033,20 +1083,26 @@ public com.google.protobuf.ByteString getOptimizerVersionBytes() { * *
            * An option to control the selection of optimizer version.
    +       *
            * This parameter allows individual queries to pick different query
            * optimizer versions.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the
            * latest supported query optimizer version. If not specified, Cloud Spanner
            * uses the optimizer version set at the database level options. Any other
            * positive integer (from the list of supported optimizer versions)
            * overrides the default optimizer version for query execution.
    +       *
            * The list of supported optimizer versions can be queried from
            * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +       *
            * Executing a SQL statement with an invalid optimizer version fails with
            * an `INVALID_ARGUMENT` error.
    +       *
            * See
            * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
            * for more information on managing the query optimizer.
    +       *
            * The `optimizer_version` statement hint has precedence over this setting.
            * 
    * @@ -1069,20 +1125,26 @@ public Builder setOptimizerVersion(java.lang.String value) { * *
            * An option to control the selection of optimizer version.
    +       *
            * This parameter allows individual queries to pick different query
            * optimizer versions.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the
            * latest supported query optimizer version. If not specified, Cloud Spanner
            * uses the optimizer version set at the database level options. Any other
            * positive integer (from the list of supported optimizer versions)
            * overrides the default optimizer version for query execution.
    +       *
            * The list of supported optimizer versions can be queried from
            * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +       *
            * Executing a SQL statement with an invalid optimizer version fails with
            * an `INVALID_ARGUMENT` error.
    +       *
            * See
            * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
            * for more information on managing the query optimizer.
    +       *
            * The `optimizer_version` statement hint has precedence over this setting.
            * 
    * @@ -1101,20 +1163,26 @@ public Builder clearOptimizerVersion() { * *
            * An option to control the selection of optimizer version.
    +       *
            * This parameter allows individual queries to pick different query
            * optimizer versions.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the
            * latest supported query optimizer version. If not specified, Cloud Spanner
            * uses the optimizer version set at the database level options. Any other
            * positive integer (from the list of supported optimizer versions)
            * overrides the default optimizer version for query execution.
    +       *
            * The list of supported optimizer versions can be queried from
            * SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS.
    +       *
            * Executing a SQL statement with an invalid optimizer version fails with
            * an `INVALID_ARGUMENT` error.
    +       *
            * See
            * https://cloud.google.com/spanner/docs/query-optimizer/manage-query-optimizer
            * for more information on managing the query optimizer.
    +       *
            * The `optimizer_version` statement hint has precedence over this setting.
            * 
    * @@ -1140,20 +1208,26 @@ public Builder setOptimizerVersionBytes(com.google.protobuf.ByteString value) { * *
            * An option to control the selection of optimizer statistics package.
    +       *
            * This parameter allows individual queries to use a different query
            * optimizer statistics package.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the latest
            * generated statistics package. If not specified, Cloud Spanner uses
            * the statistics package set at the database level options, or the latest
            * package if the database option is not set.
    +       *
            * The statistics package requested by the query has to be exempt from
            * garbage collection. This can be achieved with the following DDL
            * statement:
    +       *
            * ```
            * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
            * ```
    +       *
            * The list of available statistics packages can be queried from
            * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +       *
            * Executing a SQL statement with an invalid optimizer statistics package
            * or with a statistics package that allows garbage collection fails with
            * an `INVALID_ARGUMENT` error.
    @@ -1179,20 +1253,26 @@ public java.lang.String getOptimizerStatisticsPackage() {
            *
            * 
            * An option to control the selection of optimizer statistics package.
    +       *
            * This parameter allows individual queries to use a different query
            * optimizer statistics package.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the latest
            * generated statistics package. If not specified, Cloud Spanner uses
            * the statistics package set at the database level options, or the latest
            * package if the database option is not set.
    +       *
            * The statistics package requested by the query has to be exempt from
            * garbage collection. This can be achieved with the following DDL
            * statement:
    +       *
            * ```
            * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
            * ```
    +       *
            * The list of available statistics packages can be queried from
            * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +       *
            * Executing a SQL statement with an invalid optimizer statistics package
            * or with a statistics package that allows garbage collection fails with
            * an `INVALID_ARGUMENT` error.
    @@ -1218,20 +1298,26 @@ public com.google.protobuf.ByteString getOptimizerStatisticsPackageBytes() {
            *
            * 
            * An option to control the selection of optimizer statistics package.
    +       *
            * This parameter allows individual queries to use a different query
            * optimizer statistics package.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the latest
            * generated statistics package. If not specified, Cloud Spanner uses
            * the statistics package set at the database level options, or the latest
            * package if the database option is not set.
    +       *
            * The statistics package requested by the query has to be exempt from
            * garbage collection. This can be achieved with the following DDL
            * statement:
    +       *
            * ```
            * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
            * ```
    +       *
            * The list of available statistics packages can be queried from
            * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +       *
            * Executing a SQL statement with an invalid optimizer statistics package
            * or with a statistics package that allows garbage collection fails with
            * an `INVALID_ARGUMENT` error.
    @@ -1256,20 +1342,26 @@ public Builder setOptimizerStatisticsPackage(java.lang.String value) {
            *
            * 
            * An option to control the selection of optimizer statistics package.
    +       *
            * This parameter allows individual queries to use a different query
            * optimizer statistics package.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the latest
            * generated statistics package. If not specified, Cloud Spanner uses
            * the statistics package set at the database level options, or the latest
            * package if the database option is not set.
    +       *
            * The statistics package requested by the query has to be exempt from
            * garbage collection. This can be achieved with the following DDL
            * statement:
    +       *
            * ```
            * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
            * ```
    +       *
            * The list of available statistics packages can be queried from
            * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +       *
            * Executing a SQL statement with an invalid optimizer statistics package
            * or with a statistics package that allows garbage collection fails with
            * an `INVALID_ARGUMENT` error.
    @@ -1290,20 +1382,26 @@ public Builder clearOptimizerStatisticsPackage() {
            *
            * 
            * An option to control the selection of optimizer statistics package.
    +       *
            * This parameter allows individual queries to use a different query
            * optimizer statistics package.
    +       *
            * Specifying `latest` as a value instructs Cloud Spanner to use the latest
            * generated statistics package. If not specified, Cloud Spanner uses
            * the statistics package set at the database level options, or the latest
            * package if the database option is not set.
    +       *
            * The statistics package requested by the query has to be exempt from
            * garbage collection. This can be achieved with the following DDL
            * statement:
    +       *
            * ```
            * ALTER STATISTICS <package_name> SET OPTIONS (allow_gc=false)
            * ```
    +       *
            * The list of available statistics packages can be queried from
            * `INFORMATION_SCHEMA.SPANNER_STATISTICS`.
    +       *
            * Executing a SQL statement with an invalid optimizer statistics package
            * or with a statistics package that allows garbage collection fails with
            * an `INVALID_ARGUMENT` error.
    @@ -1451,11 +1549,14 @@ public com.google.protobuf.ByteString getSessionBytes() {
        *
        * 
        * The transaction to use.
    +   *
        * For queries, if none is provided, the default is a temporary read-only
        * transaction with strong concurrency.
    +   *
        * Standard DML statements require a read-write transaction. To protect
        * against replays, single-use transactions are not supported.  The caller
        * must either supply an existing transaction ID or begin a new transaction.
    +   *
        * Partitioned DML requires an existing Partitioned DML transaction ID.
        * 
    * @@ -1472,11 +1573,14 @@ public boolean hasTransaction() { * *
        * The transaction to use.
    +   *
        * For queries, if none is provided, the default is a temporary read-only
        * transaction with strong concurrency.
    +   *
        * Standard DML statements require a read-write transaction. To protect
        * against replays, single-use transactions are not supported.  The caller
        * must either supply an existing transaction ID or begin a new transaction.
    +   *
        * Partitioned DML requires an existing Partitioned DML transaction ID.
        * 
    * @@ -1495,11 +1599,14 @@ public com.google.spanner.v1.TransactionSelector getTransaction() { * *
        * The transaction to use.
    +   *
        * For queries, if none is provided, the default is a temporary read-only
        * transaction with strong concurrency.
    +   *
        * Standard DML statements require a read-write transaction. To protect
        * against replays, single-use transactions are not supported.  The caller
        * must either supply an existing transaction ID or begin a new transaction.
    +   *
        * Partitioned DML requires an existing Partitioned DML transaction ID.
        * 
    * @@ -1570,13 +1677,17 @@ public com.google.protobuf.ByteString getSqlBytes() { * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names must conform
        * to the naming requirements of identifiers as specified at
        * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -1593,13 +1704,17 @@ public boolean hasParams() { * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names must conform
        * to the naming requirements of identifiers as specified at
        * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -1616,13 +1731,17 @@ public com.google.protobuf.Struct getParams() { * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names must conform
        * to the naming requirements of identifiers as specified at
        * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -1669,6 +1788,7 @@ public int getParamTypesCount() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1697,6 +1817,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1716,6 +1837,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1743,6 +1865,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1856,10 +1979,12 @@ public com.google.protobuf.ByteString getPartitionToken() { * A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously * handled requests will yield the same response as the first execution. + * * Required for DML statements. Ignored for queries. *
    * @@ -1980,6 +2105,7 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( *
        * If this is for a partitioned query and this field is set to `true`, the
        * request will be executed via Spanner independent compute resources.
    +   *
        * If the field is set to `true` but the request does not set
        * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
        * 
    @@ -2779,11 +2905,14 @@ public Builder setSessionBytes(com.google.protobuf.ByteString value) { * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2799,11 +2928,14 @@ public boolean hasTransaction() { * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2825,11 +2957,14 @@ public com.google.spanner.v1.TransactionSelector getTransaction() { * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2853,11 +2988,14 @@ public Builder setTransaction(com.google.spanner.v1.TransactionSelector value) { * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2879,11 +3017,14 @@ public Builder setTransaction( * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2910,11 +3051,14 @@ public Builder mergeTransaction(com.google.spanner.v1.TransactionSelector value) * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2935,11 +3079,14 @@ public Builder clearTransaction() { * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2955,11 +3102,14 @@ public com.google.spanner.v1.TransactionSelector.Builder getTransactionBuilder() * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -2979,11 +3129,14 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * *
          * The transaction to use.
    +     *
          * For queries, if none is provided, the default is a temporary read-only
          * transaction with strong concurrency.
    +     *
          * Standard DML statements require a read-write transaction. To protect
          * against replays, single-use transactions are not supported.  The caller
          * must either supply an existing transaction ID or begin a new transaction.
    +     *
          * Partitioned DML requires an existing Partitioned DML transaction ID.
          * 
    * @@ -3123,13 +3276,17 @@ public Builder setSqlBytes(com.google.protobuf.ByteString value) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3145,13 +3302,17 @@ public boolean hasParams() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3171,13 +3332,17 @@ public com.google.protobuf.Struct getParams() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3201,13 +3366,17 @@ public Builder setParams(com.google.protobuf.Struct value) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3228,13 +3397,17 @@ public Builder setParams(com.google.protobuf.Struct.Builder builderForValue) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3261,13 +3434,17 @@ public Builder mergeParams(com.google.protobuf.Struct value) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3288,13 +3465,17 @@ public Builder clearParams() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3310,13 +3491,17 @@ public com.google.protobuf.Struct.Builder getParamsBuilder() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3334,13 +3519,17 @@ public com.google.protobuf.StructOrBuilder getParamsOrBuilder() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names must conform
          * to the naming requirements of identifiers as specified at
          * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -3398,6 +3587,7 @@ public int getParamTypesCount() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3426,6 +3616,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3445,6 +3636,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3472,6 +3664,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3505,6 +3698,7 @@ public Builder clearParamTypes() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3533,6 +3727,7 @@ public java.util.Map getMutablePar * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3559,6 +3754,7 @@ public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type va * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -3818,10 +4014,12 @@ public Builder clearPartitionToken() { * A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously * handled requests will yield the same response as the first execution. + * * Required for DML statements. Ignored for queries. *
    * @@ -3840,10 +4038,12 @@ public long getSeqno() { * A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously * handled requests will yield the same response as the first execution. + * * Required for DML statements. Ignored for queries. *
    * @@ -3866,10 +4066,12 @@ public Builder setSeqno(long value) { * A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously * handled requests will yield the same response as the first execution. + * * Required for DML statements. Ignored for queries. *
    * @@ -4260,6 +4462,7 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( *
          * If this is for a partitioned query and this field is set to `true`, the
          * request will be executed via Spanner independent compute resources.
    +     *
          * If the field is set to `true` but the request does not set
          * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
          * 
    @@ -4278,6 +4481,7 @@ public boolean getDataBoostEnabled() { *
          * If this is for a partitioned query and this field is set to `true`, the
          * request will be executed via Spanner independent compute resources.
    +     *
          * If the field is set to `true` but the request does not set
          * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
          * 
    @@ -4300,6 +4504,7 @@ public Builder setDataBoostEnabled(boolean value) { *
          * If this is for a partitioned query and this field is set to `true`, the
          * request will be executed via Spanner independent compute resources.
    +     *
          * If the field is set to `true` but the request does not set
          * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
          * 
    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 832c2f3c503..1bfb3f43749 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 @@ -57,11 +57,14 @@ public interface ExecuteSqlRequestOrBuilder * *
        * The transaction to use.
    +   *
        * For queries, if none is provided, the default is a temporary read-only
        * transaction with strong concurrency.
    +   *
        * Standard DML statements require a read-write transaction. To protect
        * against replays, single-use transactions are not supported.  The caller
        * must either supply an existing transaction ID or begin a new transaction.
    +   *
        * Partitioned DML requires an existing Partitioned DML transaction ID.
        * 
    * @@ -75,11 +78,14 @@ public interface ExecuteSqlRequestOrBuilder * *
        * The transaction to use.
    +   *
        * For queries, if none is provided, the default is a temporary read-only
        * transaction with strong concurrency.
    +   *
        * Standard DML statements require a read-write transaction. To protect
        * against replays, single-use transactions are not supported.  The caller
        * must either supply an existing transaction ID or begin a new transaction.
    +   *
        * Partitioned DML requires an existing Partitioned DML transaction ID.
        * 
    * @@ -93,11 +99,14 @@ public interface ExecuteSqlRequestOrBuilder * *
        * The transaction to use.
    +   *
        * For queries, if none is provided, the default is a temporary read-only
        * transaction with strong concurrency.
    +   *
        * Standard DML statements require a read-write transaction. To protect
        * against replays, single-use transactions are not supported.  The caller
        * must either supply an existing transaction ID or begin a new transaction.
    +   *
        * Partitioned DML requires an existing Partitioned DML transaction ID.
        * 
    * @@ -135,13 +144,17 @@ public interface ExecuteSqlRequestOrBuilder * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names must conform
        * to the naming requirements of identifiers as specified at
        * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -155,13 +168,17 @@ public interface ExecuteSqlRequestOrBuilder * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names must conform
        * to the naming requirements of identifiers as specified at
        * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -175,13 +192,17 @@ public interface ExecuteSqlRequestOrBuilder * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names must conform
        * to the naming requirements of identifiers as specified at
        * https://cloud.google.com/spanner/docs/lexical#identifiers.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -196,6 +217,7 @@ public interface ExecuteSqlRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -212,6 +234,7 @@ public interface ExecuteSqlRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -231,6 +254,7 @@ public interface ExecuteSqlRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -247,6 +271,7 @@ public interface ExecuteSqlRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -267,6 +292,7 @@ com.google.spanner.v1.Type getParamTypesOrDefault( * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL statement parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -347,10 +373,12 @@ com.google.spanner.v1.Type getParamTypesOrDefault( * A per-transaction sequence number used to identify this request. This field * makes each request idempotent such that if the request is received multiple * times, at most one will succeed. + * * The sequence number must be monotonically increasing within the * transaction. If a request arrives for the first time with an out-of-order * sequence number, the transaction may be aborted. Replays of previously * handled requests will yield the same response as the first execution. + * * Required for DML statements. Ignored for queries. *
    * @@ -436,6 +464,7 @@ com.google.spanner.v1.Type getParamTypesOrDefault( *
        * If this is for a partitioned query and this field is set to `true`, the
        * request will be executed via Spanner independent compute resources.
    +   *
        * If the field is set to `true` but the request does not set
        * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
        * 
    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 cef307ed07e..0a78d665a60 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new GetSessionRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_GetSessionRequest_descriptor; 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 2848ab4bdd3..6eb2bd0e2ac 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 @@ -23,64 +23,91 @@ * *
      * KeyRange represents a range of rows in a table or index.
    + *
      * A range has a start key and an end key. These keys can be open or
      * closed, indicating if the range includes rows with that key.
    + *
      * Keys are represented by lists, where the ith value in the list
      * corresponds to the ith component of the table or index primary key.
      * Individual values are encoded as described
      * [here][google.spanner.v1.TypeCode].
    + *
      * For example, consider the following table definition:
    + *
      *     CREATE TABLE UserEvents (
      *       UserName STRING(MAX),
      *       EventDate STRING(10)
      *     ) PRIMARY KEY(UserName, EventDate);
    + *
      * The following keys name rows in this table:
    + *
      *     ["Bob", "2014-09-23"]
      *     ["Alfred", "2015-06-12"]
    + *
      * Since the `UserEvents` table's `PRIMARY KEY` clause names two
      * columns, each `UserEvents` key has two elements; the first is the
      * `UserName`, and the second is the `EventDate`.
    + *
      * Key ranges with multiple components are interpreted
      * lexicographically by component using the table or index key's declared
      * sort order. For example, the following range returns all events for
      * user `"Bob"` that occurred in the year 2015:
    + *
      *     "start_closed": ["Bob", "2015-01-01"]
      *     "end_closed": ["Bob", "2015-12-31"]
    + *
      * Start and end keys can omit trailing key components. This affects the
      * inclusion and exclusion of rows that exactly match the provided key
      * components: if the key is closed, then rows that exactly match the
      * provided components are included; if the key is open, then rows
      * that exactly match are not included.
    + *
      * For example, the following range includes all events for `"Bob"` that
      * occurred during and after the year 2000:
    + *
      *     "start_closed": ["Bob", "2000-01-01"]
      *     "end_closed": ["Bob"]
    + *
      * The next example retrieves all events for `"Bob"`:
    + *
      *     "start_closed": ["Bob"]
      *     "end_closed": ["Bob"]
    + *
      * To retrieve events before the year 2000:
    + *
      *     "start_closed": ["Bob"]
      *     "end_open": ["Bob", "2000-01-01"]
    + *
      * The following range includes all rows in the table:
    + *
      *     "start_closed": []
      *     "end_closed": []
    + *
      * This range returns all users whose `UserName` begins with any
      * character from A to C:
    + *
      *     "start_closed": ["A"]
      *     "end_open": ["D"]
    + *
      * This range returns all users whose `UserName` begins with B:
    + *
      *     "start_closed": ["B"]
      *     "end_open": ["C"]
    + *
      * Key ranges honor column sort order. For example, suppose a table is
      * defined as follows:
    + *
      *     CREATE TABLE DescendingSortedTable {
      *       Key INT64,
      *       ...
      *     ) PRIMARY KEY(Key DESC);
    + *
      * The following range retrieves all rows with key values between 1
      * and 100 inclusive:
    + *
      *     "start_closed": ["100"]
      *     "end_closed": ["1"]
    + *
      * Note that 100 is passed as the start, and 1 is passed as the end,
      * because `Key` is a descending column in the schema.
      * 
    @@ -105,11 +132,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new KeyRange(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.KeysProto.internal_static_google_spanner_v1_KeyRange_descriptor; } @@ -124,6 +146,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { } private int startKeyTypeCase_ = 0; + + @SuppressWarnings("serial") private java.lang.Object startKeyType_; public enum StartKeyTypeCase @@ -171,6 +195,8 @@ public StartKeyTypeCase getStartKeyTypeCase() { } private int endKeyTypeCase_ = 0; + + @SuppressWarnings("serial") private java.lang.Object endKeyType_; public enum EndKeyTypeCase @@ -664,64 +690,91 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * *
        * KeyRange represents a range of rows in a table or index.
    +   *
        * A range has a start key and an end key. These keys can be open or
        * closed, indicating if the range includes rows with that key.
    +   *
        * Keys are represented by lists, where the ith value in the list
        * corresponds to the ith component of the table or index primary key.
        * Individual values are encoded as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * For example, consider the following table definition:
    +   *
        *     CREATE TABLE UserEvents (
        *       UserName STRING(MAX),
        *       EventDate STRING(10)
        *     ) PRIMARY KEY(UserName, EventDate);
    +   *
        * The following keys name rows in this table:
    +   *
        *     ["Bob", "2014-09-23"]
        *     ["Alfred", "2015-06-12"]
    +   *
        * Since the `UserEvents` table's `PRIMARY KEY` clause names two
        * columns, each `UserEvents` key has two elements; the first is the
        * `UserName`, and the second is the `EventDate`.
    +   *
        * Key ranges with multiple components are interpreted
        * lexicographically by component using the table or index key's declared
        * sort order. For example, the following range returns all events for
        * user `"Bob"` that occurred in the year 2015:
    +   *
        *     "start_closed": ["Bob", "2015-01-01"]
        *     "end_closed": ["Bob", "2015-12-31"]
    +   *
        * Start and end keys can omit trailing key components. This affects the
        * inclusion and exclusion of rows that exactly match the provided key
        * components: if the key is closed, then rows that exactly match the
        * provided components are included; if the key is open, then rows
        * that exactly match are not included.
    +   *
        * For example, the following range includes all events for `"Bob"` that
        * occurred during and after the year 2000:
    +   *
        *     "start_closed": ["Bob", "2000-01-01"]
        *     "end_closed": ["Bob"]
    +   *
        * The next example retrieves all events for `"Bob"`:
    +   *
        *     "start_closed": ["Bob"]
        *     "end_closed": ["Bob"]
    +   *
        * To retrieve events before the year 2000:
    +   *
        *     "start_closed": ["Bob"]
        *     "end_open": ["Bob", "2000-01-01"]
    +   *
        * The following range includes all rows in the table:
    +   *
        *     "start_closed": []
        *     "end_closed": []
    +   *
        * This range returns all users whose `UserName` begins with any
        * character from A to C:
    +   *
        *     "start_closed": ["A"]
        *     "end_open": ["D"]
    +   *
        * This range returns all users whose `UserName` begins with B:
    +   *
        *     "start_closed": ["B"]
        *     "end_open": ["C"]
    +   *
        * Key ranges honor column sort order. For example, suppose a table is
        * defined as follows:
    +   *
        *     CREATE TABLE DescendingSortedTable {
        *       Key INT64,
        *       ...
        *     ) PRIMARY KEY(Key DESC);
    +   *
        * The following range retrieves all rows with key values between 1
        * and 100 inclusive:
    +   *
        *     "start_closed": ["100"]
        *     "end_closed": ["1"]
    +   *
        * Note that 100 is passed as the start, and 1 is passed as the end,
        * because `Key` is a descending column in the schema.
        * 
    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 c6a5e89496f..77a2acdc324 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 @@ -175,7 +175,7 @@ public interface KeyRangeOrBuilder */ com.google.protobuf.ListValueOrBuilder getEndOpenOrBuilder(); - public com.google.spanner.v1.KeyRange.StartKeyTypeCase getStartKeyTypeCase(); + com.google.spanner.v1.KeyRange.StartKeyTypeCase getStartKeyTypeCase(); - public com.google.spanner.v1.KeyRange.EndKeyTypeCase getEndKeyTypeCase(); + com.google.spanner.v1.KeyRange.EndKeyTypeCase getEndKeyTypeCase(); } 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 fca1f9f6fbb..d89ccd74fcb 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 @@ -25,6 +25,7 @@ * `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All * the keys are expected to be in the same table or index. The keys need * not be sorted in any particular way. + * * If the same key is specified multiple times in the set (for example * if two ranges, two keys, or a key and a range overlap), Cloud Spanner * behaves as if the key were only specified once. @@ -53,11 +54,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new KeySet(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.KeysProto.internal_static_google_spanner_v1_KeySet_descriptor; } @@ -438,6 +434,7 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All * the keys are expected to be in the same table or index. The keys need * not be sorted in any particular way. + * * If the same key is specified multiple times in the set (for example * if two ranges, two keys, or a key and a range overlap), Cloud Spanner * behaves as if the key were only specified once. 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 fb6f3e29725..067526b246f 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ListSessionsRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_ListSessionsRequest_descriptor; @@ -208,8 +203,11 @@ public com.google.protobuf.ByteString getPageTokenBytes() { *
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `labels.env:*` --> The session has the label "env".
        *   * `labels.env:dev` --> The session has the label "env" and the value of
        *                        the label contains the string "dev".
    @@ -237,8 +235,11 @@ public java.lang.String getFilter() {
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `labels.env:*` --> The session has the label "env".
        *   * `labels.env:dev` --> The session has the label "env" and the value of
        *                        the label contains the string "dev".
    @@ -967,8 +968,11 @@ public Builder setPageTokenBytes(com.google.protobuf.ByteString value) {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `labels.env:*` --> The session has the label "env".
          *   * `labels.env:dev` --> The session has the label "env" and the value of
          *                        the label contains the string "dev".
    @@ -995,8 +999,11 @@ public java.lang.String getFilter() {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `labels.env:*` --> The session has the label "env".
          *   * `labels.env:dev` --> The session has the label "env" and the value of
          *                        the label contains the string "dev".
    @@ -1023,8 +1030,11 @@ public com.google.protobuf.ByteString getFilterBytes() {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `labels.env:*` --> The session has the label "env".
          *   * `labels.env:dev` --> The session has the label "env" and the value of
          *                        the label contains the string "dev".
    @@ -1050,8 +1060,11 @@ public Builder setFilter(java.lang.String value) {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `labels.env:*` --> The session has the label "env".
          *   * `labels.env:dev` --> The session has the label "env" and the value of
          *                        the label contains the string "dev".
    @@ -1073,8 +1086,11 @@ public Builder clearFilter() {
          * 
          * An expression for filtering the results of the request. Filter rules are
          * case insensitive. The fields eligible for filtering are:
    +     *
          *   * `labels.key` where key is the name of a label
    +     *
          * Some examples of using filters are:
    +     *
          *   * `labels.env:*` --> The session has the label "env".
          *   * `labels.env:dev` --> The session has the label "env" and the value of
          *                        the label contains the string "dev".
    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 98c63809bbc..9588536d71d 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
    @@ -101,8 +101,11 @@ public interface ListSessionsRequestOrBuilder
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `labels.env:*` --> The session has the label "env".
        *   * `labels.env:dev` --> The session has the label "env" and the value of
        *                        the label contains the string "dev".
    @@ -119,8 +122,11 @@ public interface ListSessionsRequestOrBuilder
        * 
        * An expression for filtering the results of the request. Filter rules are
        * case insensitive. The fields eligible for filtering are:
    +   *
        *   * `labels.key` where key is the name of a label
    +   *
        * Some examples of using filters are:
    +   *
        *   * `labels.env:*` --> The session has the label "env".
        *   * `labels.env:dev` --> The session has the label "env" and the value of
        *                        the label contains the string "dev".
    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 204cd5a790f..820f48dcd7f 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ListSessionsResponse();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_ListSessionsResponse_descriptor;
    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 9c06e66de8f..96d2dcea3ea 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
    @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new Mutation();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.MutationProto
             .internal_static_google_spanner_v1_Mutation_descriptor;
    @@ -101,6 +96,7 @@ public interface WriteOrBuilder
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -116,6 +112,7 @@ public interface WriteOrBuilder
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -131,6 +128,7 @@ public interface WriteOrBuilder
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -147,6 +145,7 @@ public interface WriteOrBuilder
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -267,7 +266,7 @@ private Write(com.google.protobuf.GeneratedMessageV3.Builder builder) {
     
         private Write() {
           table_ = "";
    -      columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +      columns_ = com.google.protobuf.LazyStringArrayList.emptyList();
           values_ = java.util.Collections.emptyList();
         }
     
    @@ -277,11 +276,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
           return new Write();
         }
     
    -    @java.lang.Override
    -    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -      return this.unknownFields;
    -    }
    -
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
           return com.google.spanner.v1.MutationProto
               .internal_static_google_spanner_v1_Mutation_Write_descriptor;
    @@ -351,12 +345,14 @@ public com.google.protobuf.ByteString getTableBytes() {
         public static final int COLUMNS_FIELD_NUMBER = 2;
     
         @SuppressWarnings("serial")
    -    private com.google.protobuf.LazyStringList columns_;
    +    private com.google.protobuf.LazyStringArrayList columns_ =
    +        com.google.protobuf.LazyStringArrayList.emptyList();
         /**
          *
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -374,6 +370,7 @@ public com.google.protobuf.ProtocolStringList getColumnsList() {
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -391,6 +388,7 @@ public int getColumnsCount() {
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -409,6 +407,7 @@ public java.lang.String getColumns(int index) {
          *
          * 
          * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +     *
          * The list of columns must contain enough columns to allow
          * Cloud Spanner to derive values for all primary key columns in the
          * row(s) to be modified.
    @@ -757,8 +756,7 @@ public Builder clear() {
             super.clear();
             bitField0_ = 0;
             table_ = "";
    -        columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    -        bitField0_ = (bitField0_ & ~0x00000002);
    +        columns_ = com.google.protobuf.LazyStringArrayList.emptyList();
             if (valuesBuilder_ == null) {
               values_ = java.util.Collections.emptyList();
             } else {
    @@ -802,11 +800,6 @@ public com.google.spanner.v1.Mutation.Write buildPartial() {
           }
     
           private void buildPartialRepeatedFields(com.google.spanner.v1.Mutation.Write result) {
    -        if (((bitField0_ & 0x00000002) != 0)) {
    -          columns_ = columns_.getUnmodifiableView();
    -          bitField0_ = (bitField0_ & ~0x00000002);
    -        }
    -        result.columns_ = columns_;
             if (valuesBuilder_ == null) {
               if (((bitField0_ & 0x00000004) != 0)) {
                 values_ = java.util.Collections.unmodifiableList(values_);
    @@ -823,6 +816,10 @@ private void buildPartial0(com.google.spanner.v1.Mutation.Write result) {
             if (((from_bitField0_ & 0x00000001) != 0)) {
               result.table_ = table_;
             }
    +        if (((from_bitField0_ & 0x00000002) != 0)) {
    +          columns_.makeImmutable();
    +          result.columns_ = columns_;
    +        }
           }
     
           @java.lang.Override
    @@ -880,7 +877,7 @@ public Builder mergeFrom(com.google.spanner.v1.Mutation.Write other) {
             if (!other.columns_.isEmpty()) {
               if (columns_.isEmpty()) {
                 columns_ = other.columns_;
    -            bitField0_ = (bitField0_ & ~0x00000002);
    +            bitField0_ |= 0x00000002;
               } else {
                 ensureColumnsIsMutable();
                 columns_.addAll(other.columns_);
    @@ -1090,20 +1087,21 @@ public Builder setTableBytes(com.google.protobuf.ByteString value) {
             return this;
           }
     
    -      private com.google.protobuf.LazyStringList columns_ =
    -          com.google.protobuf.LazyStringArrayList.EMPTY;
    +      private com.google.protobuf.LazyStringArrayList columns_ =
    +          com.google.protobuf.LazyStringArrayList.emptyList();
     
           private void ensureColumnsIsMutable() {
    -        if (!((bitField0_ & 0x00000002) != 0)) {
    +        if (!columns_.isModifiable()) {
               columns_ = new com.google.protobuf.LazyStringArrayList(columns_);
    -          bitField0_ |= 0x00000002;
             }
    +        bitField0_ |= 0x00000002;
           }
           /**
            *
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1114,13 +1112,15 @@ private void ensureColumnsIsMutable() {
            * @return A list containing the columns.
            */
           public com.google.protobuf.ProtocolStringList getColumnsList() {
    -        return columns_.getUnmodifiableView();
    +        columns_.makeImmutable();
    +        return columns_;
           }
           /**
            *
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1138,6 +1138,7 @@ public int getColumnsCount() {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1156,6 +1157,7 @@ public java.lang.String getColumns(int index) {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1174,6 +1176,7 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1191,6 +1194,7 @@ public Builder setColumns(int index, java.lang.String value) {
             }
             ensureColumnsIsMutable();
             columns_.set(index, value);
    +        bitField0_ |= 0x00000002;
             onChanged();
             return this;
           }
    @@ -1199,6 +1203,7 @@ public Builder setColumns(int index, java.lang.String value) {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1215,6 +1220,7 @@ public Builder addColumns(java.lang.String value) {
             }
             ensureColumnsIsMutable();
             columns_.add(value);
    +        bitField0_ |= 0x00000002;
             onChanged();
             return this;
           }
    @@ -1223,6 +1229,7 @@ public Builder addColumns(java.lang.String value) {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1236,6 +1243,7 @@ public Builder addColumns(java.lang.String value) {
           public Builder addAllColumns(java.lang.Iterable values) {
             ensureColumnsIsMutable();
             com.google.protobuf.AbstractMessageLite.Builder.addAll(values, columns_);
    +        bitField0_ |= 0x00000002;
             onChanged();
             return this;
           }
    @@ -1244,6 +1252,7 @@ public Builder addAllColumns(java.lang.Iterable values) {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1254,8 +1263,9 @@ public Builder addAllColumns(java.lang.Iterable values) {
            * @return This builder for chaining.
            */
           public Builder clearColumns() {
    -        columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    +        columns_ = com.google.protobuf.LazyStringArrayList.emptyList();
             bitField0_ = (bitField0_ & ~0x00000002);
    +        ;
             onChanged();
             return this;
           }
    @@ -1264,6 +1274,7 @@ public Builder clearColumns() {
            *
            * 
            * The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written.
    +       *
            * The list of columns must contain enough columns to allow
            * Cloud Spanner to derive values for all primary key columns in the
            * row(s) to be modified.
    @@ -1281,6 +1292,7 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) {
             checkByteStringIsUtf8(value);
             ensureColumnsIsMutable();
             columns_.add(value);
    +        bitField0_ |= 0x00000002;
             onChanged();
             return this;
           }
    @@ -1930,11 +1942,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
           return new Delete();
         }
     
    -    @java.lang.Override
    -    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -      return this.unknownFields;
    -    }
    -
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
           return com.google.spanner.v1.MutationProto
               .internal_static_google_spanner_v1_Mutation_Delete_descriptor;
    @@ -2841,6 +2848,8 @@ public com.google.spanner.v1.Mutation.Delete getDefaultInstanceForType() {
       }
     
       private int operationCase_ = 0;
    +
    +  @SuppressWarnings("serial")
       private java.lang.Object operation_;
     
       public enum OperationCase
    @@ -3012,6 +3021,7 @@ public com.google.spanner.v1.Mutation.WriteOrBuilder getUpdateOrBuilder() {
        * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
        * its column values are overwritten with the ones provided. Any
        * column values not explicitly written are preserved.
    +   *
        * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
        * NULL` columns in the table must be given a value. This holds true
        * even when the row already exists and will therefore actually be updated.
    @@ -3032,6 +3042,7 @@ public boolean hasInsertOrUpdate() {
        * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
        * its column values are overwritten with the ones provided. Any
        * column values not explicitly written are preserved.
    +   *
        * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
        * NULL` columns in the table must be given a value. This holds true
        * even when the row already exists and will therefore actually be updated.
    @@ -3055,6 +3066,7 @@ public com.google.spanner.v1.Mutation.Write getInsertOrUpdate() {
        * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
        * its column values are overwritten with the ones provided. Any
        * column values not explicitly written are preserved.
    +   *
        * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
        * NULL` columns in the table must be given a value. This holds true
        * even when the row already exists and will therefore actually be updated.
    @@ -3079,6 +3091,7 @@ public com.google.spanner.v1.Mutation.WriteOrBuilder getInsertOrUpdateOrBuilder(
        * deleted, and the column values provided are inserted
        * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
        * explicitly written become `NULL`.
    +   *
        * In an interleaved table, if you create the child table with the
        * `ON DELETE CASCADE` annotation, then replacing a parent row
        * also deletes the child rows. Otherwise, you must delete the
    @@ -3101,6 +3114,7 @@ public boolean hasReplace() {
        * deleted, and the column values provided are inserted
        * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
        * explicitly written become `NULL`.
    +   *
        * In an interleaved table, if you create the child table with the
        * `ON DELETE CASCADE` annotation, then replacing a parent row
        * also deletes the child rows. Otherwise, you must delete the
    @@ -3126,6 +3140,7 @@ public com.google.spanner.v1.Mutation.Write getReplace() {
        * deleted, and the column values provided are inserted
        * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
        * explicitly written become `NULL`.
    +   *
        * In an interleaved table, if you create the child table with the
        * `ON DELETE CASCADE` annotation, then replacing a parent row
        * also deletes the child rows. Otherwise, you must delete the
    @@ -4154,6 +4169,7 @@ public com.google.spanner.v1.Mutation.WriteOrBuilder getUpdateOrBuilder() {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4174,6 +4190,7 @@ public boolean hasInsertOrUpdate() {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4204,6 +4221,7 @@ public com.google.spanner.v1.Mutation.Write getInsertOrUpdate() {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4231,6 +4249,7 @@ public Builder setInsertOrUpdate(com.google.spanner.v1.Mutation.Write value) {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4255,6 +4274,7 @@ public Builder setInsertOrUpdate(com.google.spanner.v1.Mutation.Write.Builder bu
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4292,6 +4312,7 @@ public Builder mergeInsertOrUpdate(com.google.spanner.v1.Mutation.Write value) {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4322,6 +4343,7 @@ public Builder clearInsertOrUpdate() {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4339,6 +4361,7 @@ public com.google.spanner.v1.Mutation.Write.Builder getInsertOrUpdateBuilder() {
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4364,6 +4387,7 @@ public com.google.spanner.v1.Mutation.WriteOrBuilder getInsertOrUpdateOrBuilder(
          * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
          * its column values are overwritten with the ones provided. Any
          * column values not explicitly written are preserved.
    +     *
          * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
          * NULL` columns in the table must be given a value. This holds true
          * even when the row already exists and will therefore actually be updated.
    @@ -4408,6 +4432,7 @@ public com.google.spanner.v1.Mutation.WriteOrBuilder getInsertOrUpdateOrBuilder(
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4430,6 +4455,7 @@ public boolean hasReplace() {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4462,6 +4488,7 @@ public com.google.spanner.v1.Mutation.Write getReplace() {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4491,6 +4518,7 @@ public Builder setReplace(com.google.spanner.v1.Mutation.Write value) {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4517,6 +4545,7 @@ public Builder setReplace(com.google.spanner.v1.Mutation.Write.Builder builderFo
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4556,6 +4585,7 @@ public Builder mergeReplace(com.google.spanner.v1.Mutation.Write value) {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4588,6 +4618,7 @@ public Builder clearReplace() {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4607,6 +4638,7 @@ public com.google.spanner.v1.Mutation.Write.Builder getReplaceBuilder() {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    @@ -4634,6 +4666,7 @@ public com.google.spanner.v1.Mutation.WriteOrBuilder getReplaceOrBuilder() {
          * deleted, and the column values provided are inserted
          * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
          * explicitly written become `NULL`.
    +     *
          * In an interleaved table, if you create the child table with the
          * `ON DELETE CASCADE` annotation, then replacing a parent row
          * also deletes the child rows. Otherwise, you must delete the
    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 c91b2bbb83f..f448af6710f 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
    @@ -106,6 +106,7 @@ public interface MutationOrBuilder
        * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
        * its column values are overwritten with the ones provided. Any
        * column values not explicitly written are preserved.
    +   *
        * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
        * NULL` columns in the table must be given a value. This holds true
        * even when the row already exists and will therefore actually be updated.
    @@ -123,6 +124,7 @@ public interface MutationOrBuilder
        * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
        * its column values are overwritten with the ones provided. Any
        * column values not explicitly written are preserved.
    +   *
        * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
        * NULL` columns in the table must be given a value. This holds true
        * even when the row already exists and will therefore actually be updated.
    @@ -140,6 +142,7 @@ public interface MutationOrBuilder
        * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
        * its column values are overwritten with the ones provided. Any
        * column values not explicitly written are preserved.
    +   *
        * When using [insert_or_update][google.spanner.v1.Mutation.insert_or_update], just as when using [insert][google.spanner.v1.Mutation.insert], all `NOT
        * NULL` columns in the table must be given a value. This holds true
        * even when the row already exists and will therefore actually be updated.
    @@ -157,6 +160,7 @@ public interface MutationOrBuilder
        * deleted, and the column values provided are inserted
        * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
        * explicitly written become `NULL`.
    +   *
        * In an interleaved table, if you create the child table with the
        * `ON DELETE CASCADE` annotation, then replacing a parent row
        * also deletes the child rows. Otherwise, you must delete the
    @@ -176,6 +180,7 @@ public interface MutationOrBuilder
        * deleted, and the column values provided are inserted
        * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
        * explicitly written become `NULL`.
    +   *
        * In an interleaved table, if you create the child table with the
        * `ON DELETE CASCADE` annotation, then replacing a parent row
        * also deletes the child rows. Otherwise, you must delete the
    @@ -195,6 +200,7 @@ public interface MutationOrBuilder
        * deleted, and the column values provided are inserted
        * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
        * explicitly written become `NULL`.
    +   *
        * In an interleaved table, if you create the child table with the
        * `ON DELETE CASCADE` annotation, then replacing a parent row
        * also deletes the child rows. Otherwise, you must delete the
    @@ -243,5 +249,5 @@ public interface MutationOrBuilder
        */
       com.google.spanner.v1.Mutation.DeleteOrBuilder getDeleteOrBuilder();
     
    -  public com.google.spanner.v1.Mutation.OperationCase getOperationCase();
    +  com.google.spanner.v1.Mutation.OperationCase getOperationCase();
     }
    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 a1706fc4cd1..ca64bf3a9b8 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
    @@ -51,24 +51,24 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
           "\n google/spanner/v1/mutation.proto\022\021goog"
               + "le.spanner.v1\032\037google/api/field_behavior"
               + ".proto\032\034google/protobuf/struct.proto\032\034go"
    -          + "ogle/spanner/v1/keys.proto\"\325\003\n\010Mutation\022"
    +          + "ogle/spanner/v1/keys.proto\"\330\003\n\010Mutation\022"
               + "3\n\006insert\030\001 \001(\0132!.google.spanner.v1.Muta"
               + "tion.WriteH\000\0223\n\006update\030\002 \001(\0132!.google.sp"
               + "anner.v1.Mutation.WriteH\000\022=\n\020insert_or_u"
               + "pdate\030\003 \001(\0132!.google.spanner.v1.Mutation"
               + ".WriteH\000\0224\n\007replace\030\004 \001(\0132!.google.spann"
               + "er.v1.Mutation.WriteH\000\0224\n\006delete\030\005 \001(\0132\""
    -          + ".google.spanner.v1.Mutation.DeleteH\000\032X\n\005"
    -          + "Write\022\022\n\005table\030\001 \001(\tB\003\340A\002\022\017\n\007columns\030\002 \003"
    -          + "(\t\022*\n\006values\030\003 \003(\0132\032.google.protobuf.Lis"
    -          + "tValue\032M\n\006Delete\022\022\n\005table\030\001 \001(\tB\003\340A\002\022/\n\007"
    -          + "key_set\030\002 \001(\0132\031.google.spanner.v1.KeySet"
    -          + "B\003\340A\002B\013\n\toperationB\260\001\n\025com.google.spanne"
    -          + "r.v1B\rMutationProtoP\001Z5cloud.google.com/"
    -          + "go/spanner/apiv1/spannerpb;spannerpb\252\002\027G"
    -          + "oogle.Cloud.Spanner.V1\312\002\027Google\\Cloud\\Sp"
    -          + "anner\\V1\352\002\032Google::Cloud::Spanner::V1b\006p"
    -          + "roto3"
    +          + ".google.spanner.v1.Mutation.DeleteH\000\032Y\n\005"
    +          + "Write\022\023\n\005table\030\001 \001(\tB\004\342A\001\002\022\017\n\007columns\030\002 "
    +          + "\003(\t\022*\n\006values\030\003 \003(\0132\032.google.protobuf.Li"
    +          + "stValue\032O\n\006Delete\022\023\n\005table\030\001 \001(\tB\004\342A\001\002\0220"
    +          + "\n\007key_set\030\002 \001(\0132\031.google.spanner.v1.KeyS"
    +          + "etB\004\342A\001\002B\013\n\toperationB\260\001\n\025com.google.spa"
    +          + "nner.v1B\rMutationProtoP\001Z5cloud.google.c"
    +          + "om/go/spanner/apiv1/spannerpb;spannerpb\252"
    +          + "\002\027Google.Cloud.Spanner.V1\312\002\027Google\\Cloud"
    +          + "\\Spanner\\V1\352\002\032Google::Cloud::Spanner::V1"
    +          + "b\006proto3"
         };
         descriptor =
             com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
    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 4453ef0c119..04457063afb 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
    @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new PartialResultSet();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.ResultSetProto
             .internal_static_google_spanner_v1_PartialResultSet_descriptor;
    @@ -136,13 +131,16 @@ public com.google.spanner.v1.ResultSetMetadataOrBuilder getMetadataOrBuilder() {
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -151,27 +149,37 @@ public com.google.spanner.v1.ResultSetMetadataOrBuilder getMetadataOrBuilder() {
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -187,6 +195,7 @@ public com.google.spanner.v1.ResultSetMetadataOrBuilder getMetadataOrBuilder() {
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -207,13 +216,16 @@ public java.util.List getValuesList() {
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -222,27 +234,37 @@ public java.util.List getValuesList() {
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -258,6 +280,7 @@ public java.util.List getValuesList() {
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -278,13 +301,16 @@ public java.util.List getValuesOrB
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -293,27 +319,37 @@ public java.util.List getValuesOrB
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -329,6 +365,7 @@ public java.util.List getValuesOrB
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -349,13 +386,16 @@ public int getValuesCount() {
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -364,27 +404,37 @@ public int getValuesCount() {
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -400,6 +450,7 @@ public int getValuesCount() {
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -420,13 +471,16 @@ public com.google.protobuf.Value getValues(int index) {
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -435,27 +489,37 @@ public com.google.protobuf.Value getValues(int index) {
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -471,6 +535,7 @@ public com.google.protobuf.Value getValues(int index) {
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -1296,13 +1361,16 @@ private void ensureValuesIsMutable() {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1311,27 +1379,37 @@ private void ensureValuesIsMutable() {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1347,6 +1425,7 @@ private void ensureValuesIsMutable() {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1370,13 +1449,16 @@ public java.util.List getValuesList() {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1385,27 +1467,37 @@ public java.util.List getValuesList() {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1421,6 +1513,7 @@ public java.util.List getValuesList() {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1444,13 +1537,16 @@ public int getValuesCount() {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1459,27 +1555,37 @@ public int getValuesCount() {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1495,6 +1601,7 @@ public int getValuesCount() {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1518,13 +1625,16 @@ public com.google.protobuf.Value getValues(int index) {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1533,27 +1643,37 @@ public com.google.protobuf.Value getValues(int index) {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1569,6 +1689,7 @@ public com.google.protobuf.Value getValues(int index) {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1598,13 +1719,16 @@ public Builder setValues(int index, com.google.protobuf.Value value) {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1613,27 +1737,37 @@ public Builder setValues(int index, com.google.protobuf.Value value) {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1649,6 +1783,7 @@ public Builder setValues(int index, com.google.protobuf.Value value) {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1675,13 +1810,16 @@ public Builder setValues(int index, com.google.protobuf.Value.Builder builderFor
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1690,27 +1828,37 @@ public Builder setValues(int index, com.google.protobuf.Value.Builder builderFor
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1726,6 +1874,7 @@ public Builder setValues(int index, com.google.protobuf.Value.Builder builderFor
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1755,13 +1904,16 @@ public Builder addValues(com.google.protobuf.Value value) {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1770,27 +1922,37 @@ public Builder addValues(com.google.protobuf.Value value) {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1806,6 +1968,7 @@ public Builder addValues(com.google.protobuf.Value value) {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1835,13 +1998,16 @@ public Builder addValues(int index, com.google.protobuf.Value value) {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1850,27 +2016,37 @@ public Builder addValues(int index, com.google.protobuf.Value value) {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1886,6 +2062,7 @@ public Builder addValues(int index, com.google.protobuf.Value value) {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1912,13 +2089,16 @@ public Builder addValues(com.google.protobuf.Value.Builder builderForValue) {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -1927,27 +2107,37 @@ public Builder addValues(com.google.protobuf.Value.Builder builderForValue) {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -1963,6 +2153,7 @@ public Builder addValues(com.google.protobuf.Value.Builder builderForValue) {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -1989,13 +2180,16 @@ public Builder addValues(int index, com.google.protobuf.Value.Builder builderFor
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -2004,27 +2198,37 @@ public Builder addValues(int index, com.google.protobuf.Value.Builder builderFor
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -2040,6 +2244,7 @@ public Builder addValues(int index, com.google.protobuf.Value.Builder builderFor
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -2066,13 +2271,16 @@ public Builder addAllValues(java.lang.Iterable getValuesOrB
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -2453,27 +2731,37 @@ public java.util.List getValuesOrB
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -2489,6 +2777,7 @@ public java.util.List getValuesOrB
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -2508,13 +2797,16 @@ public com.google.protobuf.Value.Builder addValuesBuilder() {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -2523,27 +2815,37 @@ public com.google.protobuf.Value.Builder addValuesBuilder() {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -2559,6 +2861,7 @@ public com.google.protobuf.Value.Builder addValuesBuilder() {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    @@ -2579,13 +2882,16 @@ public com.google.protobuf.Value.Builder addValuesBuilder(int index) {
          * large rows and/or large values. Every N complete values defines a
          * row, where N is equal to the number of entries in
          * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +     *
          * Most values are encoded based on type as described
          * [here][google.spanner.v1.TypeCode].
    +     *
          * It is possible that the last value in values is "chunked",
          * meaning that the rest of the value is sent in subsequent
          * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
          * field. Two or more chunked values can be merged to form a
          * complete value as follows:
    +     *
          *   * `bool/number/null`: cannot be chunked
          *   * `string`: concatenate the strings
          *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -2594,27 +2900,37 @@ public com.google.protobuf.Value.Builder addValuesBuilder(int index) {
          *   * `object`: concatenate the (field name, field value) pairs. If a
          *     field name is duplicated, then apply these rules recursively
          *     to merge the field values.
    +     *
          * Some examples of merging:
    +     *
          *     # Strings are concatenated.
          *     "foo", "bar" => "foobar"
    +     *
          *     # Lists of non-strings are concatenated.
          *     [2, 3], [4] => [2, 3, 4]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are strings.
          *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +     *
          *     # Lists are concatenated, but the last and first elements are merged
          *     # because they are lists. Recursively, the last and first elements
          *     # of the inner lists are merged because they are strings.
          *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +     *
          *     # Non-overlapping object fields are combined.
          *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +     *
          *     # Overlapping object fields are merged.
          *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +     *
          *     # Examples of merging objects containing lists of strings.
          *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +     *
          * For a more complete example, suppose a streaming SQL query is
          * yielding a result set whose rows contain a single string
          * field. The following `PartialResultSet`s might be yielded:
    +     *
          *     {
          *       "metadata": { ... }
          *       "values": ["Hello", "W"]
    @@ -2630,6 +2946,7 @@ public com.google.protobuf.Value.Builder addValuesBuilder(int index) {
          *       "values": ["d"]
          *       "resume_token": "Zx1B..."
          *     }
    +     *
          * This sequence of `PartialResultSet`s encodes two rows, one
          * containing the field value `"Hello"`, and a second containing the
          * field value `"World" = "W" + "orl" + "d"`.
    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 60b851170fa..d0fb0a05c77 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
    @@ -70,13 +70,16 @@ public interface PartialResultSetOrBuilder
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -85,27 +88,37 @@ public interface PartialResultSetOrBuilder
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -121,6 +134,7 @@ public interface PartialResultSetOrBuilder
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -138,13 +152,16 @@ public interface PartialResultSetOrBuilder
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -153,27 +170,37 @@ public interface PartialResultSetOrBuilder
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -189,6 +216,7 @@ public interface PartialResultSetOrBuilder
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -206,13 +234,16 @@ public interface PartialResultSetOrBuilder
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -221,27 +252,37 @@ public interface PartialResultSetOrBuilder
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -257,6 +298,7 @@ public interface PartialResultSetOrBuilder
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -274,13 +316,16 @@ public interface PartialResultSetOrBuilder
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -289,27 +334,37 @@ public interface PartialResultSetOrBuilder
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -325,6 +380,7 @@ public interface PartialResultSetOrBuilder
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    @@ -342,13 +398,16 @@ public interface PartialResultSetOrBuilder
        * large rows and/or large values. Every N complete values defines a
        * row, where N is equal to the number of entries in
        * [metadata.row_type.fields][google.spanner.v1.StructType.fields].
    +   *
        * Most values are encoded based on type as described
        * [here][google.spanner.v1.TypeCode].
    +   *
        * It is possible that the last value in values is "chunked",
        * meaning that the rest of the value is sent in subsequent
        * `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value]
        * field. Two or more chunked values can be merged to form a
        * complete value as follows:
    +   *
        *   * `bool/number/null`: cannot be chunked
        *   * `string`: concatenate the strings
        *   * `list`: concatenate the lists. If the last element in a list is a
    @@ -357,27 +416,37 @@ public interface PartialResultSetOrBuilder
        *   * `object`: concatenate the (field name, field value) pairs. If a
        *     field name is duplicated, then apply these rules recursively
        *     to merge the field values.
    +   *
        * Some examples of merging:
    +   *
        *     # Strings are concatenated.
        *     "foo", "bar" => "foobar"
    +   *
        *     # Lists of non-strings are concatenated.
        *     [2, 3], [4] => [2, 3, 4]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are strings.
        *     ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
    +   *
        *     # Lists are concatenated, but the last and first elements are merged
        *     # because they are lists. Recursively, the last and first elements
        *     # of the inner lists are merged because they are strings.
        *     ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
    +   *
        *     # Non-overlapping object fields are combined.
        *     {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
    +   *
        *     # Overlapping object fields are merged.
        *     {"a": "1"}, {"a": "2"} => {"a": "12"}
    +   *
        *     # Examples of merging objects containing lists of strings.
        *     {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
    +   *
        * For a more complete example, suppose a streaming SQL query is
        * yielding a result set whose rows contain a single string
        * field. The following `PartialResultSet`s might be yielded:
    +   *
        *     {
        *       "metadata": { ... }
        *       "values": ["Hello", "W"]
    @@ -393,6 +462,7 @@ public interface PartialResultSetOrBuilder
        *       "values": ["d"]
        *       "resume_token": "Zx1B..."
        *     }
    +   *
        * This sequence of `PartialResultSet`s encodes two rows, one
        * containing the field value `"Hello"`, and a second containing the
        * field value `"World" = "W" + "orl" + "d"`.
    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 c052325fad6..c25d69935af 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new Partition();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_Partition_descriptor;
    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 fb704ea89af..52c32ec4de8 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
    @@ -46,11 +46,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new PartitionOptions();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_PartitionOptions_descriptor;
    @@ -74,6 +69,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        * 
        * **Note:** This hint is currently ignored by PartitionQuery and
        * PartitionRead requests.
    +   *
        * The desired data size for each partition generated.  The default for this
        * option is currently 1 GiB.  This is only a hint. The actual size of each
        * partition may be smaller or larger than this size request.
    @@ -96,6 +92,7 @@ public long getPartitionSizeBytes() {
        * 
        * **Note:** This hint is currently ignored by PartitionQuery and
        * PartitionRead requests.
    +   *
        * The desired maximum number of partitions to return.  For example, this may
        * be set to the number of workers available.  The default for this option
        * is currently 10,000. The maximum value is currently 200,000.  This is only
    @@ -480,6 +477,7 @@ public Builder mergeFrom(
          * 
          * **Note:** This hint is currently ignored by PartitionQuery and
          * PartitionRead requests.
    +     *
          * The desired data size for each partition generated.  The default for this
          * option is currently 1 GiB.  This is only a hint. The actual size of each
          * partition may be smaller or larger than this size request.
    @@ -499,6 +497,7 @@ public long getPartitionSizeBytes() {
          * 
          * **Note:** This hint is currently ignored by PartitionQuery and
          * PartitionRead requests.
    +     *
          * The desired data size for each partition generated.  The default for this
          * option is currently 1 GiB.  This is only a hint. The actual size of each
          * partition may be smaller or larger than this size request.
    @@ -522,6 +521,7 @@ public Builder setPartitionSizeBytes(long value) {
          * 
          * **Note:** This hint is currently ignored by PartitionQuery and
          * PartitionRead requests.
    +     *
          * The desired data size for each partition generated.  The default for this
          * option is currently 1 GiB.  This is only a hint. The actual size of each
          * partition may be smaller or larger than this size request.
    @@ -545,6 +545,7 @@ public Builder clearPartitionSizeBytes() {
          * 
          * **Note:** This hint is currently ignored by PartitionQuery and
          * PartitionRead requests.
    +     *
          * The desired maximum number of partitions to return.  For example, this may
          * be set to the number of workers available.  The default for this option
          * is currently 10,000. The maximum value is currently 200,000.  This is only
    @@ -566,6 +567,7 @@ public long getMaxPartitions() {
          * 
          * **Note:** This hint is currently ignored by PartitionQuery and
          * PartitionRead requests.
    +     *
          * The desired maximum number of partitions to return.  For example, this may
          * be set to the number of workers available.  The default for this option
          * is currently 10,000. The maximum value is currently 200,000.  This is only
    @@ -591,6 +593,7 @@ public Builder setMaxPartitions(long value) {
          * 
          * **Note:** This hint is currently ignored by PartitionQuery and
          * PartitionRead requests.
    +     *
          * The desired maximum number of partitions to return.  For example, this may
          * be set to the number of workers available.  The default for this option
          * is currently 10,000. The maximum value is currently 200,000.  This is only
    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 e1461014cb9..07d763cbf90 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
    @@ -29,6 +29,7 @@ public interface PartitionOptionsOrBuilder
        * 
        * **Note:** This hint is currently ignored by PartitionQuery and
        * PartitionRead requests.
    +   *
        * The desired data size for each partition generated.  The default for this
        * option is currently 1 GiB.  This is only a hint. The actual size of each
        * partition may be smaller or larger than this size request.
    @@ -46,6 +47,7 @@ public interface PartitionOptionsOrBuilder
        * 
        * **Note:** This hint is currently ignored by PartitionQuery and
        * PartitionRead requests.
    +   *
        * The desired maximum number of partitions to return.  For example, this may
        * be set to the number of workers available.  The default for this option
        * is currently 10,000. The maximum value is currently 200,000.  This is only
    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 bb5809c2692..47b4bcfc6a2 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new PartitionQueryRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_PartitionQueryRequest_descriptor;
    @@ -201,6 +196,7 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde
        * union operator conceptually divides one or more tables into multiple
        * splits, remotely evaluates a subquery independently on each split, and
        * then unions all results.
    +   *
        * This must not contain DML commands, such as INSERT, UPDATE, or
        * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
        * PartitionedDml transaction for large, partition-friendly DML operations.
    @@ -232,6 +228,7 @@ public java.lang.String getSql() {
        * union operator conceptually divides one or more tables into multiple
        * splits, remotely evaluates a subquery independently on each split, and
        * then unions all results.
    +   *
        * This must not contain DML commands, such as INSERT, UPDATE, or
        * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
        * PartitionedDml transaction for large, partition-friendly DML operations.
    @@ -261,12 +258,16 @@ public com.google.protobuf.ByteString getSqlBytes() {
        *
        * 
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names can contain
        * letters, numbers, and underscores.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -283,12 +284,16 @@ public boolean hasParams() { * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names can contain
        * letters, numbers, and underscores.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -305,12 +310,16 @@ public com.google.protobuf.Struct getParams() { * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names can contain
        * letters, numbers, and underscores.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -357,6 +366,7 @@ public int getParamTypesCount() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -385,6 +395,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -404,6 +415,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -431,6 +443,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1340,6 +1353,7 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -1370,6 +1384,7 @@ public java.lang.String getSql() { * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -1400,6 +1415,7 @@ public com.google.protobuf.ByteString getSqlBytes() { * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -1429,6 +1445,7 @@ public Builder setSql(java.lang.String value) { * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -1454,6 +1471,7 @@ public Builder clearSql() { * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -1486,12 +1504,16 @@ public Builder setSqlBytes(com.google.protobuf.ByteString value) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1507,12 +1529,16 @@ public boolean hasParams() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1532,12 +1558,16 @@ public com.google.protobuf.Struct getParams() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1561,12 +1591,16 @@ public Builder setParams(com.google.protobuf.Struct value) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1587,12 +1621,16 @@ public Builder setParams(com.google.protobuf.Struct.Builder builderForValue) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1619,12 +1657,16 @@ public Builder mergeParams(com.google.protobuf.Struct value) { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1645,12 +1687,16 @@ public Builder clearParams() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1666,12 +1712,16 @@ public com.google.protobuf.Struct.Builder getParamsBuilder() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1689,12 +1739,16 @@ public com.google.protobuf.StructOrBuilder getParamsOrBuilder() { * *
          * Parameter names and values that bind to placeholders in the SQL string.
    +     *
          * A parameter placeholder consists of the `@` character followed by the
          * parameter name (for example, `@firstName`). Parameter names can contain
          * letters, numbers, and underscores.
    +     *
          * Parameters can appear anywhere that a literal value is expected.  The same
          * parameter name can be used more than once, for example:
    +     *
          * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +     *
          * It is an error to execute a SQL statement with unbound parameters.
          * 
    * @@ -1752,6 +1806,7 @@ public int getParamTypesCount() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1780,6 +1835,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1799,6 +1855,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1826,6 +1883,7 @@ public java.util.Map getParamTypes * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1859,6 +1917,7 @@ public Builder clearParamTypes() { * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1887,6 +1946,7 @@ public java.util.Map getMutablePar * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -1913,6 +1973,7 @@ public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type va * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information 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 7c71cf32d5e..03858c082d1 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 @@ -100,6 +100,7 @@ public interface PartitionQueryRequestOrBuilder * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -120,6 +121,7 @@ public interface PartitionQueryRequestOrBuilder * union operator conceptually divides one or more tables into multiple * splits, remotely evaluates a subquery independently on each split, and * then unions all results. + * * This must not contain DML commands, such as INSERT, UPDATE, or * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a * PartitionedDml transaction for large, partition-friendly DML operations. @@ -136,12 +138,16 @@ public interface PartitionQueryRequestOrBuilder * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names can contain
        * letters, numbers, and underscores.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -155,12 +161,16 @@ public interface PartitionQueryRequestOrBuilder * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names can contain
        * letters, numbers, and underscores.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -174,12 +184,16 @@ public interface PartitionQueryRequestOrBuilder * *
        * Parameter names and values that bind to placeholders in the SQL string.
    +   *
        * A parameter placeholder consists of the `@` character followed by the
        * parameter name (for example, `@firstName`). Parameter names can contain
        * letters, numbers, and underscores.
    +   *
        * Parameters can appear anywhere that a literal value is expected.  The same
        * parameter name can be used more than once, for example:
    +   *
        * `"WHERE id > @msg_id AND id < @msg_id + 100"`
    +   *
        * It is an error to execute a SQL statement with unbound parameters.
        * 
    * @@ -194,6 +208,7 @@ public interface PartitionQueryRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -210,6 +225,7 @@ public interface PartitionQueryRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -229,6 +245,7 @@ public interface PartitionQueryRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -245,6 +262,7 @@ public interface PartitionQueryRequestOrBuilder * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information @@ -265,6 +283,7 @@ com.google.spanner.v1.Type getParamTypesOrDefault( * It is not always possible for Cloud Spanner to infer the right SQL type * from a JSON value. For example, values of type `BYTES` and values * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + * * In these cases, `param_types` can be used to specify the exact * SQL type for some or all of the SQL query parameters. See the * definition of [Type][google.spanner.v1.Type] for more information 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 46155e66a27..8b8d2a6b4f6 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 @@ -41,7 +41,7 @@ private PartitionReadRequest() { session_ = ""; table_ = ""; index_ = ""; - columns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + columns_ = com.google.protobuf.LazyStringArrayList.emptyList(); } @java.lang.Override @@ -50,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new PartitionReadRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_PartitionReadRequest_descriptor; @@ -287,7 +282,8 @@ public com.google.protobuf.ByteString getIndexBytes() { public static final int COLUMNS_FIELD_NUMBER = 5; @SuppressWarnings("serial") - private com.google.protobuf.LazyStringList columns_; + private com.google.protobuf.LazyStringArrayList columns_ = + com.google.protobuf.LazyStringArrayList.emptyList(); /** * * @@ -361,6 +357,7 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -381,6 +378,7 @@ public boolean hasKeySet() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -401,6 +399,7 @@ public com.google.spanner.v1.KeySet getKeySet() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -744,8 +743,7 @@ public Builder clear() { } table_ = ""; index_ = ""; - columns_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000010); + columns_ = com.google.protobuf.LazyStringArrayList.emptyList(); keySet_ = null; if (keySetBuilder_ != null) { keySetBuilder_.dispose(); @@ -783,7 +781,6 @@ public com.google.spanner.v1.PartitionReadRequest build() { public com.google.spanner.v1.PartitionReadRequest buildPartial() { com.google.spanner.v1.PartitionReadRequest result = new com.google.spanner.v1.PartitionReadRequest(this); - buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -791,14 +788,6 @@ public com.google.spanner.v1.PartitionReadRequest buildPartial() { return result; } - private void buildPartialRepeatedFields(com.google.spanner.v1.PartitionReadRequest result) { - if (((bitField0_ & 0x00000010) != 0)) { - columns_ = columns_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000010); - } - result.columns_ = columns_; - } - private void buildPartial0(com.google.spanner.v1.PartitionReadRequest result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -814,6 +803,10 @@ private void buildPartial0(com.google.spanner.v1.PartitionReadRequest result) { if (((from_bitField0_ & 0x00000008) != 0)) { result.index_ = index_; } + if (((from_bitField0_ & 0x00000010) != 0)) { + columns_.makeImmutable(); + result.columns_ = columns_; + } if (((from_bitField0_ & 0x00000020) != 0)) { result.keySet_ = keySetBuilder_ == null ? keySet_ : keySetBuilder_.build(); } @@ -889,7 +882,7 @@ public Builder mergeFrom(com.google.spanner.v1.PartitionReadRequest other) { if (!other.columns_.isEmpty()) { if (columns_.isEmpty()) { columns_ = other.columns_; - bitField0_ = (bitField0_ & ~0x00000010); + bitField0_ |= 0x00000010; } else { ensureColumnsIsMutable(); columns_.addAll(other.columns_); @@ -1522,14 +1515,14 @@ public Builder setIndexBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.protobuf.LazyStringList columns_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList columns_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureColumnsIsMutable() { - if (!((bitField0_ & 0x00000010) != 0)) { + if (!columns_.isModifiable()) { columns_ = new com.google.protobuf.LazyStringArrayList(columns_); - bitField0_ |= 0x00000010; } + bitField0_ |= 0x00000010; } /** * @@ -1544,7 +1537,8 @@ private void ensureColumnsIsMutable() { * @return A list containing the columns. */ public com.google.protobuf.ProtocolStringList getColumnsList() { - return columns_.getUnmodifiableView(); + columns_.makeImmutable(); + return columns_; } /** * @@ -1613,6 +1607,7 @@ public Builder setColumns(int index, java.lang.String value) { } ensureColumnsIsMutable(); columns_.set(index, value); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1635,6 +1630,7 @@ public Builder addColumns(java.lang.String value) { } ensureColumnsIsMutable(); columns_.add(value); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1654,6 +1650,7 @@ public Builder addColumns(java.lang.String value) { public Builder addAllColumns(java.lang.Iterable values) { ensureColumnsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, columns_); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1670,8 +1667,9 @@ public Builder addAllColumns(java.lang.Iterable values) { * @return This builder for chaining. */ public Builder clearColumns() { - columns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + columns_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000010); + ; onChanged(); return this; } @@ -1695,6 +1693,7 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureColumnsIsMutable(); columns_.add(value); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1713,6 +1712,7 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1732,6 +1732,7 @@ public boolean hasKeySet() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1755,6 +1756,7 @@ public com.google.spanner.v1.KeySet getKeySet() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1782,6 +1784,7 @@ public Builder setKeySet(com.google.spanner.v1.KeySet value) { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1806,6 +1809,7 @@ public Builder setKeySet(com.google.spanner.v1.KeySet.Builder builderForValue) { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1836,6 +1840,7 @@ public Builder mergeKeySet(com.google.spanner.v1.KeySet value) { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1860,6 +1865,7 @@ public Builder clearKeySet() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1879,6 +1885,7 @@ public com.google.spanner.v1.KeySet.Builder getKeySetBuilder() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1900,6 +1907,7 @@ public com.google.spanner.v1.KeySetOrBuilder getKeySetOrBuilder() { * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    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 3b178f71836..2f6a285bc43 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 @@ -207,6 +207,7 @@ public interface PartitionReadRequestOrBuilder * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -224,6 +225,7 @@ public interface PartitionReadRequestOrBuilder * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -241,6 +243,7 @@ public interface PartitionReadRequestOrBuilder * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.PartitionReadRequest.index]. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    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 5216448c858..66ba370b276 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 @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new PartitionResponse(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_PartitionResponse_descriptor; 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 21fc82e6924..6507cb2656f 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new PlanNode(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.QueryPlanProto .internal_static_google_spanner_v1_PlanNode_descriptor; @@ -355,11 +350,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ChildLink(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.QueryPlanProto .internal_static_google_spanner_v1_PlanNode_ChildLink_descriptor; @@ -1420,11 +1410,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ShortRepresentation(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.QueryPlanProto .internal_static_google_spanner_v1_PlanNode_ShortRepresentation_descriptor; @@ -2624,6 +2609,7 @@ public com.google.spanner.v1.PlanNode.ShortRepresentation getShortRepresentation * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -2645,6 +2631,7 @@ public boolean hasMetadata() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -2666,6 +2653,7 @@ public com.google.protobuf.Struct getMetadata() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4109,6 +4097,7 @@ public Builder clearShortRepresentation() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4129,6 +4118,7 @@ public boolean hasMetadata() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4153,6 +4143,7 @@ public com.google.protobuf.Struct getMetadata() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4181,6 +4172,7 @@ public Builder setMetadata(com.google.protobuf.Struct value) { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4206,6 +4198,7 @@ public Builder setMetadata(com.google.protobuf.Struct.Builder builderForValue) { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4237,6 +4230,7 @@ public Builder mergeMetadata(com.google.protobuf.Struct value) { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4262,6 +4256,7 @@ public Builder clearMetadata() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4282,6 +4277,7 @@ public com.google.protobuf.Struct.Builder getMetadataBuilder() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -4304,6 +4300,7 @@ public com.google.protobuf.StructOrBuilder getMetadataOrBuilder() { * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" 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 fa57b333d5f..0ba896c5717 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 @@ -188,6 +188,7 @@ public interface PlanNodeOrBuilder * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -206,6 +207,7 @@ public interface PlanNodeOrBuilder * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" @@ -224,6 +226,7 @@ public interface PlanNodeOrBuilder * Attributes relevant to the node contained in a group of key-value pairs. * For example, a Parameter Reference node could have the following * information in its metadata: + * * { * "parameter_reference": "param1", * "parameter_type": "array" 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 609fb5cd3ae..54d2be319de 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 @@ -47,11 +47,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new QueryPlan(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.QueryPlanProto .internal_static_google_spanner_v1_QueryPlan_descriptor; 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 5b75750eabf..54129945d8c 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 @@ -42,7 +42,7 @@ private ReadRequest() { session_ = ""; table_ = ""; index_ = ""; - columns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + columns_ = com.google.protobuf.LazyStringArrayList.emptyList(); resumeToken_ = com.google.protobuf.ByteString.EMPTY; partitionToken_ = com.google.protobuf.ByteString.EMPTY; } @@ -53,11 +53,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ReadRequest(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_ReadRequest_descriptor; @@ -290,7 +285,8 @@ public com.google.protobuf.ByteString getIndexBytes() { public static final int COLUMNS_FIELD_NUMBER = 5; @SuppressWarnings("serial") - private com.google.protobuf.LazyStringList columns_; + private com.google.protobuf.LazyStringArrayList columns_ = + com.google.protobuf.LazyStringArrayList.emptyList(); /** * * @@ -364,10 +360,12 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -388,10 +386,12 @@ public boolean hasKeySet() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -412,10 +412,12 @@ public com.google.spanner.v1.KeySet getKeySet() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -549,6 +551,7 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( *
        * If this is for a partitioned read and this field is set to `true`, the
        * request will be executed via Spanner independent compute resources.
    +   *
        * If the field is set to `true` but the request does not set
        * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
        * 
    @@ -879,8 +882,7 @@ public Builder clear() { } table_ = ""; index_ = ""; - columns_ = com.google.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000010); + columns_ = com.google.protobuf.LazyStringArrayList.emptyList(); keySet_ = null; if (keySetBuilder_ != null) { keySetBuilder_.dispose(); @@ -921,7 +923,6 @@ public com.google.spanner.v1.ReadRequest build() { @java.lang.Override public com.google.spanner.v1.ReadRequest buildPartial() { com.google.spanner.v1.ReadRequest result = new com.google.spanner.v1.ReadRequest(this); - buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -929,14 +930,6 @@ public com.google.spanner.v1.ReadRequest buildPartial() { return result; } - private void buildPartialRepeatedFields(com.google.spanner.v1.ReadRequest result) { - if (((bitField0_ & 0x00000010) != 0)) { - columns_ = columns_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000010); - } - result.columns_ = columns_; - } - private void buildPartial0(com.google.spanner.v1.ReadRequest result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -952,6 +945,10 @@ private void buildPartial0(com.google.spanner.v1.ReadRequest result) { if (((from_bitField0_ & 0x00000008) != 0)) { result.index_ = index_; } + if (((from_bitField0_ & 0x00000010) != 0)) { + columns_.makeImmutable(); + result.columns_ = columns_; + } if (((from_bitField0_ & 0x00000020) != 0)) { result.keySet_ = keySetBuilder_ == null ? keySet_ : keySetBuilder_.build(); } @@ -1039,7 +1036,7 @@ public Builder mergeFrom(com.google.spanner.v1.ReadRequest other) { if (!other.columns_.isEmpty()) { if (columns_.isEmpty()) { columns_ = other.columns_; - bitField0_ = (bitField0_ & ~0x00000010); + bitField0_ |= 0x00000010; } else { ensureColumnsIsMutable(); columns_.addAll(other.columns_); @@ -1707,14 +1704,14 @@ public Builder setIndexBytes(com.google.protobuf.ByteString value) { return this; } - private com.google.protobuf.LazyStringList columns_ = - com.google.protobuf.LazyStringArrayList.EMPTY; + private com.google.protobuf.LazyStringArrayList columns_ = + com.google.protobuf.LazyStringArrayList.emptyList(); private void ensureColumnsIsMutable() { - if (!((bitField0_ & 0x00000010) != 0)) { + if (!columns_.isModifiable()) { columns_ = new com.google.protobuf.LazyStringArrayList(columns_); - bitField0_ |= 0x00000010; } + bitField0_ |= 0x00000010; } /** * @@ -1729,7 +1726,8 @@ private void ensureColumnsIsMutable() { * @return A list containing the columns. */ public com.google.protobuf.ProtocolStringList getColumnsList() { - return columns_.getUnmodifiableView(); + columns_.makeImmutable(); + return columns_; } /** * @@ -1798,6 +1796,7 @@ public Builder setColumns(int index, java.lang.String value) { } ensureColumnsIsMutable(); columns_.set(index, value); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1820,6 +1819,7 @@ public Builder addColumns(java.lang.String value) { } ensureColumnsIsMutable(); columns_.add(value); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1839,6 +1839,7 @@ public Builder addColumns(java.lang.String value) { public Builder addAllColumns(java.lang.Iterable values) { ensureColumnsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, columns_); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1855,8 +1856,9 @@ public Builder addAllColumns(java.lang.Iterable values) { * @return This builder for chaining. */ public Builder clearColumns() { - columns_ = com.google.protobuf.LazyStringArrayList.EMPTY; + columns_ = com.google.protobuf.LazyStringArrayList.emptyList(); bitField0_ = (bitField0_ & ~0x00000010); + ; onChanged(); return this; } @@ -1880,6 +1882,7 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) { checkByteStringIsUtf8(value); ensureColumnsIsMutable(); columns_.add(value); + bitField0_ |= 0x00000010; onChanged(); return this; } @@ -1898,10 +1901,12 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1921,10 +1926,12 @@ public boolean hasKeySet() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1948,10 +1955,12 @@ public com.google.spanner.v1.KeySet getKeySet() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -1979,10 +1988,12 @@ public Builder setKeySet(com.google.spanner.v1.KeySet value) { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -2007,10 +2018,12 @@ public Builder setKeySet(com.google.spanner.v1.KeySet.Builder builderForValue) { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -2041,10 +2054,12 @@ public Builder mergeKeySet(com.google.spanner.v1.KeySet value) { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -2069,10 +2084,12 @@ public Builder clearKeySet() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -2092,10 +2109,12 @@ public com.google.spanner.v1.KeySet.Builder getKeySetBuilder() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -2117,10 +2136,12 @@ public com.google.spanner.v1.KeySetOrBuilder getKeySetOrBuilder() { * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -2527,6 +2548,7 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( *
          * If this is for a partitioned read and this field is set to `true`, the
          * request will be executed via Spanner independent compute resources.
    +     *
          * If the field is set to `true` but the request does not set
          * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
          * 
    @@ -2545,6 +2567,7 @@ public boolean getDataBoostEnabled() { *
          * If this is for a partitioned read and this field is set to `true`, the
          * request will be executed via Spanner independent compute resources.
    +     *
          * If the field is set to `true` but the request does not set
          * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
          * 
    @@ -2567,6 +2590,7 @@ public Builder setDataBoostEnabled(boolean value) { *
          * If this is for a partitioned read and this field is set to `true`, the
          * request will be executed via Spanner independent compute resources.
    +     *
          * If the field is set to `true` but the request does not set
          * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
          * 
    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 fc986d632d4..3bdf94f7ebd 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 @@ -207,10 +207,12 @@ public interface ReadRequestOrBuilder * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -228,10 +230,12 @@ public interface ReadRequestOrBuilder * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -249,10 +253,12 @@ public interface ReadRequestOrBuilder * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names * index keys in [index][google.spanner.v1.ReadRequest.index]. + * * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order * (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not * empty, rows will be yielded in an unspecified order. + * * It is not an error for the `key_set` to name rows that do not * exist in the database. Read yields nothing for nonexistent rows. *
    @@ -351,6 +357,7 @@ public interface ReadRequestOrBuilder *
        * If this is for a partitioned read and this field is set to `true`, the
        * request will be executed via Spanner independent compute resources.
    +   *
        * If the field is set to `true` but the request does not set
        * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
        * 
    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 bdce7978e3a..3b43c192884 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new RequestOptions(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.SpannerProto .internal_static_google_spanner_v1_RequestOptions_descriptor; @@ -75,8 +70,10 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { *
        * The relative priority for requests. Note that priority is not applicable
        * for [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction].
    +   *
        * The priority acts as a hint to the Cloud Spanner scheduler and does not
        * guarantee priority or order of execution. For example:
    +   *
        * * Some parts of a write operation always execute at `PRIORITY_HIGH`,
        *   regardless of the specified priority. This may cause you to see an
        *   increase in high priority workload even when executing a low priority
    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 574ee4b5d29..c2982901a17 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ResultSet();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.ResultSetProto
             .internal_static_google_spanner_v1_ResultSet_descriptor;
    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 6c2261da657..a195b930323 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
    @@ -45,11 +45,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ResultSetMetadata();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.ResultSetProto
             .internal_static_google_spanner_v1_ResultSetMetadata_descriptor;
    @@ -74,6 +69,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        * Indicates the field names and types for the rows in the result
        * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
        * Users"` could return a `row_type` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -95,6 +91,7 @@ public boolean hasRowType() {
        * Indicates the field names and types for the rows in the result
        * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
        * Users"` could return a `row_type` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -116,6 +113,7 @@ public com.google.spanner.v1.StructType getRowType() {
        * Indicates the field names and types for the rows in the result
        * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
        * Users"` could return a `row_type` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -193,6 +191,7 @@ public com.google.spanner.v1.TransactionOrBuilder getTransactionOrBuilder() {
        * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
        * Users where UserId = @userId and UserName = @userName "` could return a
        * `undeclared_parameters` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -216,6 +215,7 @@ public boolean hasUndeclaredParameters() {
        * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
        * Users where UserId = @userId and UserName = @userName "` could return a
        * `undeclared_parameters` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -241,6 +241,7 @@ public com.google.spanner.v1.StructType getUndeclaredParameters() {
        * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
        * Users where UserId = @userId and UserName = @userName "` could return a
        * `undeclared_parameters` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -684,6 +685,7 @@ public Builder mergeFrom(
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -704,6 +706,7 @@ public boolean hasRowType() {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -728,6 +731,7 @@ public com.google.spanner.v1.StructType getRowType() {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -756,6 +760,7 @@ public Builder setRowType(com.google.spanner.v1.StructType value) {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -781,6 +786,7 @@ public Builder setRowType(com.google.spanner.v1.StructType.Builder builderForVal
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -812,6 +818,7 @@ public Builder mergeRowType(com.google.spanner.v1.StructType value) {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -837,6 +844,7 @@ public Builder clearRowType() {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -857,6 +865,7 @@ public com.google.spanner.v1.StructType.Builder getRowTypeBuilder() {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -879,6 +888,7 @@ public com.google.spanner.v1.StructTypeOrBuilder getRowTypeOrBuilder() {
          * Indicates the field names and types for the rows in the result
          * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
          * Users"` could return a `row_type` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1111,6 +1121,7 @@ public com.google.spanner.v1.TransactionOrBuilder getTransactionOrBuilder() {
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1133,6 +1144,7 @@ public boolean hasUndeclaredParameters() {
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1161,6 +1173,7 @@ public com.google.spanner.v1.StructType getUndeclaredParameters() {
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1191,6 +1204,7 @@ public Builder setUndeclaredParameters(com.google.spanner.v1.StructType value) {
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1219,6 +1233,7 @@ public Builder setUndeclaredParameters(
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1252,6 +1267,7 @@ public Builder mergeUndeclaredParameters(com.google.spanner.v1.StructType value)
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1279,6 +1295,7 @@ public Builder clearUndeclaredParameters() {
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1301,6 +1318,7 @@ public com.google.spanner.v1.StructType.Builder getUndeclaredParametersBuilder()
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -1327,6 +1345,7 @@ public com.google.spanner.v1.StructTypeOrBuilder getUndeclaredParametersOrBuilde
          * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
          * Users where UserId = @userId and UserName = @userName "` could return a
          * `undeclared_parameters` value like:
    +     *
          *     "fields": [
          *       { "name": "UserId", "type": { "code": "INT64" } },
          *       { "name": "UserName", "type": { "code": "STRING" } },
    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 38216902ce7..ec11a259891 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
    @@ -30,6 +30,7 @@ public interface ResultSetMetadataOrBuilder
        * Indicates the field names and types for the rows in the result
        * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
        * Users"` could return a `row_type` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -48,6 +49,7 @@ public interface ResultSetMetadataOrBuilder
        * Indicates the field names and types for the rows in the result
        * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
        * Users"` could return a `row_type` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -66,6 +68,7 @@ public interface ResultSetMetadataOrBuilder
        * Indicates the field names and types for the rows in the result
        * set.  For example, a SQL query like `"SELECT UserId, UserName FROM
        * Users"` could return a `row_type` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -123,6 +126,7 @@ public interface ResultSetMetadataOrBuilder
        * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
        * Users where UserId = @userId and UserName = @userName "` could return a
        * `undeclared_parameters` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -143,6 +147,7 @@ public interface ResultSetMetadataOrBuilder
        * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
        * Users where UserId = @userId and UserName = @userName "` could return a
        * `undeclared_parameters` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    @@ -163,6 +168,7 @@ public interface ResultSetMetadataOrBuilder
        * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
        * Users where UserId = @userId and UserName = @userName "` could return a
        * `undeclared_parameters` value like:
    +   *
        *     "fields": [
        *       { "name": "UserId", "type": { "code": "INT64" } },
        *       { "name": "UserName", "type": { "code": "STRING" } },
    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 3c940cb8d13..b4472630c26 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
    @@ -45,11 +45,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new ResultSetStats();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.ResultSetProto
             .internal_static_google_spanner_v1_ResultSetStats_descriptor;
    @@ -66,6 +61,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
       }
     
       private int rowCountCase_ = 0;
    +
    +  @SuppressWarnings("serial")
       private java.lang.Object rowCount_;
     
       public enum RowCountCase
    @@ -167,6 +164,7 @@ public com.google.spanner.v1.QueryPlanOrBuilder getQueryPlanOrBuilder() {
        * Aggregated statistics from the execution of the query. Only present when
        * the query is profiled. For example, a query could return the statistics as
        * follows:
    +   *
        *     {
        *       "rows_returned": "3",
        *       "elapsed_time": "1.22 secs",
    @@ -189,6 +187,7 @@ public boolean hasQueryStats() {
        * Aggregated statistics from the execution of the query. Only present when
        * the query is profiled. For example, a query could return the statistics as
        * follows:
    +   *
        *     {
        *       "rows_returned": "3",
        *       "elapsed_time": "1.22 secs",
    @@ -211,6 +210,7 @@ public com.google.protobuf.Struct getQueryStats() {
        * Aggregated statistics from the execution of the query. Only present when
        * the query is profiled. For example, a query could return the statistics as
        * follows:
    +   *
        *     {
        *       "rows_returned": "3",
        *       "elapsed_time": "1.22 secs",
    @@ -958,6 +958,7 @@ public com.google.spanner.v1.QueryPlanOrBuilder getQueryPlanOrBuilder() {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -979,6 +980,7 @@ public boolean hasQueryStats() {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1004,6 +1006,7 @@ public com.google.protobuf.Struct getQueryStats() {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1033,6 +1036,7 @@ public Builder setQueryStats(com.google.protobuf.Struct value) {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1059,6 +1063,7 @@ public Builder setQueryStats(com.google.protobuf.Struct.Builder builderForValue)
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1091,6 +1096,7 @@ public Builder mergeQueryStats(com.google.protobuf.Struct value) {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1117,6 +1123,7 @@ public Builder clearQueryStats() {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1138,6 +1145,7 @@ public com.google.protobuf.Struct.Builder getQueryStatsBuilder() {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    @@ -1161,6 +1169,7 @@ public com.google.protobuf.StructOrBuilder getQueryStatsOrBuilder() {
          * Aggregated statistics from the execution of the query. Only present when
          * the query is profiled. For example, a query could return the statistics as
          * follows:
    +     *
          *     {
          *       "rows_returned": "3",
          *       "elapsed_time": "1.22 secs",
    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 9a01e754b41..049091eeb0c 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
    @@ -65,6 +65,7 @@ public interface ResultSetStatsOrBuilder
        * Aggregated statistics from the execution of the query. Only present when
        * the query is profiled. For example, a query could return the statistics as
        * follows:
    +   *
        *     {
        *       "rows_returned": "3",
        *       "elapsed_time": "1.22 secs",
    @@ -84,6 +85,7 @@ public interface ResultSetStatsOrBuilder
        * Aggregated statistics from the execution of the query. Only present when
        * the query is profiled. For example, a query could return the statistics as
        * follows:
    +   *
        *     {
        *       "rows_returned": "3",
        *       "elapsed_time": "1.22 secs",
    @@ -103,6 +105,7 @@ public interface ResultSetStatsOrBuilder
        * Aggregated statistics from the execution of the query. Only present when
        * the query is profiled. For example, a query could return the statistics as
        * follows:
    +   *
        *     {
        *       "rows_returned": "3",
        *       "elapsed_time": "1.22 secs",
    @@ -166,5 +169,5 @@ public interface ResultSetStatsOrBuilder
        */
       long getRowCountLowerBound();
     
    -  public com.google.spanner.v1.ResultSetStats.RowCountCase getRowCountCase();
    +  com.google.spanner.v1.ResultSetStats.RowCountCase getRowCountCase();
     }
    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 ceb4ac4591a..d079779e349 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new RollbackRequest();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto
             .internal_static_google_spanner_v1_RollbackRequest_descriptor;
    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 60f04ef5517..30a10b81938 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
    @@ -48,11 +48,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new Session();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.SpannerProto.internal_static_google_spanner_v1_Session_descriptor;
       }
    @@ -159,11 +154,13 @@ public int getLabelsCount() {
        *
        * 
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -187,11 +184,13 @@ public java.util.Map getLabels() { * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -206,11 +205,13 @@ public java.util.Map getLabelsMap() { * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -232,11 +233,13 @@ public java.util.Map getLabelsMap() { * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -1033,11 +1036,13 @@ public int getLabelsCount() { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * @@ -1061,11 +1066,13 @@ public java.util.Map getLabels() { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * @@ -1080,11 +1087,13 @@ public java.util.Map getLabelsMap() { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * @@ -1106,11 +1115,13 @@ public java.util.Map getLabelsMap() { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * @@ -1138,11 +1149,13 @@ public Builder clearLabels() { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * @@ -1166,11 +1179,13 @@ public java.util.Map getMutableLabels() { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * @@ -1192,11 +1207,13 @@ public Builder putLabels(java.lang.String key, java.lang.String value) { * *
          * The labels for the session.
    +     *
          *  * Label keys must be between 1 and 63 characters long and must conform to
          *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
          *  * Label values must be between 0 and 63 characters long and must conform
          *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
          *  * No more than 64 labels can be associated with a given session.
    +     *
          * See https://goo.gl/xmQnxf for more information on and examples of labels.
          * 
    * diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionName.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionName.java index 84eb4091a65..241081d9bda 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionName.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SessionName.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 71da8b1240f..15a932664ab 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 @@ -53,11 +53,13 @@ public interface SessionOrBuilder * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -69,11 +71,13 @@ public interface SessionOrBuilder * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -88,11 +92,13 @@ public interface SessionOrBuilder * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -104,11 +110,13 @@ public interface SessionOrBuilder * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * @@ -124,11 +132,13 @@ java.lang.String getLabelsOrDefault( * *
        * The labels for the session.
    +   *
        *  * Label keys must be between 1 and 63 characters long and must conform to
        *    the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
        *  * Label values must be between 0 and 63 characters long and must conform
        *    to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
        *  * No more than 64 labels can be associated with a given session.
    +   *
        * See https://goo.gl/xmQnxf for more information on and examples of labels.
        * 
    * 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 4cf68b20170..eaa10048ac4 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 @@ -156,206 +156,207 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "gle/spanner/v1/mutation.proto\032\"google/sp" + "anner/v1/result_set.proto\032#google/spanne" + "r/v1/transaction.proto\032\034google/spanner/v" - + "1/type.proto\"\203\001\n\024CreateSessionRequest\0229\n" - + "\010database\030\001 \001(\tB\'\340A\002\372A!\n\037spanner.googlea" - + "pis.com/Database\0220\n\007session\030\002 \001(\0132\032.goog" - + "le.spanner.v1.SessionB\003\340A\002\"\251\001\n\032BatchCrea" - + "teSessionsRequest\0229\n\010database\030\001 \001(\tB\'\340A\002" - + "\372A!\n\037spanner.googleapis.com/Database\0224\n\020" - + "session_template\030\002 \001(\0132\032.google.spanner." - + "v1.Session\022\032\n\rsession_count\030\003 \001(\005B\003\340A\002\"J" - + "\n\033BatchCreateSessionsResponse\022+\n\007session" - + "\030\001 \003(\0132\032.google.spanner.v1.Session\"\211\003\n\007S" - + "ession\022\021\n\004name\030\001 \001(\tB\003\340A\003\0226\n\006labels\030\002 \003(" - + "\0132&.google.spanner.v1.Session.LabelsEntr" - + "y\0224\n\013create_time\030\003 \001(\0132\032.google.protobuf" - + ".TimestampB\003\340A\003\022B\n\031approximate_last_use_" - + "time\030\004 \001(\0132\032.google.protobuf.TimestampB\003" - + "\340A\003\022\024\n\014creator_role\030\005 \001(\t\032-\n\013LabelsEntry" - + "\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:t\352Aq\n\036s" - + "panner.googleapis.com/Session\022Oprojects/" - + "{project}/instances/{instance}/databases" - + "/{database}/sessions/{session}\"I\n\021GetSes" - + "sionRequest\0224\n\004name\030\001 \001(\tB&\340A\002\372A \n\036spann" - + "er.googleapis.com/Session\"\207\001\n\023ListSessio" - + "nsRequest\0229\n\010database\030\001 \001(\tB\'\340A\002\372A!\n\037spa" - + "nner.googleapis.com/Database\022\021\n\tpage_siz" - + "e\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\022\016\n\006filter\030\004 " - + "\001(\t\"]\n\024ListSessionsResponse\022,\n\010sessions\030" - + "\001 \003(\0132\032.google.spanner.v1.Session\022\027\n\017nex" - + "t_page_token\030\002 \001(\t\"L\n\024DeleteSessionReque" - + "st\0224\n\004name\030\001 \001(\tB&\340A\002\372A \n\036spanner.google" - + "apis.com/Session\"\334\001\n\016RequestOptions\022<\n\010p" - + "riority\030\001 \001(\0162*.google.spanner.v1.Reques" - + "tOptions.Priority\022\023\n\013request_tag\030\002 \001(\t\022\027" - + "\n\017transaction_tag\030\003 \001(\t\"^\n\010Priority\022\030\n\024P" - + "RIORITY_UNSPECIFIED\020\000\022\020\n\014PRIORITY_LOW\020\001\022" - + "\023\n\017PRIORITY_MEDIUM\020\002\022\021\n\rPRIORITY_HIGH\020\003\"" - + "\200\006\n\021ExecuteSqlRequest\0227\n\007session\030\001 \001(\tB&" - + "\340A\002\372A \n\036spanner.googleapis.com/Session\022;" - + "\n\013transaction\030\002 \001(\0132&.google.spanner.v1." - + "TransactionSelector\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n" - + "\006params\030\004 \001(\0132\027.google.protobuf.Struct\022I" - + "\n\013param_types\030\005 \003(\01324.google.spanner.v1." - + "ExecuteSqlRequest.ParamTypesEntry\022\024\n\014res" - + "ume_token\030\006 \001(\014\022B\n\nquery_mode\030\007 \001(\0162..go" - + "ogle.spanner.v1.ExecuteSqlRequest.QueryM" - + "ode\022\027\n\017partition_token\030\010 \001(\014\022\r\n\005seqno\030\t " - + "\001(\003\022H\n\rquery_options\030\n \001(\01321.google.span" - + "ner.v1.ExecuteSqlRequest.QueryOptions\022:\n" - + "\017request_options\030\013 \001(\0132!.google.spanner." - + "v1.RequestOptions\022\032\n\022data_boost_enabled\030" - + "\020 \001(\010\032O\n\014QueryOptions\022\031\n\021optimizer_versi" - + "on\030\001 \001(\t\022$\n\034optimizer_statistics_package" - + "\030\002 \001(\t\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&" - + "\n\005value\030\002 \001(\0132\027.google.spanner.v1.Type:\002" - + "8\001\".\n\tQueryMode\022\n\n\006NORMAL\020\000\022\010\n\004PLAN\020\001\022\013\n" - + "\007PROFILE\020\002\"\240\004\n\026ExecuteBatchDmlRequest\0227\n" - + "\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleap" - + "is.com/Session\022@\n\013transaction\030\002 \001(\0132&.go" - + "ogle.spanner.v1.TransactionSelectorB\003\340A\002" - + "\022L\n\nstatements\030\003 \003(\01323.google.spanner.v1" - + ".ExecuteBatchDmlRequest.StatementB\003\340A\002\022\022" - + "\n\005seqno\030\004 \001(\003B\003\340A\002\022:\n\017request_options\030\005 " - + "\001(\0132!.google.spanner.v1.RequestOptions\032\354" - + "\001\n\tStatement\022\020\n\003sql\030\001 \001(\tB\003\340A\002\022\'\n\006params" - + "\030\002 \001(\0132\027.google.protobuf.Struct\022X\n\013param" - + "_types\030\003 \003(\0132C.google.spanner.v1.Execute" - + "BatchDmlRequest.Statement.ParamTypesEntr" - + "y\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005val" - + "ue\030\002 \001(\0132\027.google.spanner.v1.Type:\0028\001\"p\n" - + "\027ExecuteBatchDmlResponse\0221\n\013result_sets\030" - + "\001 \003(\0132\034.google.spanner.v1.ResultSet\022\"\n\006s" - + "tatus\030\002 \001(\0132\022.google.rpc.Status\"H\n\020Parti" - + "tionOptions\022\034\n\024partition_size_bytes\030\001 \001(" - + "\003\022\026\n\016max_partitions\030\002 \001(\003\"\243\003\n\025PartitionQ" - + "ueryRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036sp" - + "anner.googleapis.com/Session\022;\n\013transact" - + "ion\030\002 \001(\0132&.google.spanner.v1.Transactio" - + "nSelector\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n\006params\030\004 " - + "\001(\0132\027.google.protobuf.Struct\022M\n\013param_ty" - + "pes\030\005 \003(\01328.google.spanner.v1.PartitionQ" - + "ueryRequest.ParamTypesEntry\022>\n\021partition" - + "_options\030\006 \001(\0132#.google.spanner.v1.Parti" - + "tionOptions\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 " - + "\001(\t\022&\n\005value\030\002 \001(\0132\027.google.spanner.v1.T" - + "ype:\0028\001\"\261\002\n\024PartitionReadRequest\0227\n\007sess" - + "ion\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleapis.co" + + "1/type.proto\"\205\001\n\024CreateSessionRequest\022:\n" + + "\010database\030\001 \001(\tB(\342A\001\002\372A!\n\037spanner.google" + + "apis.com/Database\0221\n\007session\030\002 \001(\0132\032.goo" + + "gle.spanner.v1.SessionB\004\342A\001\002\"\253\001\n\032BatchCr" + + "eateSessionsRequest\022:\n\010database\030\001 \001(\tB(\342" + + "A\001\002\372A!\n\037spanner.googleapis.com/Database\022" + + "4\n\020session_template\030\002 \001(\0132\032.google.spann" + + "er.v1.Session\022\033\n\rsession_count\030\003 \001(\005B\004\342A" + + "\001\002\"J\n\033BatchCreateSessionsResponse\022+\n\007ses" + + "sion\030\001 \003(\0132\032.google.spanner.v1.Session\"\214" + + "\003\n\007Session\022\022\n\004name\030\001 \001(\tB\004\342A\001\003\0226\n\006labels" + + "\030\002 \003(\0132&.google.spanner.v1.Session.Label" + + "sEntry\0225\n\013create_time\030\003 \001(\0132\032.google.pro" + + "tobuf.TimestampB\004\342A\001\003\022C\n\031approximate_las" + + "t_use_time\030\004 \001(\0132\032.google.protobuf.Times" + + "tampB\004\342A\001\003\022\024\n\014creator_role\030\005 \001(\t\032-\n\013Labe" + + "lsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:" + + "t\352Aq\n\036spanner.googleapis.com/Session\022Opr" + + "ojects/{project}/instances/{instance}/da" + + "tabases/{database}/sessions/{session}\"J\n" + + "\021GetSessionRequest\0225\n\004name\030\001 \001(\tB\'\342A\001\002\372A" + + " \n\036spanner.googleapis.com/Session\"\210\001\n\023Li" + + "stSessionsRequest\022:\n\010database\030\001 \001(\tB(\342A\001" + + "\002\372A!\n\037spanner.googleapis.com/Database\022\021\n" + + "\tpage_size\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\022\016\n\006" + + "filter\030\004 \001(\t\"]\n\024ListSessionsResponse\022,\n\010" + + "sessions\030\001 \003(\0132\032.google.spanner.v1.Sessi" + + "on\022\027\n\017next_page_token\030\002 \001(\t\"M\n\024DeleteSes" + + "sionRequest\0225\n\004name\030\001 \001(\tB\'\342A\001\002\372A \n\036span" + + "ner.googleapis.com/Session\"\334\001\n\016RequestOp" + + "tions\022<\n\010priority\030\001 \001(\0162*.google.spanner" + + ".v1.RequestOptions.Priority\022\023\n\013request_t" + + "ag\030\002 \001(\t\022\027\n\017transaction_tag\030\003 \001(\t\"^\n\010Pri" + + "ority\022\030\n\024PRIORITY_UNSPECIFIED\020\000\022\020\n\014PRIOR" + + "ITY_LOW\020\001\022\023\n\017PRIORITY_MEDIUM\020\002\022\021\n\rPRIORI" + + "TY_HIGH\020\003\"\202\006\n\021ExecuteSqlRequest\0228\n\007sessi" + + "on\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googleapis.co" + "m/Session\022;\n\013transaction\030\002 \001(\0132&.google." - + "spanner.v1.TransactionSelector\022\022\n\005table\030" - + "\003 \001(\tB\003\340A\002\022\r\n\005index\030\004 \001(\t\022\017\n\007columns\030\005 \003" - + "(\t\022/\n\007key_set\030\006 \001(\0132\031.google.spanner.v1." - + "KeySetB\003\340A\002\022>\n\021partition_options\030\t \001(\0132#" - + ".google.spanner.v1.PartitionOptions\"$\n\tP" - + "artition\022\027\n\017partition_token\030\001 \001(\014\"z\n\021Par" - + "titionResponse\0220\n\npartitions\030\001 \003(\0132\034.goo" - + "gle.spanner.v1.Partition\0223\n\013transaction\030" - + "\002 \001(\0132\036.google.spanner.v1.Transaction\"\203\003" - + "\n\013ReadRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036" - + "spanner.googleapis.com/Session\022;\n\013transa" - + "ction\030\002 \001(\0132&.google.spanner.v1.Transact" - + "ionSelector\022\022\n\005table\030\003 \001(\tB\003\340A\002\022\r\n\005index" - + "\030\004 \001(\t\022\024\n\007columns\030\005 \003(\tB\003\340A\002\022/\n\007key_set\030" - + "\006 \001(\0132\031.google.spanner.v1.KeySetB\003\340A\002\022\r\n" - + "\005limit\030\010 \001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017pa" - + "rtition_token\030\n \001(\014\022:\n\017request_options\030\013" - + " \001(\0132!.google.spanner.v1.RequestOptions\022" - + "\032\n\022data_boost_enabled\030\017 \001(\010\"\313\001\n\027BeginTra" - + "nsactionRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A " - + "\n\036spanner.googleapis.com/Session\022;\n\007opti" - + "ons\030\002 \001(\0132%.google.spanner.v1.Transactio" - + "nOptionsB\003\340A\002\022:\n\017request_options\030\003 \001(\0132!" - + ".google.spanner.v1.RequestOptions\"\303\002\n\rCo" - + "mmitRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036sp" - + "anner.googleapis.com/Session\022\030\n\016transact" - + "ion_id\030\002 \001(\014H\000\022G\n\026single_use_transaction" - + "\030\003 \001(\0132%.google.spanner.v1.TransactionOp" - + "tionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.span" - + "ner.v1.Mutation\022\033\n\023return_commit_stats\030\005" - + " \001(\010\022:\n\017request_options\030\006 \001(\0132!.google.s" - + "panner.v1.RequestOptionsB\r\n\013transaction\"" - + "g\n\017RollbackRequest\0227\n\007session\030\001 \001(\tB&\340A\002" - + "\372A \n\036spanner.googleapis.com/Session\022\033\n\016t" - + "ransaction_id\030\002 \001(\014B\003\340A\0022\300\026\n\007Spanner\022\246\001\n" - + "\rCreateSession\022\'.google.spanner.v1.Creat" - + "eSessionRequest\032\032.google.spanner.v1.Sess" - + "ion\"P\202\323\344\223\002?\":/v1/{database=projects/*/in" - + "stances/*/databases/*}/sessions:\001*\332A\010dat" - + "abase\022\340\001\n\023BatchCreateSessions\022-.google.s" - + "panner.v1.BatchCreateSessionsRequest\032..g" - + "oogle.spanner.v1.BatchCreateSessionsResp" - + "onse\"j\202\323\344\223\002K\"F/v1/{database=projects/*/i" - + "nstances/*/databases/*}/sessions:batchCr" - + "eate:\001*\332A\026database,session_count\022\227\001\n\nGet" - + "Session\022$.google.spanner.v1.GetSessionRe" - + "quest\032\032.google.spanner.v1.Session\"G\202\323\344\223\002" - + ":\0228/v1/{name=projects/*/instances/*/data" - + "bases/*/sessions/*}\332A\004name\022\256\001\n\014ListSessi" - + "ons\022&.google.spanner.v1.ListSessionsRequ" - + "est\032\'.google.spanner.v1.ListSessionsResp" - + "onse\"M\202\323\344\223\002<\022:/v1/{database=projects/*/i" - + "nstances/*/databases/*}/sessions\332A\010datab" - + "ase\022\231\001\n\rDeleteSession\022\'.google.spanner.v" - + "1.DeleteSessionRequest\032\026.google.protobuf" - + ".Empty\"G\202\323\344\223\002:*8/v1/{name=projects/*/ins" - + "tances/*/databases/*/sessions/*}\332A\004name\022" - + "\243\001\n\nExecuteSql\022$.google.spanner.v1.Execu" - + "teSqlRequest\032\034.google.spanner.v1.ResultS" - + "et\"Q\202\323\344\223\002K\"F/v1/{session=projects/*/inst" - + "ances/*/databases/*/sessions/*}:executeS" - + "ql:\001*\022\276\001\n\023ExecuteStreamingSql\022$.google.s" - + "panner.v1.ExecuteSqlRequest\032#.google.spa" - + "nner.v1.PartialResultSet\"Z\202\323\344\223\002T\"O/v1/{s" - + "ession=projects/*/instances/*/databases/" - + "*/sessions/*}:executeStreamingSql:\001*0\001\022\300" - + "\001\n\017ExecuteBatchDml\022).google.spanner.v1.E" - + "xecuteBatchDmlRequest\032*.google.spanner.v" - + "1.ExecuteBatchDmlResponse\"V\202\323\344\223\002P\"K/v1/{" - + "session=projects/*/instances/*/databases" - + "/*/sessions/*}:executeBatchDml:\001*\022\221\001\n\004Re" - + "ad\022\036.google.spanner.v1.ReadRequest\032\034.goo" - + "gle.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@/v1/{s" - + "ession=projects/*/instances/*/databases/" - + "*/sessions/*}:read:\001*\022\254\001\n\rStreamingRead\022" - + "\036.google.spanner.v1.ReadRequest\032#.google" - + ".spanner.v1.PartialResultSet\"T\202\323\344\223\002N\"I/v" - + "1/{session=projects/*/instances/*/databa" - + "ses/*/sessions/*}:streamingRead:\001*0\001\022\311\001\n" - + "\020BeginTransaction\022*.google.spanner.v1.Be" - + "ginTransactionRequest\032\036.google.spanner.v" - + "1.Transaction\"i\202\323\344\223\002Q\"L/v1/{session=proj" - + "ects/*/instances/*/databases/*/sessions/" - + "*}:beginTransaction:\001*\332A\017session,options" - + "\022\353\001\n\006Commit\022 .google.spanner.v1.CommitRe" - + "quest\032!.google.spanner.v1.CommitResponse" - + "\"\233\001\202\323\344\223\002G\"B/v1/{session=projects/*/insta" - + "nces/*/databases/*/sessions/*}:commit:\001*" - + "\332A session,transaction_id,mutations\332A(se" - + "ssion,single_use_transaction,mutations\022\260" - + "\001\n\010Rollback\022\".google.spanner.v1.Rollback" - + "Request\032\026.google.protobuf.Empty\"h\202\323\344\223\002I\"" - + "D/v1/{session=projects/*/instances/*/dat" - + "abases/*/sessions/*}:rollback:\001*\332A\026sessi" - + "on,transaction_id\022\267\001\n\016PartitionQuery\022(.g" - + "oogle.spanner.v1.PartitionQueryRequest\032$" - + ".google.spanner.v1.PartitionResponse\"U\202\323" - + "\344\223\002O\"J/v1/{session=projects/*/instances/" - + "*/databases/*/sessions/*}:partitionQuery" - + ":\001*\022\264\001\n\rPartitionRead\022\'.google.spanner.v" - + "1.PartitionReadRequest\032$.google.spanner." - + "v1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/{sessi" - + "on=projects/*/instances/*/databases/*/se" - + "ssions/*}:partitionRead:\001*\032w\312A\026spanner.g" - + "oogleapis.com\322A[https://www.googleapis.c" - + "om/auth/cloud-platform,https://www.googl" - + "eapis.com/auth/spanner.dataB\221\002\n\025com.goog" - + "le.spanner.v1B\014SpannerProtoP\001Z5cloud.goo" - + "gle.com/go/spanner/apiv1/spannerpb;spann" - + "erpb\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\" - + "Cloud\\Spanner\\V1\352\002\032Google::Cloud::Spanne" - + "r::V1\352A_\n\037spanner.googleapis.com/Databas" - + "e\022\n\021partition_options\030\006 \001(\0132#.goog" + + "le.spanner.v1.PartitionOptions\032J\n\017ParamT" + + "ypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027." + + "google.spanner.v1.Type:\0028\001\"\264\002\n\024Partition" + + "ReadRequest\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036s" + + "panner.googleapis.com/Session\022;\n\013transac" + + "tion\030\002 \001(\0132&.google.spanner.v1.Transacti" + + "onSelector\022\023\n\005table\030\003 \001(\tB\004\342A\001\002\022\r\n\005index" + + "\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\0220\n\007key_set\030\006 \001(\013" + + "2\031.google.spanner.v1.KeySetB\004\342A\001\002\022>\n\021par" + + "tition_options\030\t \001(\0132#.google.spanner.v1" + + ".PartitionOptions\"$\n\tPartition\022\027\n\017partit" + + "ion_token\030\001 \001(\014\"z\n\021PartitionResponse\0220\n\n" + + "partitions\030\001 \003(\0132\034.google.spanner.v1.Par" + + "tition\0223\n\013transaction\030\002 \001(\0132\036.google.spa" + + "nner.v1.Transaction\"\207\003\n\013ReadRequest\0228\n\007s" + + "ession\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googleapi" + + "s.com/Session\022;\n\013transaction\030\002 \001(\0132&.goo" + + "gle.spanner.v1.TransactionSelector\022\023\n\005ta" + + "ble\030\003 \001(\tB\004\342A\001\002\022\r\n\005index\030\004 \001(\t\022\025\n\007column" + + "s\030\005 \003(\tB\004\342A\001\002\0220\n\007key_set\030\006 \001(\0132\031.google." + + "spanner.v1.KeySetB\004\342A\001\002\022\r\n\005limit\030\010 \001(\003\022\024" + + "\n\014resume_token\030\t \001(\014\022\027\n\017partition_token\030" + + "\n \001(\014\022:\n\017request_options\030\013 \001(\0132!.google." + + "spanner.v1.RequestOptions\022\032\n\022data_boost_" + + "enabled\030\017 \001(\010\"\315\001\n\027BeginTransactionReques" + + "t\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.goo" + + "gleapis.com/Session\022<\n\007options\030\002 \001(\0132%.g" + + "oogle.spanner.v1.TransactionOptionsB\004\342A\001" + + "\002\022:\n\017request_options\030\003 \001(\0132!.google.span" + + "ner.v1.RequestOptions\"\304\002\n\rCommitRequest\022" + + "8\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googl" + + "eapis.com/Session\022\030\n\016transaction_id\030\002 \001(" + + "\014H\000\022G\n\026single_use_transaction\030\003 \001(\0132%.go" + + "ogle.spanner.v1.TransactionOptionsH\000\022.\n\t" + + "mutations\030\004 \003(\0132\033.google.spanner.v1.Muta" + + "tion\022\033\n\023return_commit_stats\030\005 \001(\010\022:\n\017req" + + "uest_options\030\006 \001(\0132!.google.spanner.v1.R" + + "equestOptionsB\r\n\013transaction\"i\n\017Rollback" + + "Request\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spann" + + "er.googleapis.com/Session\022\034\n\016transaction" + + "_id\030\002 \001(\014B\004\342A\001\0022\300\026\n\007Spanner\022\246\001\n\rCreateSe" + + "ssion\022\'.google.spanner.v1.CreateSessionR" + + "equest\032\032.google.spanner.v1.Session\"P\332A\010d" + + "atabase\202\323\344\223\002?\":/v1/{database=projects/*/" + + "instances/*/databases/*}/sessions:\001*\022\340\001\n" + + "\023BatchCreateSessions\022-.google.spanner.v1" + + ".BatchCreateSessionsRequest\032..google.spa" + + "nner.v1.BatchCreateSessionsResponse\"j\332A\026" + + "database,session_count\202\323\344\223\002K\"F/v1/{datab" + + "ase=projects/*/instances/*/databases/*}/" + + "sessions:batchCreate:\001*\022\227\001\n\nGetSession\022$" + + ".google.spanner.v1.GetSessionRequest\032\032.g" + + "oogle.spanner.v1.Session\"G\332A\004name\202\323\344\223\002:\022" + + "8/v1/{name=projects/*/instances/*/databa" + + "ses/*/sessions/*}\022\256\001\n\014ListSessions\022&.goo" + + "gle.spanner.v1.ListSessionsRequest\032\'.goo" + + "gle.spanner.v1.ListSessionsResponse\"M\332A\010" + + "database\202\323\344\223\002<\022:/v1/{database=projects/*" + + "/instances/*/databases/*}/sessions\022\231\001\n\rD" + + "eleteSession\022\'.google.spanner.v1.DeleteS" + + "essionRequest\032\026.google.protobuf.Empty\"G\332" + + "A\004name\202\323\344\223\002:*8/v1/{name=projects/*/insta" + + "nces/*/databases/*/sessions/*}\022\243\001\n\nExecu" + + "teSql\022$.google.spanner.v1.ExecuteSqlRequ" + + "est\032\034.google.spanner.v1.ResultSet\"Q\202\323\344\223\002" + + "K\"F/v1/{session=projects/*/instances/*/d" + + "atabases/*/sessions/*}:executeSql:\001*\022\276\001\n" + + "\023ExecuteStreamingSql\022$.google.spanner.v1" + + ".ExecuteSqlRequest\032#.google.spanner.v1.P" + + "artialResultSet\"Z\202\323\344\223\002T\"O/v1/{session=pr" + + "ojects/*/instances/*/databases/*/session" + + "s/*}:executeStreamingSql:\001*0\001\022\300\001\n\017Execut" + + "eBatchDml\022).google.spanner.v1.ExecuteBat" + + "chDmlRequest\032*.google.spanner.v1.Execute" + + "BatchDmlResponse\"V\202\323\344\223\002P\"K/v1/{session=p" + + "rojects/*/instances/*/databases/*/sessio" + + "ns/*}:executeBatchDml:\001*\022\221\001\n\004Read\022\036.goog" + + "le.spanner.v1.ReadRequest\032\034.google.spann" + + "er.v1.ResultSet\"K\202\323\344\223\002E\"@/v1/{session=pr" + + "ojects/*/instances/*/databases/*/session" + + "s/*}:read:\001*\022\254\001\n\rStreamingRead\022\036.google." + + "spanner.v1.ReadRequest\032#.google.spanner." + + "v1.PartialResultSet\"T\202\323\344\223\002N\"I/v1/{sessio" + + "n=projects/*/instances/*/databases/*/ses" + + "sions/*}:streamingRead:\001*0\001\022\311\001\n\020BeginTra" + + "nsaction\022*.google.spanner.v1.BeginTransa" + + "ctionRequest\032\036.google.spanner.v1.Transac" + + "tion\"i\332A\017session,options\202\323\344\223\002Q\"L/v1/{ses" + + "sion=projects/*/instances/*/databases/*/" + + "sessions/*}:beginTransaction:\001*\022\353\001\n\006Comm" + + "it\022 .google.spanner.v1.CommitRequest\032!.g" + + "oogle.spanner.v1.CommitResponse\"\233\001\332A ses" + + "sion,transaction_id,mutations\332A(session," + + "single_use_transaction,mutations\202\323\344\223\002G\"B" + + "/v1/{session=projects/*/instances/*/data" + + "bases/*/sessions/*}:commit:\001*\022\260\001\n\010Rollba" + + "ck\022\".google.spanner.v1.RollbackRequest\032\026" + + ".google.protobuf.Empty\"h\332A\026session,trans" + + "action_id\202\323\344\223\002I\"D/v1/{session=projects/*" + + "/instances/*/databases/*/sessions/*}:rol" + + "lback:\001*\022\267\001\n\016PartitionQuery\022(.google.spa" + + "nner.v1.PartitionQueryRequest\032$.google.s" + + "panner.v1.PartitionResponse\"U\202\323\344\223\002O\"J/v1" + + "/{session=projects/*/instances/*/databas" + + "es/*/sessions/*}:partitionQuery:\001*\022\264\001\n\rP" + + "artitionRead\022\'.google.spanner.v1.Partiti" + + "onReadRequest\032$.google.spanner.v1.Partit" + + "ionResponse\"T\202\323\344\223\002N\"I/v1/{session=projec" + + "ts/*/instances/*/databases/*/sessions/*}" + + ":partitionRead:\001*\032w\312A\026spanner.googleapis" + + ".com\322A[https://www.googleapis.com/auth/c" + + "loud-platform,https://www.googleapis.com" + + "/auth/spanner.dataB\221\002\n\025com.google.spanne" + + "r.v1B\014SpannerProtoP\001Z5cloud.google.com/g" + + "o/spanner/apiv1/spannerpb;spannerpb\252\002\027Go" + + "ogle.Cloud.Spanner.V1\312\002\027Google\\Cloud\\Spa" + + "nner\\V1\352\002\032Google::Cloud::Spanner::V1\352A_\n" + + "\037spanner.googleapis.com/Database\022 @@ -100,6 +96,7 @@ public com.google.protobuf.ByteString getId() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -119,6 +116,7 @@ public boolean hasReadTimestamp() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -140,6 +138,7 @@ public com.google.protobuf.Timestamp getReadTimestamp() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -531,6 +530,7 @@ public Builder mergeFrom( * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], * [Commit][google.spanner.v1.Spanner.Commit], or * [Rollback][google.spanner.v1.Spanner.Rollback] calls. + * * Single-use read-only transactions do not have IDs, because * single-use transactions do not support multiple requests. *
    @@ -552,6 +552,7 @@ public com.google.protobuf.ByteString getId() { * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], * [Commit][google.spanner.v1.Spanner.Commit], or * [Rollback][google.spanner.v1.Spanner.Rollback] calls. + * * Single-use read-only transactions do not have IDs, because * single-use transactions do not support multiple requests. *
    @@ -579,6 +580,7 @@ public Builder setId(com.google.protobuf.ByteString value) { * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], * [Commit][google.spanner.v1.Spanner.Commit], or * [Rollback][google.spanner.v1.Spanner.Rollback] calls. + * * Single-use read-only transactions do not have IDs, because * single-use transactions do not support multiple requests. *
    @@ -607,6 +609,7 @@ public Builder clearId() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -625,6 +628,7 @@ public boolean hasReadTimestamp() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -649,6 +653,7 @@ public com.google.protobuf.Timestamp getReadTimestamp() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -675,6 +680,7 @@ public Builder setReadTimestamp(com.google.protobuf.Timestamp value) { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -698,6 +704,7 @@ public Builder setReadTimestamp(com.google.protobuf.Timestamp.Builder builderFor * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -727,6 +734,7 @@ public Builder mergeReadTimestamp(com.google.protobuf.Timestamp value) { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -750,6 +758,7 @@ public Builder clearReadTimestamp() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -768,6 +777,7 @@ public com.google.protobuf.Timestamp.Builder getReadTimestampBuilder() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -790,6 +800,7 @@ public com.google.protobuf.TimestampOrBuilder getReadTimestampOrBuilder() { * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    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 85b7624ebe4..d731f85b08a 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 @@ -23,18 +23,23 @@ * *
      * Transactions:
    + *
      * Each session can have at most one active transaction at a time (note that
      * standalone reads and queries use a transaction internally and do count
      * towards the one transaction limit). After the active transaction is
      * completed, the session can immediately be re-used for the next transaction.
      * It is not necessary to create a new session for each transaction.
    + *
      * Transaction modes:
    + *
      * Cloud Spanner supports three transaction modes:
    + *
      *   1. Locking read-write. This type of transaction is the only way
      *      to write data into Cloud Spanner. These transactions rely on
      *      pessimistic locking and, if necessary, two-phase commit.
      *      Locking read-write transactions may abort, requiring the
      *      application to retry.
    + *
      *   2. Snapshot read-only. Snapshot read-only transactions provide guaranteed
      *      consistency across several reads, but do not allow
      *      writes. Snapshot read-only transactions can be configured to read at
    @@ -43,28 +48,35 @@
      *      guaranteed to see the effects of all transactions that have committed
      *      before the start of the read). Snapshot read-only transactions do not
      *      need to be committed.
    + *
      *      Queries on change streams must be performed with the snapshot read-only
      *      transaction mode, specifying a strong read. Please see
      *      [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong]
      *      for more details.
    + *
      *   3. Partitioned DML. This type of transaction is used to execute
      *      a single Partitioned DML statement. Partitioned DML partitions
      *      the key space and runs the DML statement over each partition
      *      in parallel using separate, internal transactions that commit
      *      independently. Partitioned DML transactions do not need to be
      *      committed.
    + *
      * For transactions that only read, snapshot read-only transactions
      * provide simpler semantics and are almost always faster. In
      * particular, read-only transactions do not take locks, so they do
      * not conflict with read-write transactions. As a consequence of not
      * taking locks, they also do not abort, so retry loops are not needed.
    + *
      * Transactions may only read-write data in a single database. They
      * may, however, read-write data in different tables within that
      * database.
    + *
      * Locking read-write transactions:
    + *
      * Locking transactions may be used to atomically read-modify-write
      * data anywhere in a database. This type of transaction is externally
      * consistent.
    + *
      * Clients should attempt to minimize the amount of time a transaction
      * is active. Faster transactions commit with higher probability
      * and cause less contention. Cloud Spanner attempts to keep read locks
    @@ -74,87 +86,113 @@
      * [Rollback][google.spanner.v1.Spanner.Rollback]. Long periods of
      * inactivity at the client may cause Cloud Spanner to release a
      * transaction's locks and abort it.
    + *
      * Conceptually, a read-write transaction consists of zero or more
      * reads or SQL statements followed by
      * [Commit][google.spanner.v1.Spanner.Commit]. At any time before
      * [Commit][google.spanner.v1.Spanner.Commit], the client can send a
      * [Rollback][google.spanner.v1.Spanner.Rollback] request to abort the
      * transaction.
    + *
      * Semantics:
    + *
      * Cloud Spanner can commit the transaction if all read locks it acquired
      * are still valid at commit time, and it is able to acquire write
      * locks for all writes. Cloud Spanner can abort the transaction for any
      * reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
      * that the transaction has not modified any user data in Cloud Spanner.
    + *
      * Unless the transaction commits, Cloud Spanner makes no guarantees about
      * how long the transaction's locks were held for. It is an error to
      * use Cloud Spanner locks for any sort of mutual exclusion other than
      * between Cloud Spanner transactions themselves.
    + *
      * Retrying aborted transactions:
    + *
      * When a transaction aborts, the application can choose to retry the
      * whole transaction again. To maximize the chances of successfully
      * committing the retry, the client should execute the retry in the
      * same session as the original attempt. The original session's lock
      * priority increases with each consecutive abort, meaning that each
      * attempt has a slightly better chance of success than the previous.
    + *
      * Under some circumstances (for example, many transactions attempting to
      * modify the same row(s)), a transaction can abort many times in a
      * short period before successfully committing. Thus, it is not a good
      * idea to cap the number of retries a transaction can attempt;
      * instead, it is better to limit the total amount of time spent
      * retrying.
    + *
      * Idle transactions:
    + *
      * A transaction is considered idle if it has no outstanding reads or
      * SQL queries and has not started a read or SQL query within the last 10
      * seconds. Idle transactions can be aborted by Cloud Spanner so that they
      * don't hold on to locks indefinitely. If an idle transaction is aborted, the
      * commit will fail with error `ABORTED`.
    + *
      * If this behavior is undesirable, periodically executing a simple
      * SQL query in the transaction (for example, `SELECT 1`) prevents the
      * transaction from becoming idle.
    + *
      * Snapshot read-only transactions:
    + *
      * Snapshot read-only transactions provides a simpler method than
      * locking read-write transactions for doing several consistent
      * reads. However, this type of transaction does not support writes.
    + *
      * Snapshot transactions do not take locks. Instead, they work by
      * choosing a Cloud Spanner timestamp, then executing all reads at that
      * timestamp. Since they do not acquire locks, they do not block
      * concurrent read-write transactions.
    + *
      * Unlike locking read-write transactions, snapshot read-only
      * transactions never abort. They can fail if the chosen read
      * timestamp is garbage collected; however, the default garbage
      * collection policy is generous enough that most applications do not
      * need to worry about this in practice.
    + *
      * Snapshot read-only transactions do not need to call
      * [Commit][google.spanner.v1.Spanner.Commit] or
      * [Rollback][google.spanner.v1.Spanner.Rollback] (and in fact are not
      * permitted to do so).
    + *
      * To execute a snapshot transaction, the client specifies a timestamp
      * bound, which tells Cloud Spanner how to choose a read timestamp.
    + *
      * The types of timestamp bound are:
    + *
      *   - Strong (the default).
      *   - Bounded staleness.
      *   - Exact staleness.
    + *
      * If the Cloud Spanner database to be read is geographically distributed,
      * stale read-only transactions can execute more quickly than strong
      * or read-write transactions, because they are able to execute far
      * from the leader replica.
    + *
      * Each type of timestamp bound is discussed in detail below.
    + *
      * Strong: Strong reads are guaranteed to see the effects of all transactions
      * that have committed before the start of the read. Furthermore, all
      * rows yielded by a single read are consistent with each other -- if
      * any part of the read observes a transaction, all parts of the read
      * see the transaction.
    + *
      * Strong reads are not repeatable: two consecutive strong read-only
      * transactions might return inconsistent results if there are
      * concurrent writes. If consistency across reads is required, the
      * reads should be executed within a transaction or at an exact read
      * timestamp.
    + *
      * Queries on change streams (see below for more details) must also specify
      * the strong read timestamp bound.
    + *
      * See
      * [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong].
    + *
      * Exact staleness:
    + *
      * These timestamp bounds execute reads at a user-specified
      * timestamp. Reads at a timestamp are guaranteed to see a consistent
      * prefix of the global transaction history: they observe
    @@ -163,42 +201,54 @@
      * transactions with a larger commit timestamp. They will block until
      * all conflicting transactions that may be assigned commit timestamps
      * <= the read timestamp have finished.
    + *
      * The timestamp can either be expressed as an absolute Cloud Spanner commit
      * timestamp or a staleness relative to the current time.
    + *
      * These modes do not require a "negotiation phase" to pick a
      * timestamp. As a result, they execute slightly faster than the
      * equivalent boundedly stale concurrency modes. On the other hand,
      * boundedly stale reads usually return fresher results.
    + *
      * See
      * [TransactionOptions.ReadOnly.read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.read_timestamp]
      * and
      * [TransactionOptions.ReadOnly.exact_staleness][google.spanner.v1.TransactionOptions.ReadOnly.exact_staleness].
    + *
      * Bounded staleness:
    + *
      * Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
      * subject to a user-provided staleness bound. Cloud Spanner chooses the
      * newest timestamp within the staleness bound that allows execution
      * of the reads at the closest available replica without blocking.
    + *
      * All rows yielded are consistent with each other -- if any part of
      * the read observes a transaction, all parts of the read see the
      * transaction. Boundedly stale reads are not repeatable: two stale
      * reads, even if they use the same staleness bound, can execute at
      * different timestamps and thus return inconsistent results.
    + *
      * Boundedly stale reads execute in two phases: the first phase
      * negotiates a timestamp among all replicas needed to serve the
      * read. In the second phase, reads are executed at the negotiated
      * timestamp.
    + *
      * As a result of the two phase execution, bounded staleness reads are
      * usually a little slower than comparable exact staleness
      * reads. However, they are typically able to return fresher
      * results, and are more likely to execute at the closest replica.
    + *
      * Because the timestamp negotiation requires up-front knowledge of
      * which rows will be read, it can only be used with single-use
      * read-only transactions.
    + *
      * See
      * [TransactionOptions.ReadOnly.max_staleness][google.spanner.v1.TransactionOptions.ReadOnly.max_staleness]
      * and
      * [TransactionOptions.ReadOnly.min_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.min_read_timestamp].
    + *
      * Old read timestamps and garbage collection:
    + *
      * Cloud Spanner continuously garbage collects deleted and overwritten data
      * in the background to reclaim storage space. This process is known
      * as "version GC". By default, version GC reclaims versions after they
    @@ -207,18 +257,23 @@
      * restriction also applies to in-progress reads and/or SQL queries whose
      * timestamp become too old while executing. Reads and SQL queries with
      * too-old read timestamps fail with the error `FAILED_PRECONDITION`.
    + *
      * You can configure and extend the `VERSION_RETENTION_PERIOD` of a
      * database up to a period as long as one week, which allows Cloud Spanner
      * to perform reads up to one week in the past.
    + *
      * Querying change Streams:
    + *
      * A Change Stream is a schema object that can be configured to watch data
      * changes on the entire database, a set of tables, or a set of columns
      * in a database.
    + *
      * When a change stream is created, Spanner automatically defines a
      * corresponding SQL Table-Valued Function (TVF) that can be used to query
      * the change records in the associated change stream using the
      * ExecuteStreamingSql API. The name of the TVF for a change stream is
      * generated from the name of the change stream: READ_<change_stream_name>.
    + *
      * All queries on change stream TVFs must be executed using the
      * ExecuteStreamingSql API with a single-use read-only transaction with a
      * strong read-only timestamp_bound. The change stream TVF allows users to
    @@ -226,34 +281,44 @@
      * interest. All change records within the retention period is accessible
      * using the strong read-only timestamp_bound. All other TransactionOptions
      * are invalid for change stream queries.
    + *
      * In addition, if TransactionOptions.read_only.return_read_timestamp is set
      * to true, a special value of 2^63 - 2 will be returned in the
      * [Transaction][google.spanner.v1.Transaction] message that describes the
      * transaction, instead of a valid read timestamp. This special value should be
      * discarded and not used for any subsequent queries.
    + *
      * Please see https://cloud.google.com/spanner/docs/change-streams
      * for more details on how to query the change stream TVFs.
    + *
      * Partitioned DML transactions:
    + *
      * Partitioned DML transactions are used to execute DML statements with a
      * different execution strategy that provides different, and often better,
      * scalability properties for large, table-wide operations than DML in a
      * ReadWrite transaction. Smaller scoped statements, such as an OLTP workload,
      * should prefer using ReadWrite transactions.
    + *
      * Partitioned DML partitions the keyspace and runs the DML statement on each
      * partition in separate, internal transactions. These transactions commit
      * automatically when complete, and run independently from one another.
    + *
      * To reduce lock contention, this execution strategy only acquires read locks
      * on rows that match the WHERE clause of the statement. Additionally, the
      * smaller per-partition transactions hold locks for less time.
    + *
      * That said, Partitioned DML is not a drop-in replacement for standard DML used
      * in ReadWrite transactions.
    + *
      *  - The DML statement must be fully-partitionable. Specifically, the statement
      *    must be expressible as the union of many statements which each access only
      *    a single row of the table.
    + *
      *  - The statement is not applied atomically to all rows of the table. Rather,
      *    the statement is applied atomically to partitions of the table, in
      *    independent transactions. Secondary index rows are updated atomically
      *    with the base table rows.
    + *
      *  - Partitioned DML does not guarantee exactly-once execution semantics
      *    against a partition. The statement will be applied at least once to each
      *    partition. It is strongly recommended that the DML statement should be
    @@ -261,19 +326,23 @@
      *    dangerous to run a statement such as
      *    `UPDATE table SET column = column + 1` as it could be run multiple times
      *    against some rows.
    + *
      *  - The partitions are committed automatically - there is no support for
      *    Commit or Rollback. If the call returns an error, or if the client issuing
      *    the ExecuteSql call dies, it is possible that some rows had the statement
      *    executed on them successfully. It is also possible that statement was
      *    never executed against other rows.
    + *
      *  - Partitioned DML transactions may only contain the execution of a single
      *    DML statement via ExecuteSql or ExecuteStreamingSql.
    + *
      *  - If any error is encountered during the execution of the partitioned DML
      *    operation (for instance, a UNIQUE INDEX violation, division by zero, or a
      *    value that cannot be stored due to schema constraints), then the
      *    operation is stopped at that point and an error is returned. It is
      *    possible that at this point, some partitions have been committed (or even
      *    committed multiple times), and other partitions have not been run at all.
    + *
      * Given the above, Partitioned DML is good fit for large, database-wide,
      * operations that are idempotent, such as deleting old rows from a very large
      * table.
    @@ -299,11 +368,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
         return new TransactionOptions();
       }
     
    -  @java.lang.Override
    -  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -    return this.unknownFields;
    -  }
    -
       public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
         return com.google.spanner.v1.TransactionProto
             .internal_static_google_spanner_v1_TransactionOptions_descriptor;
    @@ -379,11 +443,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
           return new ReadWrite();
         }
     
    -    @java.lang.Override
    -    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -      return this.unknownFields;
    -    }
    -
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
           return com.google.spanner.v1.TransactionProto
               .internal_static_google_spanner_v1_TransactionOptions_ReadWrite_descriptor;
    @@ -415,6 +474,7 @@ public enum ReadLockMode implements com.google.protobuf.ProtocolMessageEnum {
            *
            * 
            * Default value.
    +       *
            * If the value is not specified, the pessimistic read lock is used.
            * 
    * @@ -426,6 +486,7 @@ public enum ReadLockMode implements com.google.protobuf.ProtocolMessageEnum { * *
            * Pessimistic lock mode.
    +       *
            * Read locks are acquired immediately on read.
            * 
    * @@ -437,6 +498,7 @@ public enum ReadLockMode implements com.google.protobuf.ProtocolMessageEnum { * *
            * Optimistic lock mode.
    +       *
            * Locks for reads within the transaction are not acquired on read.
            * Instead the locks are acquired on a commit to validate that
            * read/queried data has not changed since the transaction started.
    @@ -453,6 +515,7 @@ public enum ReadLockMode implements com.google.protobuf.ProtocolMessageEnum {
            *
            * 
            * Default value.
    +       *
            * If the value is not specified, the pessimistic read lock is used.
            * 
    * @@ -464,6 +527,7 @@ public enum ReadLockMode implements com.google.protobuf.ProtocolMessageEnum { * *
            * Pessimistic lock mode.
    +       *
            * Read locks are acquired immediately on read.
            * 
    * @@ -475,6 +539,7 @@ public enum ReadLockMode implements com.google.protobuf.ProtocolMessageEnum { * *
            * Optimistic lock mode.
    +       *
            * Locks for reads within the transaction are not acquired on read.
            * Instead the locks are acquired on a commit to validate that
            * read/queried data has not changed since the transaction started.
    @@ -1151,11 +1216,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
           return new PartitionedDml();
         }
     
    -    @java.lang.Override
    -    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    -      return this.unknownFields;
    -    }
    -
         public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
           return com.google.spanner.v1.TransactionProto
               .internal_static_google_spanner_v1_TransactionOptions_PartitionedDml_descriptor;
    @@ -1585,10 +1645,13 @@ public interface ReadOnlyOrBuilder
          *
          * 
          * Executes all reads at a timestamp >= `min_read_timestamp`.
    +     *
          * This is useful for requesting fresher data than some previous
          * read, or data that is fresh enough to observe the effects of some
          * previously committed transaction whose timestamp is known.
    +     *
          * Note that this option can only be used in single-use transactions.
    +     *
          * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
          * Example: `"2014-10-02T15:01:23.045123456Z"`.
          * 
    @@ -1603,10 +1666,13 @@ public interface ReadOnlyOrBuilder * *
          * Executes all reads at a timestamp >= `min_read_timestamp`.
    +     *
          * This is useful for requesting fresher data than some previous
          * read, or data that is fresh enough to observe the effects of some
          * previously committed transaction whose timestamp is known.
    +     *
          * Note that this option can only be used in single-use transactions.
    +     *
          * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
          * Example: `"2014-10-02T15:01:23.045123456Z"`.
          * 
    @@ -1621,10 +1687,13 @@ public interface ReadOnlyOrBuilder * *
          * Executes all reads at a timestamp >= `min_read_timestamp`.
    +     *
          * This is useful for requesting fresher data than some previous
          * read, or data that is fresh enough to observe the effects of some
          * previously committed transaction whose timestamp is known.
    +     *
          * Note that this option can only be used in single-use transactions.
    +     *
          * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
          * Example: `"2014-10-02T15:01:23.045123456Z"`.
          * 
    @@ -1643,9 +1712,11 @@ public interface ReadOnlyOrBuilder * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. *
    @@ -1665,9 +1736,11 @@ public interface ReadOnlyOrBuilder * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. *
    @@ -1687,9 +1760,11 @@ public interface ReadOnlyOrBuilder * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. *
    @@ -1707,9 +1782,11 @@ public interface ReadOnlyOrBuilder * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -1728,9 +1805,11 @@ public interface ReadOnlyOrBuilder * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -1749,9 +1828,11 @@ public interface ReadOnlyOrBuilder * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -1766,11 +1847,13 @@ public interface ReadOnlyOrBuilder *
          * Executes all reads at a timestamp that is `exact_staleness`
          * old. The timestamp is chosen soon after the read is started.
    +     *
          * Guarantees that all writes that have committed more than the
          * specified number of seconds ago are visible. Because Cloud Spanner
          * chooses the exact timestamp, this mode works even if the client's
          * local clock is substantially skewed from Cloud Spanner commit
          * timestamps.
    +     *
          * Useful for reading at nearby replicas without the distributed
          * timestamp negotiation overhead of `max_staleness`.
          * 
    @@ -1786,11 +1869,13 @@ public interface ReadOnlyOrBuilder *
          * Executes all reads at a timestamp that is `exact_staleness`
          * old. The timestamp is chosen soon after the read is started.
    +     *
          * Guarantees that all writes that have committed more than the
          * specified number of seconds ago are visible. Because Cloud Spanner
          * chooses the exact timestamp, this mode works even if the client's
          * local clock is substantially skewed from Cloud Spanner commit
          * timestamps.
    +     *
          * Useful for reading at nearby replicas without the distributed
          * timestamp negotiation overhead of `max_staleness`.
          * 
    @@ -1806,11 +1891,13 @@ public interface ReadOnlyOrBuilder *
          * Executes all reads at a timestamp that is `exact_staleness`
          * old. The timestamp is chosen soon after the read is started.
    +     *
          * Guarantees that all writes that have committed more than the
          * specified number of seconds ago are visible. Because Cloud Spanner
          * chooses the exact timestamp, this mode works even if the client's
          * local clock is substantially skewed from Cloud Spanner commit
          * timestamps.
    +     *
          * Useful for reading at nearby replicas without the distributed
          * timestamp negotiation overhead of `max_staleness`.
          * 
    @@ -1834,8 +1921,7 @@ public interface ReadOnlyOrBuilder */ boolean getReturnReadTimestamp(); - public com.google.spanner.v1.TransactionOptions.ReadOnly.TimestampBoundCase - getTimestampBoundCase(); + com.google.spanner.v1.TransactionOptions.ReadOnly.TimestampBoundCase getTimestampBoundCase(); } /** * @@ -1864,11 +1950,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new ReadOnly(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.TransactionProto .internal_static_google_spanner_v1_TransactionOptions_ReadOnly_descriptor; @@ -1885,6 +1966,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { } private int timestampBoundCase_ = 0; + + @SuppressWarnings("serial") private java.lang.Object timestampBound_; public enum TimestampBoundCase @@ -1983,10 +2066,13 @@ public boolean getStrong() { * *
          * Executes all reads at a timestamp >= `min_read_timestamp`.
    +     *
          * This is useful for requesting fresher data than some previous
          * read, or data that is fresh enough to observe the effects of some
          * previously committed transaction whose timestamp is known.
    +     *
          * Note that this option can only be used in single-use transactions.
    +     *
          * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
          * Example: `"2014-10-02T15:01:23.045123456Z"`.
          * 
    @@ -2004,10 +2090,13 @@ public boolean hasMinReadTimestamp() { * *
          * Executes all reads at a timestamp >= `min_read_timestamp`.
    +     *
          * This is useful for requesting fresher data than some previous
          * read, or data that is fresh enough to observe the effects of some
          * previously committed transaction whose timestamp is known.
    +     *
          * Note that this option can only be used in single-use transactions.
    +     *
          * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
          * Example: `"2014-10-02T15:01:23.045123456Z"`.
          * 
    @@ -2028,10 +2117,13 @@ public com.google.protobuf.Timestamp getMinReadTimestamp() { * *
          * Executes all reads at a timestamp >= `min_read_timestamp`.
    +     *
          * This is useful for requesting fresher data than some previous
          * read, or data that is fresh enough to observe the effects of some
          * previously committed transaction whose timestamp is known.
    +     *
          * Note that this option can only be used in single-use transactions.
    +     *
          * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
          * Example: `"2014-10-02T15:01:23.045123456Z"`.
          * 
    @@ -2057,9 +2149,11 @@ public com.google.protobuf.TimestampOrBuilder getMinReadTimestampOrBuilder() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. *
    @@ -2082,9 +2176,11 @@ public boolean hasMaxStaleness() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. *
    @@ -2110,9 +2206,11 @@ public com.google.protobuf.Duration getMaxStaleness() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. *
    @@ -2137,9 +2235,11 @@ public com.google.protobuf.DurationOrBuilder getMaxStalenessOrBuilder() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -2161,9 +2261,11 @@ public boolean hasReadTimestamp() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -2188,9 +2290,11 @@ public com.google.protobuf.Timestamp getReadTimestamp() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -2212,11 +2316,13 @@ public com.google.protobuf.TimestampOrBuilder getReadTimestampOrBuilder() { *
          * Executes all reads at a timestamp that is `exact_staleness`
          * old. The timestamp is chosen soon after the read is started.
    +     *
          * Guarantees that all writes that have committed more than the
          * specified number of seconds ago are visible. Because Cloud Spanner
          * chooses the exact timestamp, this mode works even if the client's
          * local clock is substantially skewed from Cloud Spanner commit
          * timestamps.
    +     *
          * Useful for reading at nearby replicas without the distributed
          * timestamp negotiation overhead of `max_staleness`.
          * 
    @@ -2235,11 +2341,13 @@ public boolean hasExactStaleness() { *
          * Executes all reads at a timestamp that is `exact_staleness`
          * old. The timestamp is chosen soon after the read is started.
    +     *
          * Guarantees that all writes that have committed more than the
          * specified number of seconds ago are visible. Because Cloud Spanner
          * chooses the exact timestamp, this mode works even if the client's
          * local clock is substantially skewed from Cloud Spanner commit
          * timestamps.
    +     *
          * Useful for reading at nearby replicas without the distributed
          * timestamp negotiation overhead of `max_staleness`.
          * 
    @@ -2261,11 +2369,13 @@ public com.google.protobuf.Duration getExactStaleness() { *
          * Executes all reads at a timestamp that is `exact_staleness`
          * old. The timestamp is chosen soon after the read is started.
    +     *
          * Guarantees that all writes that have committed more than the
          * specified number of seconds ago are visible. Because Cloud Spanner
          * chooses the exact timestamp, this mode works even if the client's
          * local clock is substantially skewed from Cloud Spanner commit
          * timestamps.
    +     *
          * Useful for reading at nearby replicas without the distributed
          * timestamp negotiation overhead of `max_staleness`.
          * 
    @@ -2921,10 +3031,13 @@ public Builder clearStrong() { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -2942,10 +3055,13 @@ public boolean hasMinReadTimestamp() { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -2973,10 +3089,13 @@ public com.google.protobuf.Timestamp getMinReadTimestamp() { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3001,10 +3120,13 @@ public Builder setMinReadTimestamp(com.google.protobuf.Timestamp value) { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3026,10 +3148,13 @@ public Builder setMinReadTimestamp(com.google.protobuf.Timestamp.Builder builder * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3064,10 +3189,13 @@ public Builder mergeMinReadTimestamp(com.google.protobuf.Timestamp value) { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3095,10 +3223,13 @@ public Builder clearMinReadTimestamp() { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3113,10 +3244,13 @@ public com.google.protobuf.Timestamp.Builder getMinReadTimestampBuilder() { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3139,10 +3273,13 @@ public com.google.protobuf.TimestampOrBuilder getMinReadTimestampOrBuilder() { * *
            * Executes all reads at a timestamp >= `min_read_timestamp`.
    +       *
            * This is useful for requesting fresher data than some previous
            * read, or data that is fresh enough to observe the effects of some
            * previously committed transaction whose timestamp is known.
    +       *
            * Note that this option can only be used in single-use transactions.
    +       *
            * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
            * Example: `"2014-10-02T15:01:23.045123456Z"`.
            * 
    @@ -3188,9 +3325,11 @@ public com.google.protobuf.TimestampOrBuilder getMinReadTimestampOrBuilder() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3213,9 +3352,11 @@ public boolean hasMaxStaleness() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3248,9 +3389,11 @@ public com.google.protobuf.Duration getMaxStaleness() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3280,9 +3423,11 @@ public Builder setMaxStaleness(com.google.protobuf.Duration value) { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3309,9 +3454,11 @@ public Builder setMaxStaleness(com.google.protobuf.Duration.Builder builderForVa * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3351,9 +3498,11 @@ public Builder mergeMaxStaleness(com.google.protobuf.Duration value) { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3386,9 +3535,11 @@ public Builder clearMaxStaleness() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3408,9 +3559,11 @@ public com.google.protobuf.Duration.Builder getMaxStalenessBuilder() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3438,9 +3591,11 @@ public com.google.protobuf.DurationOrBuilder getMaxStalenessOrBuilder() { * Cloud Spanner chooses the exact timestamp, this mode works even if * the client's local clock is substantially skewed from Cloud Spanner * commit timestamps. + * * Useful for reading the freshest data available at a nearby * replica, while bounding the possible staleness if the local * replica has fallen behind. + * * Note that this option can only be used in single-use * transactions. * @@ -3485,9 +3640,11 @@ public com.google.protobuf.DurationOrBuilder getMaxStalenessOrBuilder() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3509,9 +3666,11 @@ public boolean hasReadTimestamp() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3543,9 +3702,11 @@ public com.google.protobuf.Timestamp getReadTimestamp() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3574,9 +3735,11 @@ public Builder setReadTimestamp(com.google.protobuf.Timestamp value) { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3602,9 +3765,11 @@ public Builder setReadTimestamp(com.google.protobuf.Timestamp.Builder builderFor * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3643,9 +3808,11 @@ public Builder mergeReadTimestamp(com.google.protobuf.Timestamp value) { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3677,9 +3844,11 @@ public Builder clearReadTimestamp() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3698,9 +3867,11 @@ public com.google.protobuf.Timestamp.Builder getReadTimestampBuilder() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3727,9 +3898,11 @@ public com.google.protobuf.TimestampOrBuilder getReadTimestampOrBuilder() { * the same timestamp always returns the same data. If the * timestamp is in the future, the read will block until the * specified timestamp, modulo the read's deadline. + * * Useful for large scale consistent reads such as mapreduces, or * for coordinating many reads against a consistent snapshot of the * data. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. * @@ -3771,11 +3944,13 @@ public com.google.protobuf.TimestampOrBuilder getReadTimestampOrBuilder() { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3794,11 +3969,13 @@ public boolean hasExactStaleness() { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3827,11 +4004,13 @@ public com.google.protobuf.Duration getExactStaleness() { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3857,11 +4036,13 @@ public Builder setExactStaleness(com.google.protobuf.Duration value) { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3884,11 +4065,13 @@ public Builder setExactStaleness(com.google.protobuf.Duration.Builder builderFor *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3924,11 +4107,13 @@ public Builder mergeExactStaleness(com.google.protobuf.Duration value) { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3957,11 +4142,13 @@ public Builder clearExactStaleness() { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -3977,11 +4164,13 @@ public com.google.protobuf.Duration.Builder getExactStalenessBuilder() { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -4005,11 +4194,13 @@ public com.google.protobuf.DurationOrBuilder getExactStalenessOrBuilder() { *
            * Executes all reads at a timestamp that is `exact_staleness`
            * old. The timestamp is chosen soon after the read is started.
    +       *
            * Guarantees that all writes that have committed more than the
            * specified number of seconds ago are visible. Because Cloud Spanner
            * chooses the exact timestamp, this mode works even if the client's
            * local clock is substantially skewed from Cloud Spanner commit
            * timestamps.
    +       *
            * Useful for reading at nearby replicas without the distributed
            * timestamp negotiation overhead of `max_staleness`.
            * 
    @@ -4164,6 +4355,8 @@ public com.google.spanner.v1.TransactionOptions.ReadOnly getDefaultInstanceForTy } private int modeCase_ = 0; + + @SuppressWarnings("serial") private java.lang.Object mode_; public enum ModeCase @@ -4219,6 +4412,7 @@ public ModeCase getModeCase() { * *
        * Transaction may write.
    +   *
        * Authorization to begin a read-write transaction requires
        * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
        * on the `session` resource.
    @@ -4237,6 +4431,7 @@ public boolean hasReadWrite() {
        *
        * 
        * Transaction may write.
    +   *
        * Authorization to begin a read-write transaction requires
        * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
        * on the `session` resource.
    @@ -4258,6 +4453,7 @@ public com.google.spanner.v1.TransactionOptions.ReadWrite getReadWrite() {
        *
        * 
        * Transaction may write.
    +   *
        * Authorization to begin a read-write transaction requires
        * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
        * on the `session` resource.
    @@ -4279,6 +4475,7 @@ public com.google.spanner.v1.TransactionOptions.ReadWriteOrBuilder getReadWriteO
        *
        * 
        * Partitioned DML transaction.
    +   *
        * Authorization to begin a Partitioned DML transaction requires
        * `spanner.databases.beginPartitionedDmlTransaction` permission
        * on the `session` resource.
    @@ -4297,6 +4494,7 @@ public boolean hasPartitionedDml() {
        *
        * 
        * Partitioned DML transaction.
    +   *
        * Authorization to begin a Partitioned DML transaction requires
        * `spanner.databases.beginPartitionedDmlTransaction` permission
        * on the `session` resource.
    @@ -4318,6 +4516,7 @@ public com.google.spanner.v1.TransactionOptions.PartitionedDml getPartitionedDml
        *
        * 
        * Partitioned DML transaction.
    +   *
        * Authorization to begin a Partitioned DML transaction requires
        * `spanner.databases.beginPartitionedDmlTransaction` permission
        * on the `session` resource.
    @@ -4340,6 +4539,7 @@ public com.google.spanner.v1.TransactionOptions.PartitionedDml getPartitionedDml
        *
        * 
        * Transaction will not write.
    +   *
        * Authorization to begin a read-only transaction requires
        * `spanner.databases.beginReadOnlyTransaction` permission
        * on the `session` resource.
    @@ -4358,6 +4558,7 @@ public boolean hasReadOnly() {
        *
        * 
        * Transaction will not write.
    +   *
        * Authorization to begin a read-only transaction requires
        * `spanner.databases.beginReadOnlyTransaction` permission
        * on the `session` resource.
    @@ -4379,6 +4580,7 @@ public com.google.spanner.v1.TransactionOptions.ReadOnly getReadOnly() {
        *
        * 
        * Transaction will not write.
    +   *
        * Authorization to begin a read-only transaction requires
        * `spanner.databases.beginReadOnlyTransaction` permission
        * on the `session` resource.
    @@ -4602,18 +4804,23 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        *
        * 
        * Transactions:
    +   *
        * Each session can have at most one active transaction at a time (note that
        * standalone reads and queries use a transaction internally and do count
        * towards the one transaction limit). After the active transaction is
        * completed, the session can immediately be re-used for the next transaction.
        * It is not necessary to create a new session for each transaction.
    +   *
        * Transaction modes:
    +   *
        * Cloud Spanner supports three transaction modes:
    +   *
        *   1. Locking read-write. This type of transaction is the only way
        *      to write data into Cloud Spanner. These transactions rely on
        *      pessimistic locking and, if necessary, two-phase commit.
        *      Locking read-write transactions may abort, requiring the
        *      application to retry.
    +   *
        *   2. Snapshot read-only. Snapshot read-only transactions provide guaranteed
        *      consistency across several reads, but do not allow
        *      writes. Snapshot read-only transactions can be configured to read at
    @@ -4622,28 +4829,35 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        *      guaranteed to see the effects of all transactions that have committed
        *      before the start of the read). Snapshot read-only transactions do not
        *      need to be committed.
    +   *
        *      Queries on change streams must be performed with the snapshot read-only
        *      transaction mode, specifying a strong read. Please see
        *      [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong]
        *      for more details.
    +   *
        *   3. Partitioned DML. This type of transaction is used to execute
        *      a single Partitioned DML statement. Partitioned DML partitions
        *      the key space and runs the DML statement over each partition
        *      in parallel using separate, internal transactions that commit
        *      independently. Partitioned DML transactions do not need to be
        *      committed.
    +   *
        * For transactions that only read, snapshot read-only transactions
        * provide simpler semantics and are almost always faster. In
        * particular, read-only transactions do not take locks, so they do
        * not conflict with read-write transactions. As a consequence of not
        * taking locks, they also do not abort, so retry loops are not needed.
    +   *
        * Transactions may only read-write data in a single database. They
        * may, however, read-write data in different tables within that
        * database.
    +   *
        * Locking read-write transactions:
    +   *
        * Locking transactions may be used to atomically read-modify-write
        * data anywhere in a database. This type of transaction is externally
        * consistent.
    +   *
        * Clients should attempt to minimize the amount of time a transaction
        * is active. Faster transactions commit with higher probability
        * and cause less contention. Cloud Spanner attempts to keep read locks
    @@ -4653,87 +4867,113 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        * [Rollback][google.spanner.v1.Spanner.Rollback]. Long periods of
        * inactivity at the client may cause Cloud Spanner to release a
        * transaction's locks and abort it.
    +   *
        * Conceptually, a read-write transaction consists of zero or more
        * reads or SQL statements followed by
        * [Commit][google.spanner.v1.Spanner.Commit]. At any time before
        * [Commit][google.spanner.v1.Spanner.Commit], the client can send a
        * [Rollback][google.spanner.v1.Spanner.Rollback] request to abort the
        * transaction.
    +   *
        * Semantics:
    +   *
        * Cloud Spanner can commit the transaction if all read locks it acquired
        * are still valid at commit time, and it is able to acquire write
        * locks for all writes. Cloud Spanner can abort the transaction for any
        * reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
        * that the transaction has not modified any user data in Cloud Spanner.
    +   *
        * Unless the transaction commits, Cloud Spanner makes no guarantees about
        * how long the transaction's locks were held for. It is an error to
        * use Cloud Spanner locks for any sort of mutual exclusion other than
        * between Cloud Spanner transactions themselves.
    +   *
        * Retrying aborted transactions:
    +   *
        * When a transaction aborts, the application can choose to retry the
        * whole transaction again. To maximize the chances of successfully
        * committing the retry, the client should execute the retry in the
        * same session as the original attempt. The original session's lock
        * priority increases with each consecutive abort, meaning that each
        * attempt has a slightly better chance of success than the previous.
    +   *
        * Under some circumstances (for example, many transactions attempting to
        * modify the same row(s)), a transaction can abort many times in a
        * short period before successfully committing. Thus, it is not a good
        * idea to cap the number of retries a transaction can attempt;
        * instead, it is better to limit the total amount of time spent
        * retrying.
    +   *
        * Idle transactions:
    +   *
        * A transaction is considered idle if it has no outstanding reads or
        * SQL queries and has not started a read or SQL query within the last 10
        * seconds. Idle transactions can be aborted by Cloud Spanner so that they
        * don't hold on to locks indefinitely. If an idle transaction is aborted, the
        * commit will fail with error `ABORTED`.
    +   *
        * If this behavior is undesirable, periodically executing a simple
        * SQL query in the transaction (for example, `SELECT 1`) prevents the
        * transaction from becoming idle.
    +   *
        * Snapshot read-only transactions:
    +   *
        * Snapshot read-only transactions provides a simpler method than
        * locking read-write transactions for doing several consistent
        * reads. However, this type of transaction does not support writes.
    +   *
        * Snapshot transactions do not take locks. Instead, they work by
        * choosing a Cloud Spanner timestamp, then executing all reads at that
        * timestamp. Since they do not acquire locks, they do not block
        * concurrent read-write transactions.
    +   *
        * Unlike locking read-write transactions, snapshot read-only
        * transactions never abort. They can fail if the chosen read
        * timestamp is garbage collected; however, the default garbage
        * collection policy is generous enough that most applications do not
        * need to worry about this in practice.
    +   *
        * Snapshot read-only transactions do not need to call
        * [Commit][google.spanner.v1.Spanner.Commit] or
        * [Rollback][google.spanner.v1.Spanner.Rollback] (and in fact are not
        * permitted to do so).
    +   *
        * To execute a snapshot transaction, the client specifies a timestamp
        * bound, which tells Cloud Spanner how to choose a read timestamp.
    +   *
        * The types of timestamp bound are:
    +   *
        *   - Strong (the default).
        *   - Bounded staleness.
        *   - Exact staleness.
    +   *
        * If the Cloud Spanner database to be read is geographically distributed,
        * stale read-only transactions can execute more quickly than strong
        * or read-write transactions, because they are able to execute far
        * from the leader replica.
    +   *
        * Each type of timestamp bound is discussed in detail below.
    +   *
        * Strong: Strong reads are guaranteed to see the effects of all transactions
        * that have committed before the start of the read. Furthermore, all
        * rows yielded by a single read are consistent with each other -- if
        * any part of the read observes a transaction, all parts of the read
        * see the transaction.
    +   *
        * Strong reads are not repeatable: two consecutive strong read-only
        * transactions might return inconsistent results if there are
        * concurrent writes. If consistency across reads is required, the
        * reads should be executed within a transaction or at an exact read
        * timestamp.
    +   *
        * Queries on change streams (see below for more details) must also specify
        * the strong read timestamp bound.
    +   *
        * See
        * [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong].
    +   *
        * Exact staleness:
    +   *
        * These timestamp bounds execute reads at a user-specified
        * timestamp. Reads at a timestamp are guaranteed to see a consistent
        * prefix of the global transaction history: they observe
    @@ -4742,42 +4982,54 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        * transactions with a larger commit timestamp. They will block until
        * all conflicting transactions that may be assigned commit timestamps
        * <= the read timestamp have finished.
    +   *
        * The timestamp can either be expressed as an absolute Cloud Spanner commit
        * timestamp or a staleness relative to the current time.
    +   *
        * These modes do not require a "negotiation phase" to pick a
        * timestamp. As a result, they execute slightly faster than the
        * equivalent boundedly stale concurrency modes. On the other hand,
        * boundedly stale reads usually return fresher results.
    +   *
        * See
        * [TransactionOptions.ReadOnly.read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.read_timestamp]
        * and
        * [TransactionOptions.ReadOnly.exact_staleness][google.spanner.v1.TransactionOptions.ReadOnly.exact_staleness].
    +   *
        * Bounded staleness:
    +   *
        * Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
        * subject to a user-provided staleness bound. Cloud Spanner chooses the
        * newest timestamp within the staleness bound that allows execution
        * of the reads at the closest available replica without blocking.
    +   *
        * All rows yielded are consistent with each other -- if any part of
        * the read observes a transaction, all parts of the read see the
        * transaction. Boundedly stale reads are not repeatable: two stale
        * reads, even if they use the same staleness bound, can execute at
        * different timestamps and thus return inconsistent results.
    +   *
        * Boundedly stale reads execute in two phases: the first phase
        * negotiates a timestamp among all replicas needed to serve the
        * read. In the second phase, reads are executed at the negotiated
        * timestamp.
    +   *
        * As a result of the two phase execution, bounded staleness reads are
        * usually a little slower than comparable exact staleness
        * reads. However, they are typically able to return fresher
        * results, and are more likely to execute at the closest replica.
    +   *
        * Because the timestamp negotiation requires up-front knowledge of
        * which rows will be read, it can only be used with single-use
        * read-only transactions.
    +   *
        * See
        * [TransactionOptions.ReadOnly.max_staleness][google.spanner.v1.TransactionOptions.ReadOnly.max_staleness]
        * and
        * [TransactionOptions.ReadOnly.min_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.min_read_timestamp].
    +   *
        * Old read timestamps and garbage collection:
    +   *
        * Cloud Spanner continuously garbage collects deleted and overwritten data
        * in the background to reclaim storage space. This process is known
        * as "version GC". By default, version GC reclaims versions after they
    @@ -4786,18 +5038,23 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        * restriction also applies to in-progress reads and/or SQL queries whose
        * timestamp become too old while executing. Reads and SQL queries with
        * too-old read timestamps fail with the error `FAILED_PRECONDITION`.
    +   *
        * You can configure and extend the `VERSION_RETENTION_PERIOD` of a
        * database up to a period as long as one week, which allows Cloud Spanner
        * to perform reads up to one week in the past.
    +   *
        * Querying change Streams:
    +   *
        * A Change Stream is a schema object that can be configured to watch data
        * changes on the entire database, a set of tables, or a set of columns
        * in a database.
    +   *
        * When a change stream is created, Spanner automatically defines a
        * corresponding SQL Table-Valued Function (TVF) that can be used to query
        * the change records in the associated change stream using the
        * ExecuteStreamingSql API. The name of the TVF for a change stream is
        * generated from the name of the change stream: READ_<change_stream_name>.
    +   *
        * All queries on change stream TVFs must be executed using the
        * ExecuteStreamingSql API with a single-use read-only transaction with a
        * strong read-only timestamp_bound. The change stream TVF allows users to
    @@ -4805,34 +5062,44 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        * interest. All change records within the retention period is accessible
        * using the strong read-only timestamp_bound. All other TransactionOptions
        * are invalid for change stream queries.
    +   *
        * In addition, if TransactionOptions.read_only.return_read_timestamp is set
        * to true, a special value of 2^63 - 2 will be returned in the
        * [Transaction][google.spanner.v1.Transaction] message that describes the
        * transaction, instead of a valid read timestamp. This special value should be
        * discarded and not used for any subsequent queries.
    +   *
        * Please see https://cloud.google.com/spanner/docs/change-streams
        * for more details on how to query the change stream TVFs.
    +   *
        * Partitioned DML transactions:
    +   *
        * Partitioned DML transactions are used to execute DML statements with a
        * different execution strategy that provides different, and often better,
        * scalability properties for large, table-wide operations than DML in a
        * ReadWrite transaction. Smaller scoped statements, such as an OLTP workload,
        * should prefer using ReadWrite transactions.
    +   *
        * Partitioned DML partitions the keyspace and runs the DML statement on each
        * partition in separate, internal transactions. These transactions commit
        * automatically when complete, and run independently from one another.
    +   *
        * To reduce lock contention, this execution strategy only acquires read locks
        * on rows that match the WHERE clause of the statement. Additionally, the
        * smaller per-partition transactions hold locks for less time.
    +   *
        * That said, Partitioned DML is not a drop-in replacement for standard DML used
        * in ReadWrite transactions.
    +   *
        *  - The DML statement must be fully-partitionable. Specifically, the statement
        *    must be expressible as the union of many statements which each access only
        *    a single row of the table.
    +   *
        *  - The statement is not applied atomically to all rows of the table. Rather,
        *    the statement is applied atomically to partitions of the table, in
        *    independent transactions. Secondary index rows are updated atomically
        *    with the base table rows.
    +   *
        *  - Partitioned DML does not guarantee exactly-once execution semantics
        *    against a partition. The statement will be applied at least once to each
        *    partition. It is strongly recommended that the DML statement should be
    @@ -4840,19 +5107,23 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build
        *    dangerous to run a statement such as
        *    `UPDATE table SET column = column + 1` as it could be run multiple times
        *    against some rows.
    +   *
        *  - The partitions are committed automatically - there is no support for
        *    Commit or Rollback. If the call returns an error, or if the client issuing
        *    the ExecuteSql call dies, it is possible that some rows had the statement
        *    executed on them successfully. It is also possible that statement was
        *    never executed against other rows.
    +   *
        *  - Partitioned DML transactions may only contain the execution of a single
        *    DML statement via ExecuteSql or ExecuteStreamingSql.
    +   *
        *  - If any error is encountered during the execution of the partitioned DML
        *    operation (for instance, a UNIQUE INDEX violation, division by zero, or a
        *    value that cannot be stored due to schema constraints), then the
        *    operation is stopped at that point and an error is returned. It is
        *    possible that at this point, some partitions have been committed (or even
        *    committed multiple times), and other partitions have not been run at all.
    +   *
        * Given the above, Partitioned DML is good fit for large, database-wide,
        * operations that are idempotent, such as deleting old rows from a very large
        * table.
    @@ -5107,6 +5378,7 @@ public Builder clearMode() {
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5125,6 +5397,7 @@ public boolean hasReadWrite() {
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5153,6 +5426,7 @@ public com.google.spanner.v1.TransactionOptions.ReadWrite getReadWrite() {
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5178,6 +5452,7 @@ public Builder setReadWrite(com.google.spanner.v1.TransactionOptions.ReadWrite v
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5201,6 +5476,7 @@ public Builder setReadWrite(
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5236,6 +5512,7 @@ public Builder mergeReadWrite(com.google.spanner.v1.TransactionOptions.ReadWrite
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5264,6 +5541,7 @@ public Builder clearReadWrite() {
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5279,6 +5557,7 @@ public com.google.spanner.v1.TransactionOptions.ReadWrite.Builder getReadWriteBu
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5302,6 +5581,7 @@ public com.google.spanner.v1.TransactionOptions.ReadWriteOrBuilder getReadWriteO
          *
          * 
          * Transaction may write.
    +     *
          * Authorization to begin a read-write transaction requires
          * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
          * on the `session` resource.
    @@ -5343,6 +5623,7 @@ public com.google.spanner.v1.TransactionOptions.ReadWriteOrBuilder getReadWriteO
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5361,6 +5642,7 @@ public boolean hasPartitionedDml() {
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5389,6 +5671,7 @@ public com.google.spanner.v1.TransactionOptions.PartitionedDml getPartitionedDml
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5415,6 +5698,7 @@ public Builder setPartitionedDml(
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5438,6 +5722,7 @@ public Builder setPartitionedDml(
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5475,6 +5760,7 @@ public Builder mergePartitionedDml(
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5503,6 +5789,7 @@ public Builder clearPartitionedDml() {
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5519,6 +5806,7 @@ public Builder clearPartitionedDml() {
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5543,6 +5831,7 @@ public Builder clearPartitionedDml() {
          *
          * 
          * Partitioned DML transaction.
    +     *
          * Authorization to begin a Partitioned DML transaction requires
          * `spanner.databases.beginPartitionedDmlTransaction` permission
          * on the `session` resource.
    @@ -5584,6 +5873,7 @@ public Builder clearPartitionedDml() {
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5602,6 +5892,7 @@ public boolean hasReadOnly() {
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5630,6 +5921,7 @@ public com.google.spanner.v1.TransactionOptions.ReadOnly getReadOnly() {
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5655,6 +5947,7 @@ public Builder setReadOnly(com.google.spanner.v1.TransactionOptions.ReadOnly val
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5678,6 +5971,7 @@ public Builder setReadOnly(
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5713,6 +6007,7 @@ public Builder mergeReadOnly(com.google.spanner.v1.TransactionOptions.ReadOnly v
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5741,6 +6036,7 @@ public Builder clearReadOnly() {
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5756,6 +6052,7 @@ public com.google.spanner.v1.TransactionOptions.ReadOnly.Builder getReadOnlyBuil
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    @@ -5779,6 +6076,7 @@ public com.google.spanner.v1.TransactionOptions.ReadOnlyOrBuilder getReadOnlyOrB
          *
          * 
          * Transaction will not write.
    +     *
          * Authorization to begin a read-only transaction requires
          * `spanner.databases.beginReadOnlyTransaction` permission
          * on the `session` resource.
    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 c7b46083a13..e2f2613bb69 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
    @@ -28,6 +28,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Transaction may write.
    +   *
        * Authorization to begin a read-write transaction requires
        * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
        * on the `session` resource.
    @@ -43,6 +44,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Transaction may write.
    +   *
        * Authorization to begin a read-write transaction requires
        * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
        * on the `session` resource.
    @@ -58,6 +60,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Transaction may write.
    +   *
        * Authorization to begin a read-write transaction requires
        * `spanner.databases.beginOrRollbackReadWriteTransaction` permission
        * on the `session` resource.
    @@ -72,6 +75,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Partitioned DML transaction.
    +   *
        * Authorization to begin a Partitioned DML transaction requires
        * `spanner.databases.beginPartitionedDmlTransaction` permission
        * on the `session` resource.
    @@ -87,6 +91,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Partitioned DML transaction.
    +   *
        * Authorization to begin a Partitioned DML transaction requires
        * `spanner.databases.beginPartitionedDmlTransaction` permission
        * on the `session` resource.
    @@ -102,6 +107,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Partitioned DML transaction.
    +   *
        * Authorization to begin a Partitioned DML transaction requires
        * `spanner.databases.beginPartitionedDmlTransaction` permission
        * on the `session` resource.
    @@ -116,6 +122,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Transaction will not write.
    +   *
        * Authorization to begin a read-only transaction requires
        * `spanner.databases.beginReadOnlyTransaction` permission
        * on the `session` resource.
    @@ -131,6 +138,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Transaction will not write.
    +   *
        * Authorization to begin a read-only transaction requires
        * `spanner.databases.beginReadOnlyTransaction` permission
        * on the `session` resource.
    @@ -146,6 +154,7 @@ public interface TransactionOptionsOrBuilder
        *
        * 
        * Transaction will not write.
    +   *
        * Authorization to begin a read-only transaction requires
        * `spanner.databases.beginReadOnlyTransaction` permission
        * on the `session` resource.
    @@ -155,5 +164,5 @@ public interface TransactionOptionsOrBuilder
        */
       com.google.spanner.v1.TransactionOptions.ReadOnlyOrBuilder getReadOnlyOrBuilder();
     
    -  public com.google.spanner.v1.TransactionOptions.ModeCase getModeCase();
    +  com.google.spanner.v1.TransactionOptions.ModeCase getModeCase();
     }
    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 24a9ee693d9..57893613d67 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
    @@ -32,6 +32,7 @@ public interface TransactionOrBuilder
        * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql],
        * [Commit][google.spanner.v1.Spanner.Commit], or
        * [Rollback][google.spanner.v1.Spanner.Rollback] calls.
    +   *
        * Single-use read-only transactions do not have IDs, because
        * single-use transactions do not support multiple requests.
        * 
    @@ -49,6 +50,7 @@ public interface TransactionOrBuilder * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -65,6 +67,7 @@ public interface TransactionOrBuilder * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    @@ -81,6 +84,7 @@ public interface TransactionOrBuilder * For snapshot read-only transactions, the read timestamp chosen * for the transaction. Not returned by default: see * [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. + * * A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. * Example: `"2014-10-02T15:01:23.045123456Z"`. *
    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 3d3062141b9..b96de165770 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 @@ -25,6 +25,7 @@ * This message is used to select the transaction in which a * [Read][google.spanner.v1.Spanner.Read] or * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] call runs. + * * See [TransactionOptions][google.spanner.v1.TransactionOptions] for more * information about transactions. *
    @@ -49,11 +50,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new TransactionSelector(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.TransactionProto .internal_static_google_spanner_v1_TransactionSelector_descriptor; @@ -70,6 +66,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { } private int selectorCase_ = 0; + + @SuppressWarnings("serial") private java.lang.Object selector_; public enum SelectorCase @@ -482,6 +480,7 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * This message is used to select the transaction in which a * [Read][google.spanner.v1.Spanner.Read] or * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] call runs. + * * See [TransactionOptions][google.spanner.v1.TransactionOptions] for more * information about transactions. *
    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 ff10cc1510b..478bc44b868 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 @@ -133,5 +133,5 @@ public interface TransactionSelectorOrBuilder */ com.google.spanner.v1.TransactionOptionsOrBuilder getBeginOrBuilder(); - public com.google.spanner.v1.TransactionSelector.SelectorCase getSelectorCase(); + com.google.spanner.v1.TransactionSelector.SelectorCase getSelectorCase(); } 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 6785a32ef32..eba671dad85 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 @@ -49,11 +49,6 @@ protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new Type(); } - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet getUnknownFields() { - return this.unknownFields; - } - public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.spanner.v1.TypeProto.internal_static_google_spanner_v1_Type_descriptor; } 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 4b6561e9def..5ce677274bd 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 @@ -24,6 +24,7 @@ *
      * `TypeCode` is used as part of [Type][google.spanner.v1.Type] to
      * indicate the type of a Cloud Spanner value.
    + *
      * Each legal value of a type can be encoded to or decoded from a JSON
      * value, using the encodings described below. All Cloud Spanner values can
      * be `null`, regardless of type; `null`s are always encoded as a JSON
    @@ -80,6 +81,7 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum {
        * 
        * Encoded as `string` in RFC 3339 timestamp format. The time zone
        * must be present, and must be `"Z"`.
    +   *
        * If the schema has the column option
        * `allow_commit_timestamp=true`, the placeholder string
        * `"spanner.commit_timestamp()"` can be used to instruct the system
    @@ -152,6 +154,7 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum {
        * <br>Decimal format:
        * <br>`[+-]Digits[.[Digits]]` or
        * <br>`[+-][Digits].Digits`
    +   *
        * Scientific notation:
        * <br>`[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
        * <br>`[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
    @@ -167,6 +170,7 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum {
        * 
        * Encoded as a JSON-formatted `string` as described in RFC 7159. The
        * following rules are applied when parsing JSON input:
    +   *
        * - Whitespace characters are not preserved.
        * - If a JSON object has duplicate keys, only the first key is preserved.
        * - Members of a JSON object are not guaranteed to have their order
    @@ -227,6 +231,7 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum {
        * 
        * Encoded as `string` in RFC 3339 timestamp format. The time zone
        * must be present, and must be `"Z"`.
    +   *
        * If the schema has the column option
        * `allow_commit_timestamp=true`, the placeholder string
        * `"spanner.commit_timestamp()"` can be used to instruct the system
    @@ -299,6 +304,7 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum {
        * <br>Decimal format:
        * <br>`[+-]Digits[.[Digits]]` or
        * <br>`[+-][Digits].Digits`
    +   *
        * Scientific notation:
        * <br>`[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
        * <br>`[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
    @@ -314,6 +320,7 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum {
        * 
        * Encoded as a JSON-formatted `string` as described in RFC 7159. The
        * following rules are applied when parsing JSON input:
    +   *
        * - Whitespace characters are not preserved.
        * - If a JSON object has duplicate keys, only the first key is preserved.
        * - Members of a JSON object are not guaranteed to have their order
    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 cc18356b426..1c024ce208a 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
    @@ -50,26 +50,26 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
         java.lang.String[] descriptorData = {
           "\n\034google/spanner/v1/type.proto\022\021google.s"
               + "panner.v1\032\037google/api/field_behavior.pro"
    -          + "to\"\337\001\n\004Type\022.\n\004code\030\001 \001(\0162\033.google.spann"
    -          + "er.v1.TypeCodeB\003\340A\002\0223\n\022array_element_typ"
    -          + "e\030\002 \001(\0132\027.google.spanner.v1.Type\0222\n\013stru"
    -          + "ct_type\030\003 \001(\0132\035.google.spanner.v1.Struct"
    -          + "Type\022>\n\017type_annotation\030\004 \001(\0162%.google.s"
    -          + "panner.v1.TypeAnnotationCode\"\177\n\nStructTy"
    -          + "pe\0223\n\006fields\030\001 \003(\0132#.google.spanner.v1.S"
    -          + "tructType.Field\032<\n\005Field\022\014\n\004name\030\001 \001(\t\022%"
    -          + "\n\004type\030\002 \001(\0132\027.google.spanner.v1.Type*\245\001"
    -          + "\n\010TypeCode\022\031\n\025TYPE_CODE_UNSPECIFIED\020\000\022\010\n"
    -          + "\004BOOL\020\001\022\t\n\005INT64\020\002\022\013\n\007FLOAT64\020\003\022\r\n\tTIMES"
    -          + "TAMP\020\004\022\010\n\004DATE\020\005\022\n\n\006STRING\020\006\022\t\n\005BYTES\020\007\022"
    -          + "\t\n\005ARRAY\020\010\022\n\n\006STRUCT\020\t\022\013\n\007NUMERIC\020\n\022\010\n\004J"
    -          + "SON\020\013*X\n\022TypeAnnotationCode\022$\n TYPE_ANNO"
    -          + "TATION_CODE_UNSPECIFIED\020\000\022\016\n\nPG_NUMERIC\020"
    -          + "\002\022\014\n\010PG_JSONB\020\003B\254\001\n\025com.google.spanner.v"
    -          + "1B\tTypeProtoP\001Z5cloud.google.com/go/span"
    -          + "ner/apiv1/spannerpb;spannerpb\252\002\027Google.C"
    -          + "loud.Spanner.V1\312\002\027Google\\Cloud\\Spanner\\V"
    -          + "1\352\002\032Google::Cloud::Spanner::V1b\006proto3"
    +          + "to\"\340\001\n\004Type\022/\n\004code\030\001 \001(\0162\033.google.spann"
    +          + "er.v1.TypeCodeB\004\342A\001\002\0223\n\022array_element_ty"
    +          + "pe\030\002 \001(\0132\027.google.spanner.v1.Type\0222\n\013str"
    +          + "uct_type\030\003 \001(\0132\035.google.spanner.v1.Struc"
    +          + "tType\022>\n\017type_annotation\030\004 \001(\0162%.google."
    +          + "spanner.v1.TypeAnnotationCode\"\177\n\nStructT"
    +          + "ype\0223\n\006fields\030\001 \003(\0132#.google.spanner.v1."
    +          + "StructType.Field\032<\n\005Field\022\014\n\004name\030\001 \001(\t\022"
    +          + "%\n\004type\030\002 \001(\0132\027.google.spanner.v1.Type*\245"
    +          + "\001\n\010TypeCode\022\031\n\025TYPE_CODE_UNSPECIFIED\020\000\022\010"
    +          + "\n\004BOOL\020\001\022\t\n\005INT64\020\002\022\013\n\007FLOAT64\020\003\022\r\n\tTIME"
    +          + "STAMP\020\004\022\010\n\004DATE\020\005\022\n\n\006STRING\020\006\022\t\n\005BYTES\020\007"
    +          + "\022\t\n\005ARRAY\020\010\022\n\n\006STRUCT\020\t\022\013\n\007NUMERIC\020\n\022\010\n\004"
    +          + "JSON\020\013*X\n\022TypeAnnotationCode\022$\n TYPE_ANN"
    +          + "OTATION_CODE_UNSPECIFIED\020\000\022\016\n\nPG_NUMERIC"
    +          + "\020\002\022\014\n\010PG_JSONB\020\003B\254\001\n\025com.google.spanner."
    +          + "v1B\tTypeProtoP\001Z5cloud.google.com/go/spa"
    +          + "nner/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(
    diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
    index 3f5952d44a4..227e9e154c2 100644
    --- a/samples/install-without-bom/pom.xml
    +++ b/samples/install-without-bom/pom.xml
    @@ -22,8 +22,8 @@
         1.8
         UTF-8
         0.31.1
    -    2.20.0
    -    3.21.0
    +    2.22.0
    +    3.23.0
       
     
     
    @@ -32,7 +32,7 @@
         
           com.google.cloud
           google-cloud-spanner
    -      6.43.1
    +      6.43.2
         
         
         
    diff --git a/samples/native-image/pom.xml b/samples/native-image/pom.xml
    index 247161eb147..1ad094fac39 100644
    --- a/samples/native-image/pom.xml
    +++ b/samples/native-image/pom.xml
    @@ -28,7 +28,7 @@
           
             com.google.cloud
             libraries-bom
    -        26.18.0
    +        26.19.0
             pom
             import
           
    @@ -103,7 +103,7 @@
             
               org.junit.vintage
               junit-vintage-engine
    -          5.9.3
    +          5.10.0
               test
             
             
    diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
    index d143aae7725..dae36cb9d3c 100644
    --- a/samples/snapshot/pom.xml
    +++ b/samples/snapshot/pom.xml
    @@ -22,8 +22,8 @@
         1.8
         UTF-8
         0.31.1
    -    2.20.0
    -    3.21.0
    +    2.22.0
    +    3.23.0
       
     
       
    @@ -31,7 +31,7 @@
         
           com.google.cloud
           google-cloud-spanner
    -      6.43.2
    +      6.44.0
         
         
         
    diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
    index 6e503485456..f38c9988c2d 100644
    --- a/samples/snippets/pom.xml
    +++ b/samples/snippets/pom.xml
    @@ -33,7 +33,7 @@
           
             com.google.cloud
             libraries-bom
    -        26.18.0
    +        26.19.0
             pom
             import
           
    diff --git a/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java b/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java
    new file mode 100644
    index 00000000000..1caf26fb289
    --- /dev/null
    +++ b/samples/snippets/src/main/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSample.java
    @@ -0,0 +1,59 @@
    +/*
    + * Copyright 2023 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;
    +
    +// [START spanner_alter_table_with_foreign_key_delete_cascade]
    +import com.google.cloud.spanner.DatabaseAdminClient;
    +import com.google.cloud.spanner.Spanner;
    +import com.google.cloud.spanner.SpannerOptions;
    +import com.google.common.collect.ImmutableList;
    +
    +class AlterTableWithForeignKeyDeleteCascadeSample {
    +
    +  static void alterForeignKeyDeleteCascadeConstraint() {
    +    // TODO(developer): Replace these variables before running the sample.
    +    String projectId = "my-project";
    +    String instanceId = "my-instance";
    +    String databaseId = "my-database";
    +
    +    try (Spanner spanner =
    +        SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) {
    +      DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient();
    +      alterForeignKeyDeleteCascadeConstraint(adminClient, instanceId, databaseId);
    +    }
    +  }
    +
    +  static void alterForeignKeyDeleteCascadeConstraint(
    +      DatabaseAdminClient adminClient, String instanceId, String databaseId) {
    +    adminClient.updateDatabaseDdl(
    +        instanceId,
    +        databaseId,
    +        ImmutableList.of(
    +            "ALTER TABLE ShoppingCarts\n"
    +                + "              ADD CONSTRAINT FKShoppingCartsCustomerName\n"
    +                + "              FOREIGN KEY (CustomerName)\n"
    +                + "              REFERENCES Customers(CustomerName)\n"
    +                + "              ON DELETE CASCADE\n"),
    +        null);
    +    System.out.printf(
    +        String.format(
    +            "Altered ShoppingCarts table with FKShoppingCartsCustomerName\n"
    +                + "foreign key constraint on database %s on instance %s",
    +            databaseId, instanceId));
    +  }
    +}
    +// [END spanner_alter_table_with_foreign_key_delete_cascade]
    diff --git a/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java b/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java
    new file mode 100644
    index 00000000000..dda09591ee4
    --- /dev/null
    +++ b/samples/snippets/src/main/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSample.java
    @@ -0,0 +1,66 @@
    +/*
    + * Copyright 2023 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;
    +
    +// [START spanner_create_table_with_foreign_key_delete_cascade]
    +import com.google.cloud.spanner.DatabaseAdminClient;
    +import com.google.cloud.spanner.Spanner;
    +import com.google.cloud.spanner.SpannerOptions;
    +import com.google.common.collect.ImmutableList;
    +
    +class CreateTableWithForeignKeyDeleteCascadeSample {
    +
    +  static void createForeignKeyDeleteCascadeConstraint() {
    +    // TODO(developer): Replace these variables before running the sample.
    +    String projectId = "my-project";
    +    String instanceId = "my-instance";
    +    String databaseId = "my-database";
    +
    +    try (Spanner spanner =
    +        SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) {
    +      DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient();
    +      createForeignKeyDeleteCascadeConstraint(adminClient, instanceId, databaseId);
    +    }
    +  }
    +
    +  static void createForeignKeyDeleteCascadeConstraint(
    +      DatabaseAdminClient adminClient, String instanceId, String databaseId) {
    +    adminClient.updateDatabaseDdl(
    +        instanceId,
    +        databaseId,
    +        ImmutableList.of(
    +            "CREATE TABLE Customers (\n"
    +                + "              CustomerId INT64 NOT NULL,\n"
    +                + "              CustomerName STRING(62) NOT NULL,\n"
    +                + "              ) PRIMARY KEY (CustomerId)",
    +            "CREATE TABLE ShoppingCarts (\n"
    +                + "              CartId INT64 NOT NULL,\n"
    +                + "              CustomerId INT64 NOT NULL,\n"
    +                + "              CustomerName STRING(62) NOT NULL,\n"
    +                + "              CONSTRAINT FKShoppingCartsCustomerId FOREIGN KEY (CustomerId)\n"
    +                + "              REFERENCES Customers (CustomerId) ON DELETE CASCADE\n"
    +                + "              ) PRIMARY KEY (CartId)\n"),
    +        null);
    +
    +    System.out.printf(
    +        String.format(
    +            "Created Customers and ShoppingCarts table with FKShoppingCartsCustomerId\n"
    +                + "foreign key constraint on database %s on instance %s\n",
    +            databaseId, instanceId));
    +  }
    +}
    +// [END spanner_create_table_with_foreign_key_delete_cascade]
    diff --git a/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java b/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java
    new file mode 100644
    index 00000000000..13f39d129f7
    --- /dev/null
    +++ b/samples/snippets/src/main/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSample.java
    @@ -0,0 +1,57 @@
    +/*
    + * Copyright 2023 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;
    +
    +// [START spanner_drop_foreign_key_constraint_delete_cascade]
    +import com.google.cloud.spanner.DatabaseAdminClient;
    +import com.google.cloud.spanner.Spanner;
    +import com.google.cloud.spanner.SpannerOptions;
    +import com.google.common.collect.ImmutableList;
    +
    +class DropForeignKeyConstraintDeleteCascadeSample {
    +
    +  static void deleteForeignKeyDeleteCascadeConstraint() {
    +    // TODO(developer): Replace these variables before running the sample.
    +    String projectId = "my-project";
    +    String instanceId = "my-instance";
    +    String databaseId = "my-database";
    +
    +    try (Spanner spanner =
    +        SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) {
    +      DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient();
    +      deleteForeignKeyDeleteCascadeConstraint(adminClient, instanceId, databaseId);
    +    }
    +  }
    +
    +  static void deleteForeignKeyDeleteCascadeConstraint(
    +      DatabaseAdminClient adminClient, String instanceId, String databaseId) {
    +    adminClient.updateDatabaseDdl(
    +        instanceId,
    +        databaseId,
    +        ImmutableList.of(
    +            "ALTER TABLE ShoppingCarts\n"
    +                + "              DROP CONSTRAINT FKShoppingCartsCustomerName\n"),
    +        null);
    +
    +    System.out.printf(
    +        String.format(
    +            "Altered ShoppingCarts table to drop FKShoppingCartsCustomerName\n"
    +                + "foreign key constraint on database %s on instance %s\n",
    +            databaseId, instanceId));
    +  }
    +}
    +// [END spanner_drop_foreign_key_constraint_delete_cascade]
    diff --git a/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java
    new file mode 100644
    index 00000000000..f7194247585
    --- /dev/null
    +++ b/samples/snippets/src/test/java/com/example/spanner/AlterTableWithForeignKeyDeleteCascadeSampleIT.java
    @@ -0,0 +1,65 @@
    +/*
    + * Copyright 2023 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 java.util.Arrays;
    +import java.util.concurrent.TimeUnit;
    +import org.junit.Test;
    +
    +public class AlterTableWithForeignKeyDeleteCascadeSampleIT extends SampleTestBase {
    +
    +  @Test
    +  public void testAlterTableWithForeignKeyDeleteCascade() throws Exception {
    +
    +    // Creates database
    +    final String databaseId = idGenerator.generateDatabaseId();
    +    databaseAdminClient
    +        .createDatabase(
    +            instanceId,
    +            databaseId,
    +            Arrays.asList(
    +                "CREATE TABLE Customers (\n"
    +                    + "              CustomerId INT64 NOT NULL,\n"
    +                    + "              CustomerName STRING(62) NOT NULL,\n"
    +                    + "              ) PRIMARY KEY (CustomerId)",
    +                "CREATE TABLE ShoppingCarts (\n"
    +                    + "              CartId INT64 NOT NULL,\n"
    +                    + "              CustomerId INT64 NOT NULL,\n"
    +                    + "              CustomerName STRING(62) NOT NULL,\n"
    +                    + "              CONSTRAINT FKShoppingCartsCustomerId"
    +                    + " FOREIGN KEY (CustomerId)\n"
    +                    + "              REFERENCES Customers (CustomerId)\n"
    +                    + "              ) PRIMARY KEY (CartId)\n"))
    +        .get(5, TimeUnit.MINUTES);
    +
    +    // Runs sample
    +    final String out =
    +        SampleRunner.runSample(
    +            () ->
    +                AlterTableWithForeignKeyDeleteCascadeSample.alterForeignKeyDeleteCascadeConstraint(
    +                    databaseAdminClient, instanceId, databaseId));
    +
    +    assertTrue(
    +        "Expected to have created database "
    +            + databaseId
    +            + " with tables containing "
    +            + "foreign key constraints.",
    +        out.contains("Altered ShoppingCarts table " + "with FKShoppingCartsCustomerName"));
    +  }
    +}
    diff --git a/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java
    new file mode 100644
    index 00000000000..b2dd6638cea
    --- /dev/null
    +++ b/samples/snippets/src/test/java/com/example/spanner/CreateTableWithForeignKeyDeleteCascadeSampleIT.java
    @@ -0,0 +1,52 @@
    +/*
    + * Copyright 2023 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 java.util.Arrays;
    +import java.util.concurrent.TimeUnit;
    +import org.junit.Test;
    +
    +public class CreateTableWithForeignKeyDeleteCascadeSampleIT extends SampleTestBase {
    +
    +  @Test
    +  public void testCreateTableWithForeignKeyDeleteCascade() throws Exception {
    +
    +    // Creates database
    +    final String databaseId = idGenerator.generateDatabaseId();
    +    databaseAdminClient
    +        .createDatabase(instanceId, databaseId, Arrays.asList())
    +        .get(5, TimeUnit.MINUTES);
    +
    +    // Runs sample
    +    final String out =
    +        SampleRunner.runSample(
    +            () ->
    +                CreateTableWithForeignKeyDeleteCascadeSample
    +                    .createForeignKeyDeleteCascadeConstraint(
    +                        databaseAdminClient, instanceId, databaseId));
    +
    +    assertTrue(
    +        "Expected to have created database "
    +            + databaseId
    +            + " with tables containing "
    +            + "foreign key constraints.",
    +        out.contains(
    +            "Created Customers and ShoppingCarts table " + "with FKShoppingCartsCustomerId"));
    +  }
    +}
    diff --git a/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java
    new file mode 100644
    index 00000000000..1c58daded18
    --- /dev/null
    +++ b/samples/snippets/src/test/java/com/example/spanner/DropForeignKeyConstraintDeleteCascadeSampleIT.java
    @@ -0,0 +1,63 @@
    +/*
    + * Copyright 2023 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 java.util.Arrays;
    +import java.util.concurrent.TimeUnit;
    +import org.junit.Test;
    +
    +public class DropForeignKeyConstraintDeleteCascadeSampleIT extends SampleTestBase {
    +
    +  @Test
    +  public void testDropForeignKeyConstraintDeleteCascade() throws Exception {
    +
    +    // Creates database
    +    final String databaseId = idGenerator.generateDatabaseId();
    +    databaseAdminClient
    +        .createDatabase(
    +            instanceId,
    +            databaseId,
    +            Arrays.asList(
    +                "CREATE TABLE Customers (\n"
    +                    + "              CustomerId INT64 NOT NULL,\n"
    +                    + "              CustomerName STRING(62) NOT NULL,\n"
    +                    + "              ) PRIMARY KEY (CustomerId)",
    +                "CREATE TABLE ShoppingCarts (\n"
    +                    + "              CartId INT64 NOT NULL,\n"
    +                    + "              CustomerId INT64 NOT NULL,\n"
    +                    + "              CustomerName STRING(62) NOT NULL,\n"
    +                    + "              CONSTRAINT FKShoppingCartsCustomerName"
    +                    + " FOREIGN KEY (CustomerName)\n"
    +                    + "              REFERENCES Customers (CustomerName) ON DELETE CASCADE\n"
    +                    + "              ) PRIMARY KEY (CartId)\n"))
    +        .get(5, TimeUnit.MINUTES);
    +
    +    // Runs sample
    +    final String out =
    +        SampleRunner.runSample(
    +            () ->
    +                DropForeignKeyConstraintDeleteCascadeSample.deleteForeignKeyDeleteCascadeConstraint(
    +                    databaseAdminClient, instanceId, databaseId));
    +
    +    assertTrue(
    +        "Expected to have dropped foreign-key constraints from tables in created database "
    +            + databaseId,
    +        out.contains("Altered ShoppingCarts table to drop FKShoppingCartsCustomerName"));
    +  }
    +}
    diff --git a/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java b/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java
    index 47c6f4f0230..39424c8d080 100644
    --- a/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java
    +++ b/samples/snippets/src/test/java/com/example/spanner/SampleTestBase.java
    @@ -44,10 +44,14 @@ public class SampleTestBase {
     
       @BeforeClass
       public static void beforeClass() {
    -    final SpannerOptions options = SpannerOptions
    +    final String serverUrl = "";
    +    final SpannerOptions.Builder optionsBuilder = SpannerOptions
             .newBuilder()
    -        .setAutoThrottleAdministrativeRequests()
    -        .build();
    +        .setAutoThrottleAdministrativeRequests();
    +    if (!serverUrl.isEmpty()) {
    +      optionsBuilder.setHost(serverUrl);
    +    }
    +    final SpannerOptions options = optionsBuilder.build();
         projectId = options.getProjectId();
         spanner = options.getService();
         databaseAdminClient = spanner.getDatabaseAdminClient();
    diff --git a/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java
    index 3bee78b7871..30ad8eec6a2 100644
    --- a/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java
    +++ b/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java
    @@ -20,6 +20,8 @@
     import static org.junit.Assert.assertTrue;
     
     import com.google.api.gax.longrunning.OperationFuture;
    +import com.google.cloud.spanner.Database;
    +import com.google.cloud.spanner.DatabaseId;
     import com.google.cloud.spanner.DatabaseInfo.DatabaseField;
     import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata;
     import java.util.Collections;
    diff --git a/versions.txt b/versions.txt
    index 6f4c5e9b511..0f5dd249fb5 100644
    --- a/versions.txt
    +++ b/versions.txt
    @@ -1,11 +1,11 @@
     # Format:
     # module:released-version:current-version
     
    -proto-google-cloud-spanner-admin-instance-v1:6.43.2:6.43.2
    -proto-google-cloud-spanner-v1:6.43.2:6.43.2
    -proto-google-cloud-spanner-admin-database-v1:6.43.2:6.43.2
    -grpc-google-cloud-spanner-v1:6.43.2:6.43.2
    -grpc-google-cloud-spanner-admin-instance-v1:6.43.2:6.43.2
    -grpc-google-cloud-spanner-admin-database-v1:6.43.2:6.43.2
    -google-cloud-spanner:6.43.2:6.43.2
    -google-cloud-spanner-executor:6.43.2:6.43.2
    +proto-google-cloud-spanner-admin-instance-v1:6.44.0:6.44.0
    +proto-google-cloud-spanner-v1:6.44.0:6.44.0
    +proto-google-cloud-spanner-admin-database-v1:6.44.0:6.44.0
    +grpc-google-cloud-spanner-v1:6.44.0:6.44.0
    +grpc-google-cloud-spanner-admin-instance-v1:6.44.0:6.44.0
    +grpc-google-cloud-spanner-admin-database-v1:6.44.0:6.44.0
    +google-cloud-spanner:6.44.0:6.44.0
    +google-cloud-spanner-executor:6.44.0:6.44.0