From 2e1329ef3d296c1556816ebf07cea1b846d8bff8 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Fri, 27 Sep 2024 19:55:53 +0000 Subject: [PATCH 01/26] chore: use composite action (#3351) --- .../scripts/hermetic_library_generation.sh | 116 ------------------ .../hermetic_library_generation.yaml | 32 +++-- 2 files changed, 15 insertions(+), 133 deletions(-) delete mode 100644 .github/scripts/hermetic_library_generation.sh diff --git a/.github/scripts/hermetic_library_generation.sh b/.github/scripts/hermetic_library_generation.sh deleted file mode 100644 index 49a7414cf7e..00000000000 --- a/.github/scripts/hermetic_library_generation.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash -set -e -# This script should be run at the root of the repository. -# This script is used to, when a pull request changes the generation -# configuration (generation_config.yaml by default): -# 1. Find whether the last commit in this pull request contains changes to -# the generation configuration and exit early if it doesn't have such a change -# since the generation result would be the same. -# 2. Compare generation configurations in the current branch (with which the -# pull request associated) and target branch (into which the pull request is -# merged); -# 3. Generate changed libraries using library_generation image; -# 4. Commit the changes to the pull request, if any. -# 5. Edit the PR body with generated pull request description, if applicable. - -# The following commands need to be installed before running the script: -# 1. git -# 2. gh -# 3. docker - -# The parameters of this script is: -# 1. target_branch, the branch into which the pull request is merged. -# 2. current_branch, the branch with which the pull request is associated. -# 3. [optional] generation_config, the path to the generation configuration, -# the default value is generation_config.yaml in the repository root. -while [[ $# -gt 0 ]]; do -key="$1" -case "${key}" in - --target_branch) - target_branch="$2" - shift - ;; - --current_branch) - current_branch="$2" - shift - ;; - --generation_config) - generation_config="$2" - shift - ;; - *) - echo "Invalid option: [$1]" - exit 1 - ;; -esac -shift -done - -if [ -z "${target_branch}" ]; then - echo "missing required argument --target_branch" - exit 1 -fi - -if [ -z "${current_branch}" ]; then - echo "missing required argument --current_branch" - exit 1 -fi - -if [ -z "${generation_config}" ]; then - generation_config=generation_config.yaml - echo "Using default generation config: ${generation_config}" -fi - -workspace_name="/workspace" -baseline_generation_config="baseline_generation_config.yaml" -message="chore: generate libraries at $(date)" - -git checkout "${target_branch}" -git checkout "${current_branch}" - -# copy generation configuration from target branch to current branch. -git show "${target_branch}":"${generation_config}" > "${baseline_generation_config}" - -# parse image tag from the generation configuration. -image_tag=$(grep "gapic_generator_version" "${generation_config}" | cut -d ':' -f 2 | xargs) - -repo_root_dir=$(pwd) -mkdir -p "${repo_root_dir}/output" -# download api definitions from googleapis repository -googleapis_commitish=$(grep googleapis_commitish "${generation_config}" | cut -d ":" -f 2 | xargs) -api_def_dir=$(mktemp -d) -git clone https://github.com/googleapis/googleapis.git "${api_def_dir}" -pushd "${api_def_dir}" -git checkout "${googleapis_commitish}" -cp -r google/ grafeas/ "${repo_root_dir}/output" -popd - -# run hermetic code generation docker image. -docker run \ - --rm \ - -u "$(id -u):$(id -g)" \ - -v "$(pwd):${workspace_name}" \ - gcr.io/cloud-devrel-public-resources/java-library-generation:"${image_tag}" \ - --baseline-generation-config-path="${workspace_name}/${baseline_generation_config}" \ - --current-generation-config-path="${workspace_name}/${generation_config}" - -# remove api definitions after generation -rm -rf "${api_def_dir}" - -# commit the change to the pull request. -rm -rdf output googleapis "${baseline_generation_config}" -git add --all -- ':!pr_description.txt' ':!hermetic_library_generation.sh' -changed_files=$(git diff --cached --name-only) -if [[ "${changed_files}" != "" ]]; then - echo "Commit changes..." - git commit -m "${message}" - git push -else - echo "There is no generated code change, skip commit." -fi - -# set pr body if pr_description.txt is generated. -if [[ -f "pr_description.txt" ]]; then - pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") - gh pr edit "${pr_num}" --body "$(cat pr_description.txt)" -fi diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 51a087f8e59..4caa5567a3e 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -18,30 +18,28 @@ on: pull_request: env: - HEAD_REF: ${{ github.head_ref }} REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }} GITHUB_REPOSITORY: ${{ github.repository }} - jobs: library_generation: runs-on: ubuntu-latest steps: + - name: Determine whether the pull request comes from a fork + run: | + if [[ "${GITHUB_REPOSITORY}" != "${REPO_FULL_NAME}" ]]; then + echo "This PR comes from a fork. Skip library generation." + echo "SHOULD_RUN=false" >> $GITHUB_ENV + else + echo "SHOULD_RUN=true" >> $GITHUB_ENV + fi - uses: actions/checkout@v4 + if: env.SHOULD_RUN == 'true' with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - name: Generate changed libraries - shell: bash - run: | - set -ex - if [[ "${GITHUB_REPOSITORY}" != "${REPO_FULL_NAME}" ]]; then - echo "This PR comes from a fork. Generation will be skipped" - exit 0 - fi - [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" - [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash .github/scripts/hermetic_library_generation.sh \ - --target_branch ${{ github.base_ref }} \ - --current_branch $HEAD_REF - env: - GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + - uses: googleapis/sdk-platform-java/.github/scripts@v2.46.0 + if: env.SHOULD_RUN == 'true' + with: + base_ref: ${{ github.base_ref }} + head_ref: ${{ github.head_ref }} + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} From 72bb67ff42235bfc6dbeb474efebca0aa0772222 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 30 Sep 2024 22:19:14 +0200 Subject: [PATCH 02/26] chore(deps): update dependency com.google.cloud:libraries-bom to v26.47.0 (#3337) --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index e3322996075..518d8e1063d 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -34,7 +34,7 @@ com.google.cloud libraries-bom - 26.45.0 + 26.47.0 pom import From 51de93ccea02d899de036a0f33a98415babdb821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Wed, 2 Oct 2024 17:11:51 +0200 Subject: [PATCH 03/26] build: ignore editions errors in InstanceAdmin tests (#3360) * build: ignore editions errors in InstanceAdmin tests * chore: generate libraries at Wed Oct 2 13:14:01 UTC 2024 * fix: catch all exception types --------- Co-authored-by: cloud-java-bot --- README.md | 2 +- .../cloud/spanner/it/ITInstanceAdminTest.java | 52 +++++++++++-------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 4035f1eac88..bbf2267b992 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.45.0 + 26.47.0 pom import diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java index f21441f30a8..e6f502abbb2 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITInstanceAdminTest.java @@ -145,27 +145,37 @@ public void updateInstanceWithAutoscalingConfig() throws Exception { .setNodeCount(0) .setAutoscalingConfig(autoscalingConfig) .build(); - OperationFuture op = - instanceClient.updateInstance(toUpdate, InstanceInfo.InstanceField.AUTOSCALING_CONFIG); - Instance newInstance = op.get(); - assertThat(newInstance.getAutoscalingConfig()).isEqualTo(autoscalingConfig); - - Instance newInstanceFromGet = - instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); - assertThat(newInstanceFromGet).isEqualTo(newInstance); - - // Revert back to the instance original state. - toUpdate = - InstanceInfo.newBuilder(instance.getId()) - .setAutoscalingConfig(null) - .setNodeCount(instance.getNodeCount()) - .build(); - instanceClient - .updateInstance( - toUpdate, - InstanceInfo.InstanceField.AUTOSCALING_CONFIG, - InstanceInfo.InstanceField.NODE_COUNT) - .get(); + try { + OperationFuture op = + instanceClient.updateInstance(toUpdate, InstanceInfo.InstanceField.AUTOSCALING_CONFIG); + Instance newInstance = op.get(); + assertThat(newInstance.getAutoscalingConfig()).isEqualTo(autoscalingConfig); + + Instance newInstanceFromGet = + instanceClient.getInstance(env.getTestHelper().getInstanceId().getInstance()); + assertThat(newInstanceFromGet).isEqualTo(newInstance); + + // Revert back to the instance original state. + toUpdate = + InstanceInfo.newBuilder(instance.getId()) + .setAutoscalingConfig(null) + .setNodeCount(instance.getNodeCount()) + .build(); + instanceClient + .updateInstance( + toUpdate, + InstanceInfo.InstanceField.AUTOSCALING_CONFIG, + InstanceInfo.InstanceField.NODE_COUNT) + .get(); + } catch (Exception exception) { + // TODO: Remove once the client lib supports creating instances with an Edition. + if (!exception + .getMessage() + .contains("The minimum required Edition for this feature is ENTERPRISE.")) { + throw exception; + } + // ignore this error for now. + } } @Test From 6f3b753b46e9d11568ac0593ba32025215700572 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:20:36 +0200 Subject: [PATCH 04/26] chore(main): release 6.76.1-SNAPSHOT (#3352) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- benchmarks/pom.xml | 2 +- google-cloud-spanner-bom/pom.xml | 18 ++++++++--------- google-cloud-spanner-executor/pom.xml | 4 ++-- google-cloud-spanner/pom.xml | 4 ++-- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- grpc-google-cloud-spanner-executor-v1/pom.xml | 4 ++-- grpc-google-cloud-spanner-v1/pom.xml | 4 ++-- pom.xml | 20 +++++++++---------- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- proto-google-cloud-spanner-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 20 +++++++++---------- 15 files changed, 51 insertions(+), 51 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 18ced5c2b5f..c05c2b61792 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -24,7 +24,7 @@ com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 65236993a67..806853eb9da 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner-bom - 6.76.0 + 6.76.1-SNAPSHOT pom com.google.cloud @@ -53,43 +53,43 @@ com.google.cloud google-cloud-spanner - 6.76.0 + 6.76.1-SNAPSHOT com.google.cloud google-cloud-spanner test-jar - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 4290f4b50e1..46fb9678030 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.76.0 + 6.76.1-SNAPSHOT jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index c19dffa3db5..5a9d58c6762 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.76.0 + 6.76.1-SNAPSHOT jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT google-cloud-spanner diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index 5a528eeaae8..6a5dcc5dbd9 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.76.0 + 6.76.1-SNAPSHOT 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.76.0 + 6.76.1-SNAPSHOT diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index 4367cc53bd2..e0cef7b13e5 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.76.0 + 6.76.1-SNAPSHOT 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.76.0 + 6.76.1-SNAPSHOT diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml index a76af487dee..69be1c590dc 100644 --- a/grpc-google-cloud-spanner-executor-v1/pom.xml +++ b/grpc-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.76.0 + 6.76.1-SNAPSHOT grpc-google-cloud-spanner-executor-v1 GRPC library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 61606c430d1..045c86b815c 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.76.0 + 6.76.1-SNAPSHOT grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index 1384f33a733..e5e1d091484 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.76.0 + 6.76.1-SNAPSHOT Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -61,47 +61,47 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.76.0 + 6.76.1-SNAPSHOT com.google.cloud google-cloud-spanner - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 6dfc7cab9f8..0f9186a007d 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.76.0 + 6.76.1-SNAPSHOT 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.76.0 + 6.76.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index 3c781ade1f0..04117a21bde 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.76.0 + 6.76.1-SNAPSHOT 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.76.0 + 6.76.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml index 73862db7892..1d798448799 100644 --- a/proto-google-cloud-spanner-executor-v1/pom.xml +++ b/proto-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.76.0 + 6.76.1-SNAPSHOT proto-google-cloud-spanner-executor-v1 Proto library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 58f9fb8f995..71c681e9681 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.76.0 + 6.76.1-SNAPSHOT proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 21cb89f9a05..f4a8337bb13 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.76.0 + 6.76.1-SNAPSHOT diff --git a/versions.txt b/versions.txt index 292026acfa3..ab6b29a7162 100644 --- a/versions.txt +++ b/versions.txt @@ -1,13 +1,13 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.76.0:6.76.0 -proto-google-cloud-spanner-v1:6.76.0:6.76.0 -proto-google-cloud-spanner-admin-database-v1:6.76.0:6.76.0 -grpc-google-cloud-spanner-v1:6.76.0:6.76.0 -grpc-google-cloud-spanner-admin-instance-v1:6.76.0:6.76.0 -grpc-google-cloud-spanner-admin-database-v1:6.76.0:6.76.0 -google-cloud-spanner:6.76.0:6.76.0 -google-cloud-spanner-executor:6.76.0:6.76.0 -proto-google-cloud-spanner-executor-v1:6.76.0:6.76.0 -grpc-google-cloud-spanner-executor-v1:6.76.0:6.76.0 +proto-google-cloud-spanner-admin-instance-v1:6.76.0:6.76.1-SNAPSHOT +proto-google-cloud-spanner-v1:6.76.0:6.76.1-SNAPSHOT +proto-google-cloud-spanner-admin-database-v1:6.76.0:6.76.1-SNAPSHOT +grpc-google-cloud-spanner-v1:6.76.0:6.76.1-SNAPSHOT +grpc-google-cloud-spanner-admin-instance-v1:6.76.0:6.76.1-SNAPSHOT +grpc-google-cloud-spanner-admin-database-v1:6.76.0:6.76.1-SNAPSHOT +google-cloud-spanner:6.76.0:6.76.1-SNAPSHOT +google-cloud-spanner-executor:6.76.0:6.76.1-SNAPSHOT +proto-google-cloud-spanner-executor-v1:6.76.0:6.76.1-SNAPSHOT +grpc-google-cloud-spanner-executor-v1:6.76.0:6.76.1-SNAPSHOT From 5191e71a83a316b41564ce2604980c8f33135f2f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 17:43:02 +0200 Subject: [PATCH 05/26] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.36.1 (#3355) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-spanner-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index fbf98c4888c..e2dc4fc8ec5 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -17,6 +17,6 @@ jobs: # repository .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.35.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.36.1 with: bom-path: google-cloud-spanner-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index ec11dece611..0effa03c522 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.35.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.36.1" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index 85ab5c49b1e..96a8059b9b9 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.35.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.36.1" } env_vars: { diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 806853eb9da..364588d6d72 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.35.0 + 3.36.1 Google Cloud Spanner BOM diff --git a/pom.xml b/pom.xml index e5e1d091484..0a29b9a22aa 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.35.0 + 3.36.1 From 38dc14a4cb0ddd9a13f1cdfae95818fd53f29455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Wed, 2 Oct 2024 18:02:59 +0200 Subject: [PATCH 06/26] test: try to consume rows until failure (#3361) * test: try to consume rows until failure * chore: generate libraries at Wed Oct 2 15:20:04 UTC 2024 --------- Co-authored-by: cloud-java-bot --- .../cloud/spanner/CloseSpannerWithOpenResultSetTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/CloseSpannerWithOpenResultSetTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/CloseSpannerWithOpenResultSetTest.java index a489a269b22..8d622579714 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/CloseSpannerWithOpenResultSetTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/CloseSpannerWithOpenResultSetTest.java @@ -96,7 +96,12 @@ public void testBatchClient_closedSpannerWithOpenResultSet_streamsAreCancelled() } ((SpannerImpl) spanner).close(1, TimeUnit.MILLISECONDS); // This should return an error as the stream is cancelled. - SpannerException exception = assertThrows(SpannerException.class, resultSet::next); + SpannerException exception = + assertThrows( + SpannerException.class, + () -> { //noinspection StatementWithEmptyBody + while (resultSet.next()) {} + }); assertEquals(ErrorCode.CANCELLED, exception.getErrorCode()); } } From 84943dab9c95d0d9351450394493bae28161d75c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Wed, 2 Oct 2024 18:04:05 +0200 Subject: [PATCH 07/26] chore: check that the session has a lastUseTime (#3363) --- .../src/main/java/com/google/cloud/spanner/SessionPool.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java index 0a7c42477e2..cf50fa44c77 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java @@ -2083,7 +2083,8 @@ private void removeIdleSessions(Instant currTime) { Iterator iterator = sessions.descendingIterator(); while (iterator.hasNext()) { PooledSession session = iterator.next(); - if (session.delegate.getLastUseTime().isBefore(minLastUseTime)) { + if (session.delegate.getLastUseTime() != null + && session.delegate.getLastUseTime().isBefore(minLastUseTime)) { if (session.state != SessionState.CLOSING) { boolean isRemoved = removeFromPool(session); if (isRemoved) { @@ -2676,7 +2677,8 @@ private Tuple findSessionToKeepAlive( && (numChecked + numAlreadyChecked) < (options.getMinSessions() + options.getMaxIdleSessions() - numSessionsInUse)) { PooledSession session = iterator.next(); - if (session.delegate.getLastUseTime().isBefore(keepAliveThreshold)) { + if (session.delegate.getLastUseTime() != null + && session.delegate.getLastUseTime().isBefore(keepAliveThreshold)) { iterator.remove(); return Tuple.of(session, numChecked); } From 7b05e4301953364617691e8ae225cea823e3a323 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 18:08:16 +0200 Subject: [PATCH 08/26] deps: update opentelemetry.version to v1.42.1 (#3330) --- benchmarks/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index c05c2b61792..8766d2e2e86 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -34,7 +34,7 @@ UTF-8 UTF-8 2.10.0 - 1.41.0 + 1.42.1 From 378f5cfb08d4e5ee80b21007bfc829de61bfbdbe Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:04:43 +0200 Subject: [PATCH 09/26] deps: update googleapis/sdk-platform-java action to v2.46.1 (#3354) --- .github/workflows/hermetic_library_generation.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 4caa5567a3e..9f1a24bd6f8 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -37,7 +37,7 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - uses: googleapis/sdk-platform-java/.github/scripts@v2.46.0 + - uses: googleapis/sdk-platform-java/.github/scripts@v2.46.1 if: env.SHOULD_RUN == 'true' with: base_ref: ${{ github.base_ref }} From 7c21164f2b8e75afab268f2fb8e132a372ac0d67 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:09:44 +0200 Subject: [PATCH 10/26] deps: update dependency commons-io:commons-io to v2.17.0 (#3349) --- google-cloud-spanner-executor/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 46fb9678030..ec03201fb05 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -134,7 +134,7 @@ commons-io commons-io - 2.16.1 + 2.17.0 From c078ac34c3d14b13bbd4a507de4f0013975dca4e Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Wed, 2 Oct 2024 13:14:42 -0400 Subject: [PATCH 11/26] chore: Update generation configuration at Wed Oct 2 02:24:35 UTC 2024 (#3353) * chore: Update generation configuration at Sat Sep 28 02:23:38 UTC 2024 * chore: Update generation configuration at Mon Sep 30 20:28:50 UTC 2024 * chore: generate libraries at Mon Sep 30 20:29:33 UTC 2024 * chore: Update generation configuration at Tue Oct 1 02:28:18 UTC 2024 * chore: Update generation configuration at Wed Oct 2 02:24:35 UTC 2024 --- generation_config.yaml | 2 +- .../google/spanner/v1/ExecuteSqlRequest.java | 60 ++- .../com/google/spanner/v1/SpannerProto.java | 349 +++++++++--------- .../com/google/spanner/v1/StructType.java | 144 ++++---- .../spanner/v1/StructTypeOrBuilder.java | 30 +- .../main/java/com/google/spanner/v1/Type.java | 218 ++++++----- .../google/spanner/v1/TypeAnnotationCode.java | 42 ++- .../java/com/google/spanner/v1/TypeCode.java | 54 ++- .../com/google/spanner/v1/TypeOrBuilder.java | 58 +-- .../java/com/google/spanner/v1/TypeProto.java | 19 +- .../proto/google/spanner/v1/spanner.proto | 14 +- .../main/proto/google/spanner/v1/type.proto | 73 ++-- 12 files changed, 611 insertions(+), 452 deletions(-) diff --git a/generation_config.yaml b/generation_config.yaml index 720fec899ab..22e3d873bcf 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ gapic_generator_version: 2.46.1 -googleapis_commitish: 005df4681b89bd204a90b76168a6dc9d9e7bf4fe +googleapis_commitish: 16a1580c06b3b32e8ab33c39d846bba7e21bfae3 libraries_bom_version: 26.47.0 libraries: - api_shortname: spanner 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 850eec8ddcf..94ec19c8db9 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 @@ -115,13 +115,37 @@ public enum QueryMode implements com.google.protobuf.ProtocolMessageEnum { * * *
-     * This mode returns both the query plan and the execution statistics along
-     * with the results.
+     * This mode returns the query plan, overall execution statistics,
+     * operator level execution statistics along with the results. This has a
+     * performance overhead compared to the other modes. It is not recommended
+     * to use this mode for production traffic.
      * 
* * PROFILE = 2; */ PROFILE(2), + /** + * + * + *
+     * This mode returns the overall (but not operator-level) execution
+     * statistics along with the results.
+     * 
+ * + * WITH_STATS = 3; + */ + WITH_STATS(3), + /** + * + * + *
+     * This mode returns the query plan, overall (but not operator-level)
+     * execution statistics along with the results.
+     * 
+ * + * WITH_PLAN_AND_STATS = 4; + */ + WITH_PLAN_AND_STATS(4), UNRECOGNIZED(-1), ; @@ -150,13 +174,37 @@ public enum QueryMode implements com.google.protobuf.ProtocolMessageEnum { * * *
-     * This mode returns both the query plan and the execution statistics along
-     * with the results.
+     * This mode returns the query plan, overall execution statistics,
+     * operator level execution statistics along with the results. This has a
+     * performance overhead compared to the other modes. It is not recommended
+     * to use this mode for production traffic.
      * 
* * PROFILE = 2; */ public static final int PROFILE_VALUE = 2; + /** + * + * + *
+     * This mode returns the overall (but not operator-level) execution
+     * statistics along with the results.
+     * 
+ * + * WITH_STATS = 3; + */ + public static final int WITH_STATS_VALUE = 3; + /** + * + * + *
+     * This mode returns the query plan, overall (but not operator-level)
+     * execution statistics along with the results.
+     * 
+ * + * WITH_PLAN_AND_STATS = 4; + */ + public static final int WITH_PLAN_AND_STATS_VALUE = 4; public final int getNumber() { if (this == UNRECOGNIZED) { @@ -188,6 +236,10 @@ public static QueryMode forNumber(int value) { return PLAN; case 2: return PROFILE; + case 3: + return WITH_STATS; + case 4: + return WITH_PLAN_AND_STATS; default: return null; } 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 3aebaeeaae6..9c90d3f61a1 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 @@ -236,7 +236,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "aSelection\022\036\n\026auto_failover_disabled\030\002 \001" + "(\010\032f\n\017ExcludeReplicas\022S\n\022replica_selecti" + "ons\030\001 \003(\01327.google.spanner.v1.DirectedRe" - + "adOptions.ReplicaSelectionB\n\n\010replicas\"\307" + + "adOptions.ReplicaSelectionB\n\n\010replicas\"\360" + "\006\n\021ExecuteSqlRequest\0227\n\007session\030\001 \001(\tB&\340" + "A\002\372A \n\036spanner.googleapis.com/Session\022;\n" + "\013transaction\030\002 \001(\0132&.google.spanner.v1.T" @@ -256,182 +256,183 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "ueryOptions\022\031\n\021optimizer_version\030\001 \001(\t\022$" + "\n\034optimizer_statistics_package\030\002 \001(\t\032J\n\017" + "ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 " - + "\001(\0132\027.google.spanner.v1.Type:\0028\001\".\n\tQuer" + + "\001(\0132\027.google.spanner.v1.Type:\0028\001\"W\n\tQuer" + "yMode\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.googleapis.com/Ses" - + "sion\022@\n\013transaction\030\002 \001(\0132&.google.spann" - + "er.v1.TransactionSelectorB\003\340A\002\022L\n\nstatem" - + "ents\030\003 \003(\01323.google.spanner.v1.ExecuteBa" - + "tchDmlRequest.StatementB\003\340A\002\022\022\n\005seqno\030\004 " - + "\001(\003B\003\340A\002\022:\n\017request_options\030\005 \001(\0132!.goog" - + "le.spanner.v1.RequestOptions\032\354\001\n\tStateme" - + "nt\022\020\n\003sql\030\001 \001(\tB\003\340A\002\022\'\n\006params\030\002 \001(\0132\027.g" - + "oogle.protobuf.Struct\022X\n\013param_types\030\003 \003" - + "(\0132C.google.spanner.v1.ExecuteBatchDmlRe" - + "quest.Statement.ParamTypesEntry\032J\n\017Param" - + "TypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027" - + ".google.spanner.v1.Type:\0028\001\"p\n\027ExecuteBa" - + "tchDmlResponse\0221\n\013result_sets\030\001 \003(\0132\034.go" - + "ogle.spanner.v1.ResultSet\022\"\n\006status\030\002 \001(" - + "\0132\022.google.rpc.Status\"H\n\020PartitionOption" - + "s\022\034\n\024partition_size_bytes\030\001 \001(\003\022\026\n\016max_p" - + "artitions\030\002 \001(\003\"\243\003\n\025PartitionQueryReques" - + "t\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.goog" - + "leapis.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.goog" - + "le.protobuf.Struct\022M\n\013param_types\030\005 \003(\0132" - + "8.google.spanner.v1.PartitionQueryReques" - + "t.ParamTypesEntry\022>\n\021partition_options\030\006" - + " \001(\0132#.google.spanner.v1.PartitionOption" - + "s\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\"\261\002" - + "\n\024PartitionReadRequest\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\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.sp" - + "anner.v1.PartitionOptions\"$\n\tPartition\022\027" - + "\n\017partition_token\030\001 \001(\014\"z\n\021PartitionResp" - + "onse\0220\n\npartitions\030\001 \003(\0132\034.google.spanne" - + "r.v1.Partition\0223\n\013transaction\030\002 \001(\0132\036.go" - + "ogle.spanner.v1.Transaction\"\366\005\n\013ReadRequ" - + "est\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.go" - + "ogleapis.com/Session\022;\n\013transaction\030\002 \001(" - + "\0132&.google.spanner.v1.TransactionSelecto" - + "r\022\022\n\005table\030\003 \001(\tB\003\340A\002\022\r\n\005index\030\004 \001(\t\022\024\n\007" - + "columns\030\005 \003(\tB\003\340A\002\022/\n\007key_set\030\006 \001(\0132\031.go" - + "ogle.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\017partition_to" - + "ken\030\n \001(\014\022:\n\017request_options\030\013 \001(\0132!.goo" - + "gle.spanner.v1.RequestOptions\022E\n\025directe" - + "d_read_options\030\016 \001(\0132&.google.spanner.v1" - + ".DirectedReadOptions\022\032\n\022data_boost_enabl" - + "ed\030\017 \001(\010\022=\n\010order_by\030\020 \001(\0162&.google.span" - + "ner.v1.ReadRequest.OrderByB\003\340A\001\022?\n\tlock_" - + "hint\030\021 \001(\0162\'.google.spanner.v1.ReadReque" - + "st.LockHintB\003\340A\001\"T\n\007OrderBy\022\030\n\024ORDER_BY_" - + "UNSPECIFIED\020\000\022\030\n\024ORDER_BY_PRIMARY_KEY\020\001\022" - + "\025\n\021ORDER_BY_NO_ORDER\020\002\"T\n\010LockHint\022\031\n\025LO" - + "CK_HINT_UNSPECIFIED\020\000\022\024\n\020LOCK_HINT_SHARE" - + "D\020\001\022\027\n\023LOCK_HINT_EXCLUSIVE\020\002\"\313\001\n\027BeginTr" - + "ansactionRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A" - + " \n\036spanner.googleapis.com/Session\022;\n\007opt" - + "ions\030\002 \001(\0132%.google.spanner.v1.Transacti" - + "onOptionsB\003\340A\002\022:\n\017request_options\030\003 \001(\0132" - + "!.google.spanner.v1.RequestOptions\"\375\002\n\rC" - + "ommitRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036s" - + "panner.googleapis.com/Session\022\030\n\016transac" - + "tion_id\030\002 \001(\014H\000\022G\n\026single_use_transactio" - + "n\030\003 \001(\0132%.google.spanner.v1.TransactionO" - + "ptionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.spa" - + "nner.v1.Mutation\022\033\n\023return_commit_stats\030" - + "\005 \001(\010\0228\n\020max_commit_delay\030\010 \001(\0132\031.google" - + ".protobuf.DurationB\003\340A\001\022:\n\017request_optio" - + "ns\030\006 \001(\0132!.google.spanner.v1.RequestOpti" - + "onsB\r\n\013transaction\"g\n\017RollbackRequest\0227\n" - + "\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleap" - + "is.com/Session\022\033\n\016transaction_id\030\002 \001(\014B\003" - + "\340A\002\"\316\002\n\021BatchWriteRequest\0227\n\007session\030\001 \001" - + "(\tB&\340A\002\372A \n\036spanner.googleapis.com/Sessi" - + "on\022:\n\017request_options\030\003 \001(\0132!.google.spa" - + "nner.v1.RequestOptions\022P\n\017mutation_group" - + "s\030\004 \003(\01322.google.spanner.v1.BatchWriteRe" - + "quest.MutationGroupB\003\340A\002\022,\n\037exclude_txn_" - + "from_change_streams\030\005 \001(\010B\003\340A\001\032D\n\rMutati" - + "onGroup\0223\n\tmutations\030\001 \003(\0132\033.google.span" - + "ner.v1.MutationB\003\340A\002\"\177\n\022BatchWriteRespon" - + "se\022\017\n\007indexes\030\001 \003(\005\022\"\n\006status\030\002 \001(\0132\022.go" - + "ogle.rpc.Status\0224\n\020commit_timestamp\030\003 \001(" - + "\0132\032.google.protobuf.Timestamp2\213\030\n\007Spanne" - + "r\022\246\001\n\rCreateSession\022\'.google.spanner.v1." - + "CreateSessionRequest\032\032.google.spanner.v1" - + ".Session\"P\332A\010database\202\323\344\223\002?\":/v1/{databa" - + "se=projects/*/instances/*/databases/*}/s" - + "essions:\001*\022\340\001\n\023BatchCreateSessions\022-.goo" - + "gle.spanner.v1.BatchCreateSessionsReques" - + "t\032..google.spanner.v1.BatchCreateSession" - + "sResponse\"j\332A\026database,session_count\202\323\344\223" - + "\002K\"F/v1/{database=projects/*/instances/*" - + "/databases/*}/sessions:batchCreate:\001*\022\227\001" - + "\n\nGetSession\022$.google.spanner.v1.GetSess" - + "ionRequest\032\032.google.spanner.v1.Session\"G" - + "\332A\004name\202\323\344\223\002:\0228/v1/{name=projects/*/inst" - + "ances/*/databases/*/sessions/*}\022\256\001\n\014List" - + "Sessions\022&.google.spanner.v1.ListSession" - + "sRequest\032\'.google.spanner.v1.ListSession" - + "sResponse\"M\332A\010database\202\323\344\223\002<\022:/v1/{datab" + + "\022\016\n\nWITH_STATS\020\003\022\027\n\023WITH_PLAN_AND_STATS\020" + + "\004\"\240\004\n\026ExecuteBatchDmlRequest\0227\n\007session\030" + + "\001 \001(\tB&\340A\002\372A \n\036spanner.googleapis.com/Se" + + "ssion\022@\n\013transaction\030\002 \001(\0132&.google.span" + + "ner.v1.TransactionSelectorB\003\340A\002\022L\n\nstate" + + "ments\030\003 \003(\01323.google.spanner.v1.ExecuteB" + + "atchDmlRequest.StatementB\003\340A\002\022\022\n\005seqno\030\004" + + " \001(\003B\003\340A\002\022:\n\017request_options\030\005 \001(\0132!.goo" + + "gle.spanner.v1.RequestOptions\032\354\001\n\tStatem" + + "ent\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.ExecuteBatchDmlR" + + "equest.Statement.ParamTypesEntry\032J\n\017Para" + + "mTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132" + + "\027.google.spanner.v1.Type:\0028\001\"p\n\027ExecuteB" + + "atchDmlResponse\0221\n\013result_sets\030\001 \003(\0132\034.g" + + "oogle.spanner.v1.ResultSet\022\"\n\006status\030\002 \001" + + "(\0132\022.google.rpc.Status\"H\n\020PartitionOptio" + + "ns\022\034\n\024partition_size_bytes\030\001 \001(\003\022\026\n\016max_" + + "partitions\030\002 \001(\003\"\243\003\n\025PartitionQueryReque" + + "st\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.goo" + + "gleapis.com/Session\022;\n\013transaction\030\002 \001(\013" + + "2&.google.spanner.v1.TransactionSelector" + + "\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n\006params\030\004 \001(\0132\027.goo" + + "gle.protobuf.Struct\022M\n\013param_types\030\005 \003(\013" + + "28.google.spanner.v1.PartitionQueryReque" + + "st.ParamTypesEntry\022>\n\021partition_options\030" + + "\006 \001(\0132#.google.spanner.v1.PartitionOptio" + + "ns\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005va" + + "lue\030\002 \001(\0132\027.google.spanner.v1.Type:\0028\001\"\261" + + "\002\n\024PartitionReadRequest\0227\n\007session\030\001 \001(\t" + + "B&\340A\002\372A \n\036spanner.googleapis.com/Session" + + "\022;\n\013transaction\030\002 \001(\0132&.google.spanner.v" + + "1.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\340" + + "A\002\022>\n\021partition_options\030\t \001(\0132#.google.s" + + "panner.v1.PartitionOptions\"$\n\tPartition\022" + + "\027\n\017partition_token\030\001 \001(\014\"z\n\021PartitionRes" + + "ponse\0220\n\npartitions\030\001 \003(\0132\034.google.spann" + + "er.v1.Partition\0223\n\013transaction\030\002 \001(\0132\036.g" + + "oogle.spanner.v1.Transaction\"\366\005\n\013ReadReq" + + "uest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.g" + + "oogleapis.com/Session\022;\n\013transaction\030\002 \001" + + "(\0132&.google.spanner.v1.TransactionSelect" + + "or\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.g" + + "oogle.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\017partition_t" + + "oken\030\n \001(\014\022:\n\017request_options\030\013 \001(\0132!.go" + + "ogle.spanner.v1.RequestOptions\022E\n\025direct" + + "ed_read_options\030\016 \001(\0132&.google.spanner.v" + + "1.DirectedReadOptions\022\032\n\022data_boost_enab" + + "led\030\017 \001(\010\022=\n\010order_by\030\020 \001(\0162&.google.spa" + + "nner.v1.ReadRequest.OrderByB\003\340A\001\022?\n\tlock" + + "_hint\030\021 \001(\0162\'.google.spanner.v1.ReadRequ" + + "est.LockHintB\003\340A\001\"T\n\007OrderBy\022\030\n\024ORDER_BY" + + "_UNSPECIFIED\020\000\022\030\n\024ORDER_BY_PRIMARY_KEY\020\001" + + "\022\025\n\021ORDER_BY_NO_ORDER\020\002\"T\n\010LockHint\022\031\n\025L" + + "OCK_HINT_UNSPECIFIED\020\000\022\024\n\020LOCK_HINT_SHAR" + + "ED\020\001\022\027\n\023LOCK_HINT_EXCLUSIVE\020\002\"\313\001\n\027BeginT" + + "ransactionRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372" + + "A \n\036spanner.googleapis.com/Session\022;\n\007op" + + "tions\030\002 \001(\0132%.google.spanner.v1.Transact" + + "ionOptionsB\003\340A\002\022:\n\017request_options\030\003 \001(\013" + + "2!.google.spanner.v1.RequestOptions\"\375\002\n\r" + + "CommitRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036" + + "spanner.googleapis.com/Session\022\030\n\016transa" + + "ction_id\030\002 \001(\014H\000\022G\n\026single_use_transacti" + + "on\030\003 \001(\0132%.google.spanner.v1.Transaction" + + "OptionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.sp" + + "anner.v1.Mutation\022\033\n\023return_commit_stats" + + "\030\005 \001(\010\0228\n\020max_commit_delay\030\010 \001(\0132\031.googl" + + "e.protobuf.DurationB\003\340A\001\022:\n\017request_opti" + + "ons\030\006 \001(\0132!.google.spanner.v1.RequestOpt" + + "ionsB\r\n\013transaction\"g\n\017RollbackRequest\0227" + + "\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googlea" + + "pis.com/Session\022\033\n\016transaction_id\030\002 \001(\014B" + + "\003\340A\002\"\316\002\n\021BatchWriteRequest\0227\n\007session\030\001 " + + "\001(\tB&\340A\002\372A \n\036spanner.googleapis.com/Sess" + + "ion\022:\n\017request_options\030\003 \001(\0132!.google.sp" + + "anner.v1.RequestOptions\022P\n\017mutation_grou" + + "ps\030\004 \003(\01322.google.spanner.v1.BatchWriteR" + + "equest.MutationGroupB\003\340A\002\022,\n\037exclude_txn" + + "_from_change_streams\030\005 \001(\010B\003\340A\001\032D\n\rMutat" + + "ionGroup\0223\n\tmutations\030\001 \003(\0132\033.google.spa" + + "nner.v1.MutationB\003\340A\002\"\177\n\022BatchWriteRespo" + + "nse\022\017\n\007indexes\030\001 \003(\005\022\"\n\006status\030\002 \001(\0132\022.g" + + "oogle.rpc.Status\0224\n\020commit_timestamp\030\003 \001" + + "(\0132\032.google.protobuf.Timestamp2\213\030\n\007Spann" + + "er\022\246\001\n\rCreateSession\022\'.google.spanner.v1" + + ".CreateSessionRequest\032\032.google.spanner.v" + + "1.Session\"P\332A\010database\202\323\344\223\002?\":/v1/{datab" + "ase=projects/*/instances/*/databases/*}/" - + "sessions\022\231\001\n\rDeleteSession\022\'.google.span" - + "ner.v1.DeleteSessionRequest\032\026.google.pro" - + "tobuf.Empty\"G\332A\004name\202\323\344\223\002:*8/v1/{name=pr" - + "ojects/*/instances/*/databases/*/session" - + "s/*}\022\243\001\n\nExecuteSql\022$.google.spanner.v1." - + "ExecuteSqlRequest\032\034.google.spanner.v1.Re" - + "sultSet\"Q\202\323\344\223\002K\"F/v1/{session=projects/*" - + "/instances/*/databases/*/sessions/*}:exe" - + "cuteSql:\001*\022\276\001\n\023ExecuteStreamingSql\022$.goo" - + "gle.spanner.v1.ExecuteSqlRequest\032#.googl" - + "e.spanner.v1.PartialResultSet\"Z\202\323\344\223\002T\"O/" - + "v1/{session=projects/*/instances/*/datab" - + "ases/*/sessions/*}:executeStreamingSql:\001" - + "*0\001\022\300\001\n\017ExecuteBatchDml\022).google.spanner" - + ".v1.ExecuteBatchDmlRequest\032*.google.span" - + "ner.v1.ExecuteBatchDmlResponse\"V\202\323\344\223\002P\"K" + + "sessions:\001*\022\340\001\n\023BatchCreateSessions\022-.go" + + "ogle.spanner.v1.BatchCreateSessionsReque" + + "st\032..google.spanner.v1.BatchCreateSessio" + + "nsResponse\"j\332A\026database,session_count\202\323\344" + + "\223\002K\"F/v1/{database=projects/*/instances/" + + "*/databases/*}/sessions:batchCreate:\001*\022\227" + + "\001\n\nGetSession\022$.google.spanner.v1.GetSes" + + "sionRequest\032\032.google.spanner.v1.Session\"" + + "G\332A\004name\202\323\344\223\002:\0228/v1/{name=projects/*/ins" + + "tances/*/databases/*/sessions/*}\022\256\001\n\014Lis" + + "tSessions\022&.google.spanner.v1.ListSessio" + + "nsRequest\032\'.google.spanner.v1.ListSessio" + + "nsResponse\"M\332A\010database\202\323\344\223\002<\022:/v1/{data" + + "base=projects/*/instances/*/databases/*}" + + "/sessions\022\231\001\n\rDeleteSession\022\'.google.spa" + + "nner.v1.DeleteSessionRequest\032\026.google.pr" + + "otobuf.Empty\"G\332A\004name\202\323\344\223\002:*8/v1/{name=p" + + "rojects/*/instances/*/databases/*/sessio" + + "ns/*}\022\243\001\n\nExecuteSql\022$.google.spanner.v1" + + ".ExecuteSqlRequest\032\034.google.spanner.v1.R" + + "esultSet\"Q\202\323\344\223\002K\"F/v1/{session=projects/" + + "*/instances/*/databases/*/sessions/*}:ex" + + "ecuteSql:\001*\022\276\001\n\023ExecuteStreamingSql\022$.go" + + "ogle.spanner.v1.ExecuteSqlRequest\032#.goog" + + "le.spanner.v1.PartialResultSet\"Z\202\323\344\223\002T\"O" + + "/v1/{session=projects/*/instances/*/data" + + "bases/*/sessions/*}:executeStreamingSql:" + + "\001*0\001\022\300\001\n\017ExecuteBatchDml\022).google.spanne" + + "r.v1.ExecuteBatchDmlRequest\032*.google.spa" + + "nner.v1.ExecuteBatchDmlResponse\"V\202\323\344\223\002P\"" + + "K/v1/{session=projects/*/instances/*/dat" + + "abases/*/sessions/*}:executeBatchDml:\001*\022" + + "\221\001\n\004Read\022\036.google.spanner.v1.ReadRequest" + + "\032\034.google.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@" + + "/v1/{session=projects/*/instances/*/data" + + "bases/*/sessions/*}:read:\001*\022\254\001\n\rStreamin" + + "gRead\022\036.google.spanner.v1.ReadRequest\032#." + + "google.spanner.v1.PartialResultSet\"T\202\323\344\223" + + "\002N\"I/v1/{session=projects/*/instances/*/" + + "databases/*/sessions/*}:streamingRead:\001*" + + "0\001\022\311\001\n\020BeginTransaction\022*.google.spanner" + + ".v1.BeginTransactionRequest\032\036.google.spa" + + "nner.v1.Transaction\"i\332A\017session,options\202" + + "\323\344\223\002Q\"L/v1/{session=projects/*/instances" + + "/*/databases/*/sessions/*}:beginTransact" + + "ion:\001*\022\353\001\n\006Commit\022 .google.spanner.v1.Co" + + "mmitRequest\032!.google.spanner.v1.CommitRe" + + "sponse\"\233\001\332A session,transaction_id,mutat" + + "ions\332A(session,single_use_transaction,mu" + + "tations\202\323\344\223\002G\"B/v1/{session=projects/*/i" + + "nstances/*/databases/*/sessions/*}:commi" + + "t:\001*\022\260\001\n\010Rollback\022\".google.spanner.v1.Ro" + + "llbackRequest\032\026.google.protobuf.Empty\"h\332" + + "A\026session,transaction_id\202\323\344\223\002I\"D/v1/{ses" + + "sion=projects/*/instances/*/databases/*/" + + "sessions/*}:rollback:\001*\022\267\001\n\016PartitionQue" + + "ry\022(.google.spanner.v1.PartitionQueryReq" + + "uest\032$.google.spanner.v1.PartitionRespon" + + "se\"U\202\323\344\223\002O\"J/v1/{session=projects/*/inst" + + "ances/*/databases/*/sessions/*}:partitio" + + "nQuery:\001*\022\264\001\n\rPartitionRead\022\'.google.spa" + + "nner.v1.PartitionReadRequest\032$.google.sp" + + "anner.v1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/" + + "{session=projects/*/instances/*/database" + + "s/*/sessions/*}:partitionRead:\001*\022\310\001\n\nBat" + + "chWrite\022$.google.spanner.v1.BatchWriteRe" + + "quest\032%.google.spanner.v1.BatchWriteResp" + + "onse\"k\332A\027session,mutation_groups\202\323\344\223\002K\"F" + "/v1/{session=projects/*/instances/*/data" - + "bases/*/sessions/*}:executeBatchDml:\001*\022\221" - + "\001\n\004Read\022\036.google.spanner.v1.ReadRequest\032" - + "\034.google.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@/" - + "v1/{session=projects/*/instances/*/datab" - + "ases/*/sessions/*}:read:\001*\022\254\001\n\rStreaming" - + "Read\022\036.google.spanner.v1.ReadRequest\032#.g" - + "oogle.spanner.v1.PartialResultSet\"T\202\323\344\223\002" - + "N\"I/v1/{session=projects/*/instances/*/d" - + "atabases/*/sessions/*}:streamingRead:\001*0" - + "\001\022\311\001\n\020BeginTransaction\022*.google.spanner." - + "v1.BeginTransactionRequest\032\036.google.span" - + "ner.v1.Transaction\"i\332A\017session,options\202\323" - + "\344\223\002Q\"L/v1/{session=projects/*/instances/" - + "*/databases/*/sessions/*}:beginTransacti" - + "on:\001*\022\353\001\n\006Commit\022 .google.spanner.v1.Com" - + "mitRequest\032!.google.spanner.v1.CommitRes" - + "ponse\"\233\001\332A session,transaction_id,mutati" - + "ons\332A(session,single_use_transaction,mut" - + "ations\202\323\344\223\002G\"B/v1/{session=projects/*/in" - + "stances/*/databases/*/sessions/*}:commit" - + ":\001*\022\260\001\n\010Rollback\022\".google.spanner.v1.Rol" - + "lbackRequest\032\026.google.protobuf.Empty\"h\332A" - + "\026session,transaction_id\202\323\344\223\002I\"D/v1/{sess" - + "ion=projects/*/instances/*/databases/*/s" - + "essions/*}:rollback:\001*\022\267\001\n\016PartitionQuer" - + "y\022(.google.spanner.v1.PartitionQueryRequ" - + "est\032$.google.spanner.v1.PartitionRespons" - + "e\"U\202\323\344\223\002O\"J/v1/{session=projects/*/insta" - + "nces/*/databases/*/sessions/*}:partition" - + "Query:\001*\022\264\001\n\rPartitionRead\022\'.google.span" - + "ner.v1.PartitionReadRequest\032$.google.spa" - + "nner.v1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/{" - + "session=projects/*/instances/*/databases" - + "/*/sessions/*}:partitionRead:\001*\022\310\001\n\nBatc" - + "hWrite\022$.google.spanner.v1.BatchWriteReq" - + "uest\032%.google.spanner.v1.BatchWriteRespo" - + "nse\"k\332A\027session,mutation_groups\202\323\344\223\002K\"F/" - + "v1/{session=projects/*/instances/*/datab" - + "ases/*/sessions/*}:batchWrite:\001*0\001\032w\312A\026s" - + "panner.googleapis.com\322A[https://www.goog" - + "leapis.com/auth/cloud-platform,https://w" - + "ww.googleapis.com/auth/spanner.dataB\221\002\n\025" - + "com.google.spanner.v1B\014SpannerProtoP\001Z5c" - + "loud.google.com/go/spanner/apiv1/spanner" - + "pb;spannerpb\252\002\027Google.Cloud.Spanner.V1\312\002" - + "\027Google\\Cloud\\Spanner\\V1\352\002\032Google::Cloud" - + "::Spanner::V1\352A_\n\037spanner.googleapis.com" - + "/Database\022 - * `StructType` defines the fields of a [STRUCT][google.spanner.v1.TypeCode.STRUCT] type. + * `StructType` defines the fields of a + * [STRUCT][google.spanner.v1.TypeCode.STRUCT] type. * * * Protobuf type {@code google.spanner.v1.StructType} @@ -1071,9 +1072,9 @@ public com.google.spanner.v1.StructType.Field getDefaultInstanceForType() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1089,9 +1090,9 @@ public java.util.List getFieldsList() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1108,9 +1109,9 @@ public java.util.List getFieldsList() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1126,9 +1127,9 @@ public int getFieldsCount() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1144,9 +1145,9 @@ public com.google.spanner.v1.StructType.Field getFields(int index) { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1319,7 +1320,8 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * `StructType` defines the fields of a [STRUCT][google.spanner.v1.TypeCode.STRUCT] type.
+   * `StructType` defines the fields of a
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT] type.
    * 
* * Protobuf type {@code google.spanner.v1.StructType} @@ -1564,9 +1566,9 @@ private void ensureFieldsIsMutable() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1585,9 +1587,9 @@ public java.util.List getFieldsList() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1606,9 +1608,9 @@ public int getFieldsCount() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1627,9 +1629,9 @@ public com.google.spanner.v1.StructType.Field getFields(int index) { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1654,9 +1656,9 @@ public Builder setFields(int index, com.google.spanner.v1.StructType.Field value * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1679,9 +1681,9 @@ public Builder setFields( * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1706,9 +1708,9 @@ public Builder addFields(com.google.spanner.v1.StructType.Field value) { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1733,9 +1735,9 @@ public Builder addFields(int index, com.google.spanner.v1.StructType.Field value * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1757,9 +1759,9 @@ public Builder addFields(com.google.spanner.v1.StructType.Field.Builder builderF * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1782,9 +1784,9 @@ public Builder addFields( * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1807,9 +1809,9 @@ public Builder addAllFields( * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1831,9 +1833,9 @@ public Builder clearFields() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1855,9 +1857,9 @@ public Builder removeFields(int index) { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1872,9 +1874,9 @@ public com.google.spanner.v1.StructType.Field.Builder getFieldsBuilder(int index * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1893,9 +1895,9 @@ public com.google.spanner.v1.StructType.FieldOrBuilder getFieldsOrBuilder(int in * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1915,9 +1917,9 @@ public com.google.spanner.v1.StructType.FieldOrBuilder getFieldsOrBuilder(int in * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1933,9 +1935,9 @@ public com.google.spanner.v1.StructType.Field.Builder addFieldsBuilder() { * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -1951,9 +1953,9 @@ public com.google.spanner.v1.StructType.Field.Builder addFieldsBuilder(int index * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java index bb7acbd9041..0f1a899c670 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/StructTypeOrBuilder.java @@ -31,9 +31,9 @@ public interface StructTypeOrBuilder * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -46,9 +46,9 @@ public interface StructTypeOrBuilder * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -61,9 +61,9 @@ public interface StructTypeOrBuilder * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -76,9 +76,9 @@ public interface StructTypeOrBuilder * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; @@ -92,9 +92,9 @@ public interface StructTypeOrBuilder * The list of fields that make up this struct. Order is * significant, because values of this struct type are represented as * lists, where the order of field values matches the order of - * fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - * matches the order of columns in a read request, or the order of - * fields in the `SELECT` clause of a query. + * fields in the [StructType][google.spanner.v1.StructType]. In turn, the + * order of fields matches the order of columns in a read request, or the + * order of fields in the `SELECT` clause of a query. * * * repeated .google.spanner.v1.StructType.Field fields = 1; 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 7bbe059cd38..e1e06ef2cf6 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 @@ -104,8 +104,9 @@ public com.google.spanner.v1.TypeCode getCode() { * * *
-   * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-   * is the type of the array elements.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+   * type of the array elements.
    * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -120,8 +121,9 @@ public boolean hasArrayElementType() { * * *
-   * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-   * is the type of the array elements.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+   * type of the array elements.
    * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -138,8 +140,9 @@ public com.google.spanner.v1.Type getArrayElementType() { * * *
-   * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-   * is the type of the array elements.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+   * type of the array elements.
    * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -157,8 +160,9 @@ public com.google.spanner.v1.TypeOrBuilder getArrayElementTypeOrBuilder() { * * *
-   * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-   * provides type information for the struct's fields.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+   * type information for the struct's fields.
    * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -173,8 +177,9 @@ public boolean hasStructType() { * * *
-   * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-   * provides type information for the struct's fields.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+   * type information for the struct's fields.
    * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -191,8 +196,9 @@ public com.google.spanner.v1.StructType getStructType() { * * *
-   * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-   * provides type information for the struct's fields.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+   * type information for the struct's fields.
    * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -210,12 +216,14 @@ public com.google.spanner.v1.StructTypeOrBuilder getStructTypeOrBuilder() { * * *
-   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-   * use to represent values of this type during query processing. This is
-   * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-   * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-   * typically is not needed to process the content of a value (it doesn't
-   * affect serialization) and clients can ignore it on the read path.
+   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+   * disambiguates SQL type that Spanner will use to represent values of this
+   * type during query processing. This is necessary for some type codes because
+   * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+   * SQL types depending on the SQL dialect.
+   * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+   * needed to process the content of a value (it doesn't affect serialization)
+   * and clients can ignore it on the read path.
    * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -230,12 +238,14 @@ public int getTypeAnnotationValue() { * * *
-   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-   * use to represent values of this type during query processing. This is
-   * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-   * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-   * typically is not needed to process the content of a value (it doesn't
-   * affect serialization) and clients can ignore it on the read path.
+   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+   * disambiguates SQL type that Spanner will use to represent values of this
+   * type during query processing. This is necessary for some type codes because
+   * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+   * SQL types depending on the SQL dialect.
+   * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+   * needed to process the content of a value (it doesn't affect serialization)
+   * and clients can ignore it on the read path.
    * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -867,8 +877,9 @@ public Builder clearCode() { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -882,8 +893,9 @@ public boolean hasArrayElementType() { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -903,8 +915,9 @@ public com.google.spanner.v1.Type getArrayElementType() { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -926,8 +939,9 @@ public Builder setArrayElementType(com.google.spanner.v1.Type value) { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -946,8 +960,9 @@ public Builder setArrayElementType(com.google.spanner.v1.Type.Builder builderFor * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -974,8 +989,9 @@ public Builder mergeArrayElementType(com.google.spanner.v1.Type value) { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -994,8 +1010,9 @@ public Builder clearArrayElementType() { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -1009,8 +1026,9 @@ public com.google.spanner.v1.Type.Builder getArrayElementTypeBuilder() { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -1028,8 +1046,9 @@ public com.google.spanner.v1.TypeOrBuilder getArrayElementTypeOrBuilder() { * * *
-     * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-     * is the type of the array elements.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+     * type of the array elements.
      * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -1061,8 +1080,9 @@ public com.google.spanner.v1.TypeOrBuilder getArrayElementTypeOrBuilder() { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1076,8 +1096,9 @@ public boolean hasStructType() { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1097,8 +1118,9 @@ public com.google.spanner.v1.StructType getStructType() { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1120,8 +1142,9 @@ public Builder setStructType(com.google.spanner.v1.StructType value) { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1140,8 +1163,9 @@ public Builder setStructType(com.google.spanner.v1.StructType.Builder builderFor * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1168,8 +1192,9 @@ public Builder mergeStructType(com.google.spanner.v1.StructType value) { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1188,8 +1213,9 @@ public Builder clearStructType() { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1203,8 +1229,9 @@ public com.google.spanner.v1.StructType.Builder getStructTypeBuilder() { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1222,8 +1249,9 @@ public com.google.spanner.v1.StructTypeOrBuilder getStructTypeOrBuilder() { * * *
-     * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-     * provides type information for the struct's fields.
+     * If [code][google.spanner.v1.Type.code] ==
+     * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+     * type information for the struct's fields.
      * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -1250,12 +1278,14 @@ public com.google.spanner.v1.StructTypeOrBuilder getStructTypeOrBuilder() { * * *
-     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-     * use to represent values of this type during query processing. This is
-     * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-     * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-     * typically is not needed to process the content of a value (it doesn't
-     * affect serialization) and clients can ignore it on the read path.
+     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+     * disambiguates SQL type that Spanner will use to represent values of this
+     * type during query processing. This is necessary for some type codes because
+     * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+     * SQL types depending on the SQL dialect.
+     * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+     * needed to process the content of a value (it doesn't affect serialization)
+     * and clients can ignore it on the read path.
      * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -1270,12 +1300,14 @@ public int getTypeAnnotationValue() { * * *
-     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-     * use to represent values of this type during query processing. This is
-     * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-     * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-     * typically is not needed to process the content of a value (it doesn't
-     * affect serialization) and clients can ignore it on the read path.
+     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+     * disambiguates SQL type that Spanner will use to represent values of this
+     * type during query processing. This is necessary for some type codes because
+     * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+     * SQL types depending on the SQL dialect.
+     * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+     * needed to process the content of a value (it doesn't affect serialization)
+     * and clients can ignore it on the read path.
      * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -1293,12 +1325,14 @@ public Builder setTypeAnnotationValue(int value) { * * *
-     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-     * use to represent values of this type during query processing. This is
-     * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-     * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-     * typically is not needed to process the content of a value (it doesn't
-     * affect serialization) and clients can ignore it on the read path.
+     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+     * disambiguates SQL type that Spanner will use to represent values of this
+     * type during query processing. This is necessary for some type codes because
+     * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+     * SQL types depending on the SQL dialect.
+     * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+     * needed to process the content of a value (it doesn't affect serialization)
+     * and clients can ignore it on the read path.
      * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -1315,12 +1349,14 @@ public com.google.spanner.v1.TypeAnnotationCode getTypeAnnotation() { * * *
-     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-     * use to represent values of this type during query processing. This is
-     * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-     * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-     * typically is not needed to process the content of a value (it doesn't
-     * affect serialization) and clients can ignore it on the read path.
+     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+     * disambiguates SQL type that Spanner will use to represent values of this
+     * type during query processing. This is necessary for some type codes because
+     * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+     * SQL types depending on the SQL dialect.
+     * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+     * needed to process the content of a value (it doesn't affect serialization)
+     * and clients can ignore it on the read path.
      * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -1341,12 +1377,14 @@ public Builder setTypeAnnotation(com.google.spanner.v1.TypeAnnotationCode value) * * *
-     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-     * use to represent values of this type during query processing. This is
-     * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-     * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-     * typically is not needed to process the content of a value (it doesn't
-     * affect serialization) and clients can ignore it on the read path.
+     * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+     * disambiguates SQL type that Spanner will use to represent values of this
+     * type during query processing. This is necessary for some type codes because
+     * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+     * SQL types depending on the SQL dialect.
+     * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+     * needed to process the content of a value (it doesn't affect serialization)
+     * and clients can ignore it on the read path.
      * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java index 83853e1d401..6cbae9bdd1c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeAnnotationCode.java @@ -48,11 +48,12 @@ public enum TypeAnnotationCode implements com.google.protobuf.ProtocolMessageEnu * *
    * PostgreSQL compatible NUMERIC type. This annotation needs to be applied to
-   * [Type][google.spanner.v1.Type] instances having [NUMERIC][google.spanner.v1.TypeCode.NUMERIC]
-   * type code to specify that values of this type should be treated as
-   * PostgreSQL NUMERIC values. Currently this annotation is always needed for
-   * [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] when a client interacts with PostgreSQL-enabled
-   * Spanner databases.
+   * [Type][google.spanner.v1.Type] instances having
+   * [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] type code to specify that
+   * values of this type should be treated as PostgreSQL NUMERIC values.
+   * Currently this annotation is always needed for
+   * [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] when a client interacts with
+   * PostgreSQL-enabled Spanner databases.
    * 
* * PG_NUMERIC = 2; @@ -63,11 +64,11 @@ public enum TypeAnnotationCode implements com.google.protobuf.ProtocolMessageEnu * *
    * PostgreSQL compatible JSONB type. This annotation needs to be applied to
-   * [Type][google.spanner.v1.Type] instances having [JSON][google.spanner.v1.TypeCode.JSON]
-   * type code to specify that values of this type should be treated as
-   * PostgreSQL JSONB values. Currently this annotation is always needed for
-   * [JSON][google.spanner.v1.TypeCode.JSON] when a client interacts with PostgreSQL-enabled
-   * Spanner databases.
+   * [Type][google.spanner.v1.Type] instances having
+   * [JSON][google.spanner.v1.TypeCode.JSON] type code to specify that values of
+   * this type should be treated as PostgreSQL JSONB values. Currently this
+   * annotation is always needed for [JSON][google.spanner.v1.TypeCode.JSON]
+   * when a client interacts with PostgreSQL-enabled Spanner databases.
    * 
* * PG_JSONB = 3; @@ -103,11 +104,12 @@ public enum TypeAnnotationCode implements com.google.protobuf.ProtocolMessageEnu * *
    * PostgreSQL compatible NUMERIC type. This annotation needs to be applied to
-   * [Type][google.spanner.v1.Type] instances having [NUMERIC][google.spanner.v1.TypeCode.NUMERIC]
-   * type code to specify that values of this type should be treated as
-   * PostgreSQL NUMERIC values. Currently this annotation is always needed for
-   * [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] when a client interacts with PostgreSQL-enabled
-   * Spanner databases.
+   * [Type][google.spanner.v1.Type] instances having
+   * [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] type code to specify that
+   * values of this type should be treated as PostgreSQL NUMERIC values.
+   * Currently this annotation is always needed for
+   * [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] when a client interacts with
+   * PostgreSQL-enabled Spanner databases.
    * 
* * PG_NUMERIC = 2; @@ -118,11 +120,11 @@ public enum TypeAnnotationCode implements com.google.protobuf.ProtocolMessageEnu * *
    * PostgreSQL compatible JSONB type. This annotation needs to be applied to
-   * [Type][google.spanner.v1.Type] instances having [JSON][google.spanner.v1.TypeCode.JSON]
-   * type code to specify that values of this type should be treated as
-   * PostgreSQL JSONB values. Currently this annotation is always needed for
-   * [JSON][google.spanner.v1.TypeCode.JSON] when a client interacts with PostgreSQL-enabled
-   * Spanner databases.
+   * [Type][google.spanner.v1.Type] instances having
+   * [JSON][google.spanner.v1.TypeCode.JSON] type code to specify that values of
+   * this type should be treated as PostgreSQL JSONB values. Currently this
+   * annotation is always needed for [JSON][google.spanner.v1.TypeCode.JSON]
+   * when a client interacts with PostgreSQL-enabled Spanner databases.
    * 
* * PG_JSONB = 3; 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 42900dd24ca..9c36f6c971b 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 @@ -163,14 +163,14 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum { * *
    * Encoded as `string`, in decimal format or scientific notation format.
-   * <br>Decimal format:
-   * <br>`[+-]Digits[.[Digits]]` or
-   * <br>`[+-][Digits].Digits`
+   * Decimal format:
+   * `[+-]Digits[.[Digits]]` or
+   * `[+-][Digits].Digits`
    *
    * Scientific notation:
-   * <br>`[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
-   * <br>`[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
-   * <br>(ExponentIndicator is `"e"` or `"E"`)
+   * `[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
+   * `[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
+   * (ExponentIndicator is `"e"` or `"E"`)
    * 
* * NUMERIC = 10; @@ -214,6 +214,20 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum { * ENUM = 14; */ ENUM(14), + /** + * + * + *
+   * Encoded as `string`, in `ISO8601` duration format -
+   * `P[n]Y[n]M[n]DT[n]H[n]M[n[.fraction]]S`
+   * where `n` is an integer.
+   * For example, `P1Y2M3DT4H5M6.5S` represents time duration of 1 year, 2
+   * months, 3 days, 4 hours, 5 minutes, and 6.5 seconds.
+   * 
+ * + * INTERVAL = 16; + */ + INTERVAL(16), UNRECOGNIZED(-1), ; @@ -345,14 +359,14 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum { * *
    * Encoded as `string`, in decimal format or scientific notation format.
-   * <br>Decimal format:
-   * <br>`[+-]Digits[.[Digits]]` or
-   * <br>`[+-][Digits].Digits`
+   * Decimal format:
+   * `[+-]Digits[.[Digits]]` or
+   * `[+-][Digits].Digits`
    *
    * Scientific notation:
-   * <br>`[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
-   * <br>`[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
-   * <br>(ExponentIndicator is `"e"` or `"E"`)
+   * `[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
+   * `[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
+   * (ExponentIndicator is `"e"` or `"E"`)
    * 
* * NUMERIC = 10; @@ -396,6 +410,20 @@ public enum TypeCode implements com.google.protobuf.ProtocolMessageEnum { * ENUM = 14; */ public static final int ENUM_VALUE = 14; + /** + * + * + *
+   * Encoded as `string`, in `ISO8601` duration format -
+   * `P[n]Y[n]M[n]DT[n]H[n]M[n[.fraction]]S`
+   * where `n` is an integer.
+   * For example, `P1Y2M3DT4H5M6.5S` represents time duration of 1 year, 2
+   * months, 3 days, 4 hours, 5 minutes, and 6.5 seconds.
+   * 
+ * + * INTERVAL = 16; + */ + public static final int INTERVAL_VALUE = 16; public final int getNumber() { if (this == UNRECOGNIZED) { @@ -451,6 +479,8 @@ public static TypeCode forNumber(int value) { return PROTO; case 14: return ENUM; + case 16: + return INTERVAL; default: return null; } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java index 720c99dfdd0..e93e4976c57 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeOrBuilder.java @@ -53,8 +53,9 @@ public interface TypeOrBuilder * * *
-   * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-   * is the type of the array elements.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+   * type of the array elements.
    * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -66,8 +67,9 @@ public interface TypeOrBuilder * * *
-   * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-   * is the type of the array elements.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+   * type of the array elements.
    * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -79,8 +81,9 @@ public interface TypeOrBuilder * * *
-   * If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
-   * is the type of the array elements.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the
+   * type of the array elements.
    * 
* * .google.spanner.v1.Type array_element_type = 2; @@ -91,8 +94,9 @@ public interface TypeOrBuilder * * *
-   * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-   * provides type information for the struct's fields.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+   * type information for the struct's fields.
    * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -104,8 +108,9 @@ public interface TypeOrBuilder * * *
-   * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-   * provides type information for the struct's fields.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+   * type information for the struct's fields.
    * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -117,8 +122,9 @@ public interface TypeOrBuilder * * *
-   * If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
-   * provides type information for the struct's fields.
+   * If [code][google.spanner.v1.Type.code] ==
+   * [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides
+   * type information for the struct's fields.
    * 
* * .google.spanner.v1.StructType struct_type = 3; @@ -129,12 +135,14 @@ public interface TypeOrBuilder * * *
-   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-   * use to represent values of this type during query processing. This is
-   * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-   * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-   * typically is not needed to process the content of a value (it doesn't
-   * affect serialization) and clients can ignore it on the read path.
+   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+   * disambiguates SQL type that Spanner will use to represent values of this
+   * type during query processing. This is necessary for some type codes because
+   * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+   * SQL types depending on the SQL dialect.
+   * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+   * needed to process the content of a value (it doesn't affect serialization)
+   * and clients can ignore it on the read path.
    * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; @@ -146,12 +154,14 @@ public interface TypeOrBuilder * * *
-   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will
-   * use to represent values of this type during query processing. This is
-   * necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped
-   * to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation]
-   * typically is not needed to process the content of a value (it doesn't
-   * affect serialization) and clients can ignore it on the read path.
+   * The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that
+   * disambiguates SQL type that Spanner will use to represent values of this
+   * type during query processing. This is necessary for some type codes because
+   * a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different
+   * SQL types depending on the SQL dialect.
+   * [type_annotation][google.spanner.v1.Type.type_annotation] typically is not
+   * needed to process the content of a value (it doesn't affect serialization)
+   * and clients can ignore it on the read path.
    * 
* * .google.spanner.v1.TypeAnnotationCode type_annotation = 4; 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 148079b7a99..3c41d2585b4 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 @@ -60,19 +60,20 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "pe_fqn\030\005 \001(\t\"\177\n\nStructType\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.g" - + "oogle.spanner.v1.Type*\307\001\n\010TypeCode\022\031\n\025TY" + + "oogle.spanner.v1.Type*\325\001\n\010TypeCode\022\031\n\025TY" + "PE_CODE_UNSPECIFIED\020\000\022\010\n\004BOOL\020\001\022\t\n\005INT64" + "\020\002\022\013\n\007FLOAT64\020\003\022\013\n\007FLOAT32\020\017\022\r\n\tTIMESTAM" + "P\020\004\022\010\n\004DATE\020\005\022\n\n\006STRING\020\006\022\t\n\005BYTES\020\007\022\t\n\005" + "ARRAY\020\010\022\n\n\006STRUCT\020\t\022\013\n\007NUMERIC\020\n\022\010\n\004JSON" - + "\020\013\022\t\n\005PROTO\020\r\022\010\n\004ENUM\020\016*d\n\022TypeAnnotatio" - + "nCode\022$\n TYPE_ANNOTATION_CODE_UNSPECIFIE" - + "D\020\000\022\016\n\nPG_NUMERIC\020\002\022\014\n\010PG_JSONB\020\003\022\n\n\006PG_" - + "OID\020\004B\254\001\n\025com.google.spanner.v1B\tTypePro" - + "toP\001Z5cloud.google.com/go/spanner/apiv1/" - + "spannerpb;spannerpb\252\002\027Google.Cloud.Spann" - + "er.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google" - + "::Cloud::Spanner::V1b\006proto3" + + "\020\013\022\t\n\005PROTO\020\r\022\010\n\004ENUM\020\016\022\014\n\010INTERVAL\020\020*d\n" + + "\022TypeAnnotationCode\022$\n TYPE_ANNOTATION_C" + + "ODE_UNSPECIFIED\020\000\022\016\n\nPG_NUMERIC\020\002\022\014\n\010PG_" + + "JSONB\020\003\022\n\n\006PG_OID\020\004B\254\001\n\025com.google.spann" + + "er.v1B\tTypeProtoP\001Z5cloud.google.com/go/" + + "spanner/apiv1/spannerpb;spannerpb\252\002\027Goog" + + "le.Cloud.Spanner.V1\312\002\027Google\\Cloud\\Spann" + + "er\\V1\352\002\032Google::Cloud::Spanner::V1b\006prot" + + "o3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto index 301139210ed..856a51b7dfe 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto @@ -628,9 +628,19 @@ message ExecuteSqlRequest { // execution statistics information. PLAN = 1; - // This mode returns both the query plan and the execution statistics along - // with the results. + // This mode returns the query plan, overall execution statistics, + // operator level execution statistics along with the results. This has a + // performance overhead compared to the other modes. It is not recommended + // to use this mode for production traffic. PROFILE = 2; + + // This mode returns the overall (but not operator-level) execution + // statistics along with the results. + WITH_STATS = 3; + + // This mode returns the query plan, overall (but not operator-level) + // execution statistics along with the results. + WITH_PLAN_AND_STATS = 4; } // Query optimizer configuration. diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto index 4e77106c969..734cfb54cda 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto @@ -32,20 +32,24 @@ message Type { // Required. The [TypeCode][google.spanner.v1.TypeCode] for this type. TypeCode code = 1 [(google.api.field_behavior) = REQUIRED]; - // If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` - // is the type of the array elements. + // If [code][google.spanner.v1.Type.code] == + // [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` is the + // type of the array elements. Type array_element_type = 2; - // If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` - // provides type information for the struct's fields. + // If [code][google.spanner.v1.Type.code] == + // [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` provides + // type information for the struct's fields. StructType struct_type = 3; - // The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that disambiguates SQL type that Spanner will - // use to represent values of this type during query processing. This is - // necessary for some type codes because a single [TypeCode][google.spanner.v1.TypeCode] can be mapped - // to different SQL types depending on the SQL dialect. [type_annotation][google.spanner.v1.Type.type_annotation] - // typically is not needed to process the content of a value (it doesn't - // affect serialization) and clients can ignore it on the read path. + // The [TypeAnnotationCode][google.spanner.v1.TypeAnnotationCode] that + // disambiguates SQL type that Spanner will use to represent values of this + // type during query processing. This is necessary for some type codes because + // a single [TypeCode][google.spanner.v1.TypeCode] can be mapped to different + // SQL types depending on the SQL dialect. + // [type_annotation][google.spanner.v1.Type.type_annotation] typically is not + // needed to process the content of a value (it doesn't affect serialization) + // and clients can ignore it on the read path. TypeAnnotationCode type_annotation = 4; // If [code][google.spanner.v1.Type.code] == @@ -56,7 +60,8 @@ message Type { string proto_type_fqn = 5; } -// `StructType` defines the fields of a [STRUCT][google.spanner.v1.TypeCode.STRUCT] type. +// `StructType` defines the fields of a +// [STRUCT][google.spanner.v1.TypeCode.STRUCT] type. message StructType { // Message representing a single field of a struct. message Field { @@ -76,9 +81,9 @@ message StructType { // The list of fields that make up this struct. Order is // significant, because values of this struct type are represented as // lists, where the order of field values matches the order of - // fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - // matches the order of columns in a read request, or the order of - // fields in the `SELECT` clause of a query. + // fields in the [StructType][google.spanner.v1.StructType]. In turn, the + // order of fields matches the order of columns in a read request, or the + // order of fields in the `SELECT` clause of a query. repeated Field fields = 1; } @@ -137,14 +142,14 @@ enum TypeCode { STRUCT = 9; // Encoded as `string`, in decimal format or scientific notation format. - //
Decimal format: - //
`[+-]Digits[.[Digits]]` or - //
`[+-][Digits].Digits` + // Decimal format: + // `[+-]Digits[.[Digits]]` or + // `[+-][Digits].Digits` // // Scientific notation: - //
`[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or - //
`[+-][Digits].Digits[ExponentIndicator[+-]Digits]` - //
(ExponentIndicator is `"e"` or `"E"`) + // `[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or + // `[+-][Digits].Digits[ExponentIndicator[+-]Digits]` + // (ExponentIndicator is `"e"` or `"E"`) NUMERIC = 10; // Encoded as a JSON-formatted `string` as described in RFC 7159. The @@ -163,6 +168,13 @@ enum TypeCode { // Encoded as `string`, in decimal format. ENUM = 14; + + // Encoded as `string`, in `ISO8601` duration format - + // `P[n]Y[n]M[n]DT[n]H[n]M[n[.fraction]]S` + // where `n` is an integer. + // For example, `P1Y2M3DT4H5M6.5S` represents time duration of 1 year, 2 + // months, 3 days, 4 hours, 5 minutes, and 6.5 seconds. + INTERVAL = 16; } // `TypeAnnotationCode` is used as a part of [Type][google.spanner.v1.Type] to @@ -175,19 +187,20 @@ enum TypeAnnotationCode { TYPE_ANNOTATION_CODE_UNSPECIFIED = 0; // PostgreSQL compatible NUMERIC type. This annotation needs to be applied to - // [Type][google.spanner.v1.Type] instances having [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] - // type code to specify that values of this type should be treated as - // PostgreSQL NUMERIC values. Currently this annotation is always needed for - // [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] when a client interacts with PostgreSQL-enabled - // Spanner databases. + // [Type][google.spanner.v1.Type] instances having + // [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] type code to specify that + // values of this type should be treated as PostgreSQL NUMERIC values. + // Currently this annotation is always needed for + // [NUMERIC][google.spanner.v1.TypeCode.NUMERIC] when a client interacts with + // PostgreSQL-enabled Spanner databases. PG_NUMERIC = 2; // PostgreSQL compatible JSONB type. This annotation needs to be applied to - // [Type][google.spanner.v1.Type] instances having [JSON][google.spanner.v1.TypeCode.JSON] - // type code to specify that values of this type should be treated as - // PostgreSQL JSONB values. Currently this annotation is always needed for - // [JSON][google.spanner.v1.TypeCode.JSON] when a client interacts with PostgreSQL-enabled - // Spanner databases. + // [Type][google.spanner.v1.Type] instances having + // [JSON][google.spanner.v1.TypeCode.JSON] type code to specify that values of + // this type should be treated as PostgreSQL JSONB values. Currently this + // annotation is always needed for [JSON][google.spanner.v1.TypeCode.JSON] + // when a client interacts with PostgreSQL-enabled Spanner databases. PG_JSONB = 3; // PostgreSQL compatible OID type. This annotation can be used by a client From 95dfc02ae2d65f99219dcced66cf4e74d1c4975b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:15:37 +0200 Subject: [PATCH 12/26] deps: update dependency io.opentelemetry:opentelemetry-bom to v1.42.1 (#3323) --- benchmarks/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 8766d2e2e86..ebb94522d0a 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -85,7 +85,7 @@ io.opentelemetry opentelemetry-bom - 1.41.0 + 1.42.1 pom import From 042c294cc5f83eebd2e3600cffb165e5b467d63e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:17:03 +0200 Subject: [PATCH 13/26] deps: update dependency ubuntu to v24 (#3356) --- .github/workflows/update_generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_generation_config.yaml b/.github/workflows/update_generation_config.yaml index 3cf77399264..f15c807853d 100644 --- a/.github/workflows/update_generation_config.yaml +++ b/.github/workflows/update_generation_config.yaml @@ -21,7 +21,7 @@ on: jobs: update-generation-config: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: # the branch into which the pull request is merged base_branch: main From 92410638b0ba88f8e89e28bd12dd58830f7aaeb3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:17:56 +0200 Subject: [PATCH 14/26] deps: update dependency com.google.api.grpc:proto-google-cloud-monitoring-v3 to v3.52.0 (#3291) --- google-cloud-spanner/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 5a9d58c6762..596ac14586a 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -270,7 +270,7 @@ com.google.api.grpc proto-google-cloud-monitoring-v3 - 3.48.0 + 3.52.0 com.google.auth From a269747889ea0b2380f07e1efef3b288a9c4fd04 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:19:32 +0200 Subject: [PATCH 15/26] deps: update dependency com.google.cloud:google-cloud-trace to v2.51.0 (#3294) --- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index e35bc1536a2..672e960ae34 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -23,7 +23,7 @@ 1.8 UTF-8 0.31.1 - 2.47.0 + 2.51.0 3.48.0
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index f4a8337bb13..33cbab0736c 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -23,7 +23,7 @@ 1.8 UTF-8 0.31.1 - 2.47.0 + 2.51.0 3.48.0
From 4fc3b7c992946c5ecd42feb43e042f03b1bba6de Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:45:35 +0200 Subject: [PATCH 16/26] build(deps): update dependency org.apache.maven.plugins:maven-failsafe-plugin to v3.5.0 (#3308) --- google-cloud-spanner-executor/pom.xml | 2 +- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index ec03201fb05..6bd31d1f44f 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -219,7 +219,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.4.0 + 3.5.0 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 672e960ae34..38a23f1491c 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -145,7 +145,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.4.0 + 3.5.0 java-client-integration-tests diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 33cbab0736c..f9abe7d4e29 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.4.0 + 3.5.0 java-client-integration-tests diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 518d8e1063d..60cabf8ddff 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.4.0 + 3.5.0 java-client-integration-tests From d71c87c0a6db6320ccdd8bf44712ad6a856202ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Wed, 2 Oct 2024 19:46:25 +0200 Subject: [PATCH 17/26] chore: turn off autosavepoints by default (#3303) Auto-savepoints are no longer needed when using Emulator v1.5.23 or higher, as that version introduced support for aborting the existing transaction. That solution is better than auto-savepoints, as auto-savepoints only work as long as all transactions come from the same JVM. --- .../spanner/connection/ConnectionImpl.java | 1 + .../spanner/connection/ConnectionOptions.java | 26 +++++++++++-- .../connection/ReadWriteTransaction.java | 16 ++++++-- .../ITEmulatorConcurrentTransactionsTest.java | 37 ++++++++++++++++--- 4 files changed, 67 insertions(+), 13 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java index e6edc6caacc..b481c67bb45 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionImpl.java @@ -1921,6 +1921,7 @@ UnitOfWork createNewUnitOfWork( .build(); case READ_WRITE_TRANSACTION: return ReadWriteTransaction.newBuilder() + .setUsesEmulator(options.usesEmulator()) .setUseAutoSavepointsForEmulator(options.useAutoSavepointsForEmulator()) .setDatabaseClient(dbClient) .setDelayTransactionStartUntilFirstWrite(delayTransactionStartUntilFirstWrite) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java index f08a9522ea8..7710a1dee58 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java @@ -37,6 +37,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Strings; +import com.google.common.base.Suppliers; import com.google.common.collect.Sets; import com.google.spanner.v1.ExecuteSqlRequest.QueryOptions; import io.opentelemetry.api.OpenTelemetry; @@ -382,6 +383,10 @@ private static String generateGuardedConnectionPropertyError( + "The instance and database in the connection string will automatically be created if these do not yet exist on the emulator. " + "Add dialect=postgresql to the connection string to make sure that the database that is created uses the PostgreSQL dialect.", false), + ConnectionProperty.createBooleanProperty( + "useAutoSavepointsForEmulator", + "Automatically creates savepoints for each statement in a read/write transaction when using the Emulator. This is no longer needed when using Emulator version 1.5.23 or higher.", + false), ConnectionProperty.createBooleanProperty( LENIENT_PROPERTY_NAME, "Silently ignore unknown properties in the connection string/properties (true/false)", @@ -740,6 +745,7 @@ public static Builder newBuilder() { private final boolean returnCommitStats; private final Long maxCommitDelay; private final boolean autoConfigEmulator; + private final boolean useAutoSavepointsForEmulator; private final Dialect dialect; private final RpcPriority rpcPriority; private final DdlInTransactionMode ddlInTransactionMode; @@ -801,6 +807,7 @@ private ConnectionOptions(Builder builder) { this.returnCommitStats = parseReturnCommitStats(this.uri); this.maxCommitDelay = parseMaxCommitDelay(this.uri); this.autoConfigEmulator = parseAutoConfigEmulator(this.uri); + this.useAutoSavepointsForEmulator = parseUseAutoSavepointsForEmulator(this.uri); this.dialect = parseDialect(this.uri); this.usePlainText = this.autoConfigEmulator || parseUsePlainText(this.uri); this.host = @@ -1170,6 +1177,11 @@ static boolean parseAutoConfigEmulator(String uri) { return Boolean.parseBoolean(value); } + static boolean parseUseAutoSavepointsForEmulator(String uri) { + String value = parseUriProperty(uri, "useAutoSavepointsForEmulator"); + return Boolean.parseBoolean(value); + } + @VisibleForTesting static Dialect parseDialect(String uri) { String value = parseUriProperty(uri, DIALECT_PROPERTY_NAME); @@ -1535,6 +1547,14 @@ public Duration getMaxCommitDelay() { return maxCommitDelay == null ? null : Duration.ofMillis(maxCommitDelay); } + boolean usesEmulator() { + return Suppliers.memoize( + () -> + this.autoConfigEmulator + || !Strings.isNullOrEmpty(System.getenv("SPANNER_EMULATOR_HOST"))) + .get(); + } + /** * Whether connections created by this {@link ConnectionOptions} will automatically try to connect * to the emulator using the default host/port of the emulator, and automatically create the @@ -1548,11 +1568,11 @@ public boolean isAutoConfigEmulator() { /** * Returns true if a connection should generate auto-savepoints for retrying transactions on the * emulator. This allows some more concurrent transactions on the emulator. + * + *

This is no longer needed since version 1.5.23 of the emulator. */ boolean useAutoSavepointsForEmulator() { - // For now, this option is directly linked to the option autoConfigEmulator=true, which is the - // recommended way to configure the emulator for the Connection API. - return autoConfigEmulator; + return useAutoSavepointsForEmulator; } public Dialect getDialect() { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java index 0362ffc2050..4c4e7b8e00a 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java @@ -121,6 +121,8 @@ class ReadWriteTransaction extends AbstractMultiUseTransaction { */ private static final String AUTO_SAVEPOINT_NAME = "_auto_savepoint"; + private final boolean usesEmulator; + /** * Indicates whether an automatic savepoint should be generated after each statement, so the * transaction can be manually aborted and retried by the Connection API when connected to the @@ -191,6 +193,7 @@ public void onSuccess(V result) { } static class Builder extends AbstractMultiUseTransaction.Builder { + private boolean usesEmulator; private boolean useAutoSavepointsForEmulator; private DatabaseClient dbClient; private Boolean retryAbortsInternally; @@ -203,6 +206,11 @@ static class Builder extends AbstractMultiUseTransaction.Builder> futures = new ArrayList<>(numThreads); for (int thread = 0; thread < numThreads; thread++) { - executor.submit(() -> runRandomTransactions(numRowsInserted)); + futures.add(executor.submit(() -> runRandomTransactions(numRowsInserted))); } executor.shutdown(); assertTrue(executor.awaitTermination(60L, TimeUnit.SECONDS)); + // Get the results of each transaction so the test case fails with a logical error message if + // any of the transactions failed. + for (Future future : futures) { + assertNull(future.get()); + } verifyRowCount(numRowsInserted.get()); } @@ -141,7 +160,7 @@ private void runRandomTransactions(AtomicInteger numRowsInserted) { while (!connections.isEmpty()) { int index = ThreadLocalRandom.current().nextInt(connections.size()); Connection connection = connections.get(index); - if (ThreadLocalRandom.current().nextInt(10) < 3) { + if (ThreadLocalRandom.current().nextInt(10) < 5) { connection.commit(); connection.close(); assertEquals(connection, connections.remove(index)); @@ -155,6 +174,12 @@ private void runRandomTransactions(AtomicInteger numRowsInserted) { .build())); numRowsInserted.incrementAndGet(); } + try { + // Make sure to have a small wait between statements. + Thread.sleep(ThreadLocalRandom.current().nextInt(1, 5)); + } catch (InterruptedException interruptedException) { + throw SpannerExceptionFactory.propagateInterrupt(interruptedException); + } } } finally { for (Connection connection : connections) { From da27a1992e40b1b4591f0232f687d8031387e749 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:55:01 +0200 Subject: [PATCH 18/26] deps: update dependency com.google.cloud:google-cloud-monitoring to v3.52.0 (#3292) --- google-cloud-spanner/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 596ac14586a..7253b2d946e 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -265,7 +265,7 @@ com.google.cloud google-cloud-monitoring - 3.48.0 + 3.52.0 com.google.api.grpc From c6dbdb255eb4cd231a2dc7cef94bf3353fa7e837 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 19:55:22 +0200 Subject: [PATCH 19/26] deps: update dependency com.google.cloud:google-cloud-monitoring to v3.52.0 (#3293) --- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 38a23f1491c..5f756ca1134 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -24,7 +24,7 @@ UTF-8 0.31.1 2.51.0 - 3.48.0 + 3.52.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index f9abe7d4e29..2240ad6b50f 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -24,7 +24,7 @@ UTF-8 0.31.1 2.51.0 - 3.48.0 + 3.52.0 From 3b3f6dea149e8d9b5db601f3fc4c9fdf1327b943 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 20:18:23 +0200 Subject: [PATCH 20/26] build(deps): update dependency org.apache.maven.plugins:maven-project-info-reports-plugin to v3.7.0 (#3297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [org.apache.maven.plugins:maven-project-info-reports-plugin](https://maven.apache.org/plugins/) | `3.6.2` -> `3.7.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.maven.plugins:maven-project-info-reports-plugin/3.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.apache.maven.plugins:maven-project-info-reports-plugin/3.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.apache.maven.plugins:maven-project-info-reports-plugin/3.6.2/3.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.maven.plugins:maven-project-info-reports-plugin/3.6.2/3.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-spanner). --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0a29b9a22aa..3fa4e5853bd 100644 --- a/pom.xml +++ b/pom.xml @@ -171,7 +171,7 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.6.2 + 3.7.0 From 5f94915941c4e4132f8460a04dde0643fa63ab99 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 20:18:46 +0200 Subject: [PATCH 21/26] deps: update junixsocket.version to v2.10.1 (#3367) --- benchmarks/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index ebb94522d0a..e7d82fecaa6 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -33,7 +33,7 @@ 1.8 UTF-8 UTF-8 - 2.10.0 + 2.10.1 1.42.1 From aa9a71d38dabd8d1974bb553761e93735ade5c26 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 21:02:13 +0200 Subject: [PATCH 22/26] deps: update dependency com.google.cloud.opentelemetry:exporter-trace to v0.32.0 (#3372) --- benchmarks/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index e7d82fecaa6..7d4a604d3ce 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -49,7 +49,7 @@ com.google.cloud.opentelemetry exporter-trace - 0.31.0 + 0.32.0 com.google.cloud.opentelemetry From d5b5ca0cccc6cf73d759245d2bd72f33c7d39830 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 21:03:17 +0200 Subject: [PATCH 23/26] deps: update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.32.0 (#3371) --- benchmarks/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 7d4a604d3ce..d97be0bd3f8 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -54,7 +54,7 @@ com.google.cloud.opentelemetry exporter-metrics - 0.31.0 + 0.32.0 From e92ec41853b41376ed5a8a028d39d5b47d8e0ab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Wed, 2 Oct 2024 21:03:56 +0200 Subject: [PATCH 24/26] chore: increase retry limit on emulator (#3373) --- .../google/cloud/spanner/connection/ReadWriteTransaction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java index 4c4e7b8e00a..d047857d6ad 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ReadWriteTransaction.java @@ -284,7 +284,7 @@ private ReadWriteTransaction(Builder builder) { // emulator is fast, so increasing the limit is reasonable. this.maxInternalRetries = builder.usesEmulator && builder.retryAbortsInternally - ? DEFAULT_MAX_INTERNAL_RETRIES * 10 + ? DEFAULT_MAX_INTERNAL_RETRIES * 50 : DEFAULT_MAX_INTERNAL_RETRIES; this.dbClient = builder.dbClient; this.delayTransactionStartUntilFirstWrite = builder.delayTransactionStartUntilFirstWrite; From 023ce067b3cb7744ef0eae203295c6415deb4abc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 2 Oct 2024 21:04:54 +0200 Subject: [PATCH 25/26] chore(deps): update dependency com.google.cloud:google-cloud-spanner to v6.76.0 (#3370) --- benchmarks/pom.xml | 2 +- samples/install-without-bom/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index d97be0bd3f8..29294e91b50 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -92,7 +92,7 @@ com.google.cloud google-cloud-spanner - 6.75.0 + 6.76.0 commons-cli diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 5f756ca1134..44dc66baaed 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -33,7 +33,7 @@ com.google.cloud google-cloud-spanner - 6.75.0 + 6.76.0 From 5dcaf7fa8b67c84c4d451556af49346bf8e9257d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 21:19:10 +0200 Subject: [PATCH 26/26] chore(main): release 6.77.0 (#3364) * chore(main): release 6.77.0 * chore: generate libraries at Wed Oct 2 19:04:07 UTC 2024 --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: cloud-java-bot --- CHANGELOG.md | 29 +++++++++++++++++++ README.md | 6 ++-- benchmarks/pom.xml | 2 +- google-cloud-spanner-bom/pom.xml | 18 ++++++------ google-cloud-spanner-executor/pom.xml | 4 +-- google-cloud-spanner/pom.xml | 4 +-- .../pom.xml | 4 +-- .../pom.xml | 4 +-- grpc-google-cloud-spanner-executor-v1/pom.xml | 4 +-- grpc-google-cloud-spanner-v1/pom.xml | 4 +-- pom.xml | 20 ++++++------- .../pom.xml | 4 +-- .../pom.xml | 4 +-- .../pom.xml | 4 +-- proto-google-cloud-spanner-v1/pom.xml | 4 +-- samples/snapshot/pom.xml | 2 +- versions.txt | 20 ++++++------- 17 files changed, 83 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbbd61c02d4..9de3cd28feb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## [6.77.0](https://github.com/googleapis/java-spanner/compare/v6.76.0...v6.77.0) (2024-10-02) + + +### Features + +* Add INTERVAL API ([c078ac3](https://github.com/googleapis/java-spanner/commit/c078ac34c3d14b13bbd4a507de4f0013975dca4e)) + + +### Dependencies + +* Update dependency com.google.api.grpc:proto-google-cloud-monitoring-v3 to v3.52.0 ([#3291](https://github.com/googleapis/java-spanner/issues/3291)) ([9241063](https://github.com/googleapis/java-spanner/commit/92410638b0ba88f8e89e28bd12dd58830f7aaeb3)) +* Update dependency com.google.cloud:google-cloud-monitoring to v3.52.0 ([#3292](https://github.com/googleapis/java-spanner/issues/3292)) ([da27a19](https://github.com/googleapis/java-spanner/commit/da27a1992e40b1b4591f0232f687d8031387e749)) +* Update dependency com.google.cloud:google-cloud-monitoring to v3.52.0 ([#3293](https://github.com/googleapis/java-spanner/issues/3293)) ([c6dbdb2](https://github.com/googleapis/java-spanner/commit/c6dbdb255eb4cd231a2dc7cef94bf3353fa7e837)) +* Update dependency com.google.cloud:google-cloud-trace to v2.51.0 ([#3294](https://github.com/googleapis/java-spanner/issues/3294)) ([a269747](https://github.com/googleapis/java-spanner/commit/a269747889ea0b2380f07e1efef3b288a9c4fd04)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.36.1 ([#3355](https://github.com/googleapis/java-spanner/issues/3355)) ([5191e71](https://github.com/googleapis/java-spanner/commit/5191e71a83a316b41564ce2604980c8f33135f2f)) +* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.32.0 ([#3371](https://github.com/googleapis/java-spanner/issues/3371)) ([d5b5ca0](https://github.com/googleapis/java-spanner/commit/d5b5ca0cccc6cf73d759245d2bd72f33c7d39830)) +* Update dependency com.google.cloud.opentelemetry:exporter-trace to v0.32.0 ([#3372](https://github.com/googleapis/java-spanner/issues/3372)) ([aa9a71d](https://github.com/googleapis/java-spanner/commit/aa9a71d38dabd8d1974bb553761e93735ade5c26)) +* Update dependency commons-io:commons-io to v2.17.0 ([#3349](https://github.com/googleapis/java-spanner/issues/3349)) ([7c21164](https://github.com/googleapis/java-spanner/commit/7c21164f2b8e75afab268f2fb8e132a372ac0d67)) +* Update dependency io.opentelemetry:opentelemetry-bom to v1.42.1 ([#3323](https://github.com/googleapis/java-spanner/issues/3323)) ([95dfc02](https://github.com/googleapis/java-spanner/commit/95dfc02ae2d65f99219dcced66cf4e74d1c4975b)) +* Update dependency ubuntu to v24 ([#3356](https://github.com/googleapis/java-spanner/issues/3356)) ([042c294](https://github.com/googleapis/java-spanner/commit/042c294cc5f83eebd2e3600cffb165e5b467d63e)) +* Update googleapis/sdk-platform-java action to v2.46.1 ([#3354](https://github.com/googleapis/java-spanner/issues/3354)) ([378f5cf](https://github.com/googleapis/java-spanner/commit/378f5cfb08d4e5ee80b21007bfc829de61bfbdbe)) +* Update junixsocket.version to v2.10.1 ([#3367](https://github.com/googleapis/java-spanner/issues/3367)) ([5f94915](https://github.com/googleapis/java-spanner/commit/5f94915941c4e4132f8460a04dde0643fa63ab99)) +* Update opentelemetry.version to v1.42.1 ([#3330](https://github.com/googleapis/java-spanner/issues/3330)) ([7b05e43](https://github.com/googleapis/java-spanner/commit/7b05e4301953364617691e8ae225cea823e3a323)) + + +### Documentation + +* Update comment for PROFILE QueryMode ([c078ac3](https://github.com/googleapis/java-spanner/commit/c078ac34c3d14b13bbd4a507de4f0013975dca4e)) + ## [6.76.0](https://github.com/googleapis/java-spanner/compare/v6.75.0...v6.76.0) (2024-09-27) diff --git a/README.md b/README.md index bbf2267b992..7a1251441ea 100644 --- a/README.md +++ b/README.md @@ -57,13 +57,13 @@ 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.76.0' +implementation 'com.google.cloud:google-cloud-spanner:6.77.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.76.0" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.77.0" ``` @@ -721,7 +721,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.76.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.77.0 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 29294e91b50..67970f447ed 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -24,7 +24,7 @@ com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 364588d6d72..633388fe2a1 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner-bom - 6.76.1-SNAPSHOT + 6.77.0 pom com.google.cloud @@ -53,43 +53,43 @@ com.google.cloud google-cloud-spanner - 6.76.1-SNAPSHOT + 6.77.0 com.google.cloud google-cloud-spanner test-jar - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 6bd31d1f44f..45da3f1eaf7 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.76.1-SNAPSHOT + 6.77.0 jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 7253b2d946e..8a3cfda56cc 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.76.1-SNAPSHOT + 6.77.0 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 google-cloud-spanner diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index 6a5dcc5dbd9..07aac5c78fd 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.76.1-SNAPSHOT + 6.77.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.76.1-SNAPSHOT + 6.77.0 diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index e0cef7b13e5..d584ee9b99e 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.76.1-SNAPSHOT + 6.77.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.76.1-SNAPSHOT + 6.77.0 diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml index 69be1c590dc..29f01e99b3c 100644 --- a/grpc-google-cloud-spanner-executor-v1/pom.xml +++ b/grpc-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.76.1-SNAPSHOT + 6.77.0 grpc-google-cloud-spanner-executor-v1 GRPC library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 045c86b815c..b2c01526786 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.76.1-SNAPSHOT + 6.77.0 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/pom.xml b/pom.xml index 3fa4e5853bd..e97b6bc7913 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.76.1-SNAPSHOT + 6.77.0 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -61,47 +61,47 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.76.1-SNAPSHOT + 6.77.0 com.google.cloud google-cloud-spanner - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 0f9186a007d..b4b1da0eb43 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.76.1-SNAPSHOT + 6.77.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.76.1-SNAPSHOT + 6.77.0 diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index 04117a21bde..befb5023442 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.76.1-SNAPSHOT + 6.77.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.76.1-SNAPSHOT + 6.77.0 diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml index 1d798448799..34d3c324862 100644 --- a/proto-google-cloud-spanner-executor-v1/pom.xml +++ b/proto-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.76.1-SNAPSHOT + 6.77.0 proto-google-cloud-spanner-executor-v1 Proto library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 71c681e9681..ca891107c9e 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.76.1-SNAPSHOT + 6.77.0 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 2240ad6b50f..9a0ad159689 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.76.1-SNAPSHOT + 6.77.0 diff --git a/versions.txt b/versions.txt index ab6b29a7162..a62c699832a 100644 --- a/versions.txt +++ b/versions.txt @@ -1,13 +1,13 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.76.0:6.76.1-SNAPSHOT -proto-google-cloud-spanner-v1:6.76.0:6.76.1-SNAPSHOT -proto-google-cloud-spanner-admin-database-v1:6.76.0:6.76.1-SNAPSHOT -grpc-google-cloud-spanner-v1:6.76.0:6.76.1-SNAPSHOT -grpc-google-cloud-spanner-admin-instance-v1:6.76.0:6.76.1-SNAPSHOT -grpc-google-cloud-spanner-admin-database-v1:6.76.0:6.76.1-SNAPSHOT -google-cloud-spanner:6.76.0:6.76.1-SNAPSHOT -google-cloud-spanner-executor:6.76.0:6.76.1-SNAPSHOT -proto-google-cloud-spanner-executor-v1:6.76.0:6.76.1-SNAPSHOT -grpc-google-cloud-spanner-executor-v1:6.76.0:6.76.1-SNAPSHOT +proto-google-cloud-spanner-admin-instance-v1:6.77.0:6.77.0 +proto-google-cloud-spanner-v1:6.77.0:6.77.0 +proto-google-cloud-spanner-admin-database-v1:6.77.0:6.77.0 +grpc-google-cloud-spanner-v1:6.77.0:6.77.0 +grpc-google-cloud-spanner-admin-instance-v1:6.77.0:6.77.0 +grpc-google-cloud-spanner-admin-database-v1:6.77.0:6.77.0 +google-cloud-spanner:6.77.0:6.77.0 +google-cloud-spanner-executor:6.77.0:6.77.0 +proto-google-cloud-spanner-executor-v1:6.77.0:6.77.0 +grpc-google-cloud-spanner-executor-v1:6.77.0:6.77.0