From d2134dbb19b957989a6fd857ef685eae259a3c09 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 26 Jun 2025 14:35:45 -0400 Subject: [PATCH 1/3] chore: Test with Protobuf-Java v4.29.4 --- .kokoro/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.kokoro/build.sh b/.kokoro/build.sh index 2f2743a3ea..1fc64da433 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -62,6 +62,7 @@ javadoc) integration) mvn -B ${INTEGRATION_TEST_ARGS} \ -Penable-integration-tests \ + -Dprotobuf.version=4.29.4 \ -DtrimStackTrace=false \ -Dclirr.skip=true \ -Denforcer.skip=true \ From b0f6e9b48aa4e1150f84235b7514b9c8a3469001 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 10 Sep 2025 17:21:14 -0400 Subject: [PATCH 2/3] Revert "chore: generate libraries at Wed Sep 10 03:07:46 UTC 2025" This reverts commit 1f5cdcdcd5fcd9766f5440e45322e54cca532030. --- .../bigquery/storage/v1/AppendFormats.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java new file mode 100644 index 0000000000..58bda0bae7 --- /dev/null +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java @@ -0,0 +1,83 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.bigquery.storage.v1; + +import com.google.auto.value.AutoValue; +import javax.annotation.Nullable; + +/** Adapter class for data formats used in the AppendRows. */ +final class AppendFormats { + /** Enum for the data format used in the AppendRows. */ + enum DataFormat { + UNKNOWN, + PROTO, + ARROW + } + + /** Container class for the schema used in the AppendRows request. */ + @AutoValue + abstract static class AppendRowsSchema { + abstract DataFormat format(); + + @Nullable + abstract ProtoSchema protoSchema(); + + @Nullable + abstract ArrowSchema arrowSchema(); + + static AppendRowsSchema of(ProtoSchema protoSchema) { + return new AutoValue_AppendFormats_AppendRowsSchema( + DataFormat.PROTO, protoSchema, /* arrowSchema= */ null); + } + + static AppendRowsSchema of(ArrowSchema arrowSchema) { + return new AutoValue_AppendFormats_AppendRowsSchema( + DataFormat.ARROW, /* protoSchema= */ null, arrowSchema); + } + } + + /** Container class for the data used in the AppendRows request. */ + @AutoValue + abstract static class AppendRowsData { + abstract DataFormat format(); + + @Nullable + abstract ProtoRows protoRows(); + + @Nullable + abstract ArrowRecordBatch arrowRecordBatch(); + + // Row count for arrowRecordBatch. It is defaulted to -1 of not set. + abstract long recordBatchRowCount(); + + static AppendRowsData of(ProtoRows protoRows) { + return new AutoValue_AppendFormats_AppendRowsData( + DataFormat.PROTO, protoRows, /* arrowRecordBatch= */ null, /* recordBatchRowCount= */ -1); + } + + static AppendRowsData of(ArrowRecordBatch arrowRecordBatch) { + return new AutoValue_AppendFormats_AppendRowsData( + DataFormat.ARROW, /* protoRows= */ null, arrowRecordBatch, /* recordBatchRowCount= */ -1); + } + + static AppendRowsData of(ArrowRecordBatch arrowRecordBatch, long recordBatchRowCount) { + return new AutoValue_AppendFormats_AppendRowsData( + DataFormat.ARROW, /* protoRows= */ null, arrowRecordBatch, recordBatchRowCount); + } + } + + private AppendFormats() {} +} From f0980ab7958f0fc0e56ab8aa29abee76da240229 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 10 Sep 2025 17:22:07 -0400 Subject: [PATCH 3/3] chore: Disable hermetic build generation --- .../hermetic_library_generation.yaml | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 7838b82ee3..52a60ed5f4 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -1,45 +1,45 @@ -# Copyright 2024 Google LLC +## Copyright 2024 Google LLC +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## GitHub action job to test core java library features on +## downstream client libraries before they are released. +#name: Hermetic library generation upon generation config change through pull requests +#on: +# pull_request: # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# GitHub action job to test core java library features on -# downstream client libraries before they are released. -name: Hermetic library generation upon generation config change through pull requests -on: - pull_request: - -env: - 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 }} - - uses: googleapis/sdk-platform-java/.github/scripts@v2.60.0 - if: env.SHOULD_RUN == 'true' - with: - base_ref: ${{ github.base_ref }} - head_ref: ${{ github.head_ref }} - token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} +#env: +# 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 }} +# - uses: googleapis/sdk-platform-java/.github/scripts@v2.60.0 +# if: env.SHOULD_RUN == 'true' +# with: +# base_ref: ${{ github.base_ref }} +# head_ref: ${{ github.head_ref }} +# token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }}