diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index eb74930dec50..bc150446d620 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -7,3 +7,4 @@
# java-vertexai has maintainers
/java-vertexai/ @googleapis/vertex-java-sdk @googleapis/cloud-java-team-teamsync
+/java-bigquerystorage/ @googleapis/yoshi-java @googleapis/api-bigquery @googleapis/cloud-java-team-teamsync
diff --git a/.github/workflows/java-bigquerystorage-ci.yaml b/.github/workflows/java-bigquerystorage-ci.yaml
new file mode 100644
index 000000000000..1bf64bb7b55f
--- /dev/null
+++ b/.github/workflows/java-bigquerystorage-ci.yaml
@@ -0,0 +1,125 @@
+on:
+ push:
+ paths-ignore:
+ - 'tutorials/**'
+ branches:
+ - main
+ pull_request:
+name: java-bigquerystorage ci
+env:
+ BUILD_SUBDIR: java-bigquerystorage
+jobs:
+ filter:
+ runs-on: ubuntu-latest
+ outputs:
+ library: ${{ steps.filter.outputs.library }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: dorny/paths-filter@v3
+ id: filter
+ with:
+ filters: |
+ library:
+ - 'java-bigquerystorage/**'
+ units:
+ needs: filter
+ if: ${{ needs.filter.outputs.library == 'true' }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ java: [11, 17, 21, 25]
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ - uses: actions/setup-java@v2
+ with:
+ distribution: temurin
+ java-version: ${{matrix.java}}
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: test
+ units-java8:
+ needs: filter
+ if: ${{ needs.filter.outputs.library == 'true' }}
+ # Building using Java 17 and run the tests with Java 8 runtime
+ name: "units (8)"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ - uses: actions/setup-java@v3
+ with:
+ java-version: 8
+ distribution: zulu
+ - name: "Set jvm system property environment variable for surefire plugin (unit tests)"
+ # Maven surefire plugin (unit tests) allows us to specify JVM to run the tests.
+ # https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#jvm
+ run: echo "SUREFIRE_JVM_OPT=-Djvm=${JAVA_HOME}/bin/java -P !java17" >> $GITHUB_ENV
+ shell: bash
+ - uses: actions/setup-java@v3
+ with:
+ java-version: 17
+ distribution: zulu
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: test
+ windows:
+ needs: filter
+ if: ${{ needs.filter.outputs.library == 'true' }}
+ runs-on: windows-latest
+ steps:
+ - name: Support longpaths
+ run: git config --system core.longpaths true
+ working-directory: .
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ - uses: actions/setup-java@v2
+ with:
+ distribution: temurin
+ java-version: 8
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: test
+ dependencies:
+ needs: filter
+ if: ${{ needs.filter.outputs.library == 'true' }}
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [17]
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ - uses: actions/setup-java@v2
+ with:
+ distribution: temurin
+ java-version: ${{matrix.java}}
+ - run: java -version
+ - run: .kokoro/dependencies.sh
+ javadoc:
+ needs: filter
+ if: ${{ needs.filter.outputs.library == 'true' }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: 17
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: javadoc
+ lint:
+ needs: filter
+ if: ${{ needs.filter.outputs.library == 'true' }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ - uses: actions/setup-java@v2
+ with:
+ distribution: temurin
+ java-version: 17
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: lint
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index e604c8768b86..fcc004083ca3 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -35,8 +35,15 @@ fi
RETURN_CODE=0
+if [[ -n "${BUILD_SUBDIR}" ]]
+then
+ echo "Running in subdir: ${BUILD_SUBDIR}"
+ pushd "${BUILD_SUBDIR}"
+fi
+
case ${JOB_TYPE} in
test)
+ echo "SUREFIRE_JVM_OPT: ${SUREFIRE_JVM_OPT}"
retry_with_backoff 3 10 \
mvn test \
-B -ntp \
@@ -48,7 +55,7 @@ case ${JOB_TYPE} in
-Dflatten.skip=true \
-Danimal.sniffer.skip=true \
-Dmaven.wagon.http.retryHandler.count=5 \
- -T 1C
+ -T 1C ${SUREFIRE_JVM_OPT}
RETURN_CODE=$?
echo "Finished running unit tests"
;;
@@ -125,6 +132,12 @@ case ${JOB_TYPE} in
esac
+if [[ -n "${BUILD_SUBDIR}" ]]
+then
+ echo "Running in subdir: ${BUILD_SUBDIR}"
+ popd
+fi
+
if [ "${REPORT_COVERAGE}" == "true" ]; then
bash ${KOKORO_GFILE_DIR}/codecov.sh
fi
diff --git a/.kokoro/dependencies.sh b/.kokoro/dependencies.sh
index bd8960246f66..6b9dedd2c3c2 100755
--- a/.kokoro/dependencies.sh
+++ b/.kokoro/dependencies.sh
@@ -49,6 +49,12 @@ function determineMavenOpts() {
export MAVEN_OPTS=$(determineMavenOpts)
+if [[ -n "${BUILD_SUBDIR}" ]]
+then
+ echo "Running in subdir: ${BUILD_SUBDIR}"
+ pushd "${BUILD_SUBDIR}"
+fi
+
# this should run maven enforcer
retry_with_backoff 3 10 \
mvn install -B -V -ntp \
@@ -57,3 +63,9 @@ retry_with_backoff 3 10 \
-Dclirr.skip=true
mvn -B dependency:analyze -DfailOnWarning=true
+
+if [[ -n "${BUILD_SUBDIR}" ]]
+then
+ echo "Leaving subdir: ${BUILD_SUBDIR}"
+ popd
+fi
\ No newline at end of file
diff --git a/gapic-libraries-bom/pom.xml b/gapic-libraries-bom/pom.xml
index e7b3efd5a591..9befde80d91a 100644
--- a/gapic-libraries-bom/pom.xml
+++ b/gapic-libraries-bom/pom.xml
@@ -266,6 +266,13 @@
pomimport
+
+ com.google.cloud
+ google-cloud-bigquerystorage-bom
+ 3.19.1
+ pom
+ import
+ com.google.cloudgoogle-cloud-billing-bom
diff --git a/generation/check_non_release_please_versions.sh b/generation/check_non_release_please_versions.sh
index bb7e2f0e88e0..56db7e7107df 100755
--- a/generation/check_non_release_please_versions.sh
+++ b/generation/check_non_release_please_versions.sh
@@ -20,6 +20,11 @@ for pomFile in $(find . -mindepth 2 -name pom.xml | sort ); do
continue
fi
+ if [[ "${pomFile}" =~ .*/samples/.* ]]; then
+ echo "Skipping version check for samples directory"
+ continue
+ fi
+
if grep -n '.*' "$pomFile" | grep -v 'x-version-update'; then
echo "Found version declaration(s) without x-version-update in: $pomFile"
violations=$((violations + 1))
diff --git a/generation_config.yaml b/generation_config.yaml
index 76a9c95606a8..e8431486189d 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -1,10 +1,6 @@
gapic_generator_version: 2.65.1
googleapis_commitish: 415914bd49d41beaae8a9adb348ee2587c93aa70
libraries_bom_version: 26.73.0
-
-# the libraries are ordered with respect to library name, which is
-# java-{library.library_name} or java-{library.api-shortname} when
-# library.library_name is not defined.
libraries:
- api_shortname: accessapproval
name_pretty: Access Approval
@@ -14,7 +10,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/accessapproval/v1
-
- api_shortname: accesscontextmanager
name_pretty: Identity Access Context Manager
product_documentation: n/a
@@ -24,7 +19,6 @@ libraries:
GAPICs:
- proto_path: google/identity/accesscontextmanager/v1
- proto_path: google/identity/accesscontextmanager/type
-
- api_shortname: admanager
name_pretty: Google Ad Manager API
product_documentation: https://developers.google.com/ad-manager/api/beta
@@ -40,7 +34,6 @@ libraries:
GAPICs:
- proto_path: google/ads/admanager/v1
requires_billing: true
-
- api_shortname: advisorynotifications
name_pretty: Advisory Notifications API
product_documentation: https://cloud.google.com/advisory-notifications/
@@ -48,7 +41,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/advisorynotifications/v1
-
- api_shortname: aiplatform
name_pretty: Vertex AI
product_documentation: https://cloud.google.com/vertex-ai/docs
@@ -61,7 +53,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/aiplatform/v1
- proto_path: google/cloud/aiplatform/v1beta1
-
- api_shortname: alloydb
name_pretty: AlloyDB
product_documentation: https://cloud.google.com/alloydb/
@@ -73,7 +64,6 @@ libraries:
- proto_path: google/cloud/alloydb/v1
- proto_path: google/cloud/alloydb/v1alpha
- proto_path: google/cloud/alloydb/v1beta
-
- api_shortname: alloydb
name_pretty: AlloyDB connectors
product_documentation: https://cloud.google.com/alloydb/docs
@@ -88,7 +78,6 @@ libraries:
- proto_path: google/cloud/alloydb/connectors/v1
- proto_path: google/cloud/alloydb/connectors/v1alpha
- proto_path: google/cloud/alloydb/connectors/v1beta
-
- api_shortname: analyticsadmin
name_pretty: Analytics Admin
product_documentation: https://developers.google.com/analytics
@@ -100,7 +89,6 @@ libraries:
GAPICs:
- proto_path: google/analytics/admin/v1alpha
- proto_path: google/analytics/admin/v1beta
-
- api_shortname: analyticsdata
name_pretty: Analytics Data
product_documentation: https://developers.google.com/analytics/trusted-testing/analytics-data
@@ -114,7 +102,6 @@ libraries:
GAPICs:
- proto_path: google/analytics/data/v1alpha
- proto_path: google/analytics/data/v1beta
-
- api_shortname: analyticshub
name_pretty: Analytics Hub API
product_documentation: https://cloud.google.com/bigquery/TBD
@@ -122,7 +109,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/bigquery/analyticshub/v1
-
- api_shortname: apigateway
name_pretty: API Gateway
product_documentation: https://cloud.google.com/api-gateway/docs
@@ -137,7 +123,6 @@ libraries:
rest_documentation: https://cloud.google.com/api-gateway/docs/reference/rest
GAPICs:
- proto_path: google/cloud/apigateway/v1
-
- api_shortname: apigeeconnect
name_pretty: Apigee Connect
product_documentation: https://cloud.google.com/apigee/docs/hybrid/v1.3/apigee-connect/
@@ -148,7 +133,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/apigeeconnect/v1
-
- api_shortname: apigee-registry
name_pretty: Registry API
product_documentation: https://cloud.google.com/apigee/docs/api-hub/get-started-registry-api
@@ -157,7 +141,6 @@ libraries:
api_id: apigeeregistry.googleapis.com
GAPICs:
- proto_path: google/cloud/apigeeregistry/v1
-
- api_shortname: apihub
name_pretty: API hub API
product_documentation: https://cloud.google.com/apigee/docs/apihub/what-is-api-hub
@@ -183,7 +166,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/api/apikeys/v2
-
- api_shortname: appengine
name_pretty: App Engine Admin API
product_documentation: https://cloud.google.com/appengine/docs/admin-api/
@@ -193,7 +175,6 @@ libraries:
codeowner_team: '@googleapis/aap-dpes'
GAPICs:
- proto_path: google/appengine/v1
-
- api_shortname: apphub
name_pretty: App Hub API
product_documentation: https://cloud.google.com/app-hub/docs/overview
@@ -202,7 +183,6 @@ libraries:
rpc_documentation: https://cloud.google.com/app-hub/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/apphub/v1
-
- api_shortname: area120tables
name_pretty: Area 120 Tables
product_documentation: https://area120.google.com/
@@ -212,7 +192,6 @@ libraries:
distribution_name: com.google.area120:google-area120-tables
GAPICs:
- proto_path: google/area120/tables/v1alpha1
-
- api_shortname: artifactregistry
name_pretty: Artifact Registry
product_documentation: https://cloud.google.com/artifact-registry
@@ -229,7 +208,6 @@ libraries:
GAPICs:
- proto_path: google/devtools/artifactregistry/v1
- proto_path: google/devtools/artifactregistry/v1beta2
-
- api_shortname: cloudasset
name_pretty: Cloud Asset Inventory
product_documentation: https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview
@@ -247,7 +225,6 @@ libraries:
- proto_path: google/cloud/asset/v1p2beta1
- proto_path: google/cloud/asset/v1p5beta1
- proto_path: google/cloud/asset/v1p7beta1
-
- api_shortname: assuredworkloads
name_pretty: Assured Workloads for Government
product_documentation: https://cloud.google.com/assured-workloads/
@@ -260,7 +237,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/assuredworkloads/v1
- proto_path: google/cloud/assuredworkloads/v1beta1
-
- api_shortname: automl
name_pretty: Cloud Auto ML
product_documentation: https://cloud.google.com/automl/docs/
@@ -276,14 +252,12 @@ libraries:
GAPICs:
- proto_path: google/cloud/automl/v1
- proto_path: google/cloud/automl/v1beta1
-
- api_shortname: backupdr
name_pretty: Backup and DR Service API
product_documentation: https://cloud.google.com/backup-disaster-recovery/docs/concepts/backup-dr
api_description: 'Backup and DR Service is a powerful, centralized, cloud-first
backup and disaster recovery solution for cloud-based and hybrid workloads. '
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-backupdr/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-backupdr/latest/overview
release_level: stable
distribution_name: com.google.cloud:google-cloud-backupdr
api_id: backupdr.googleapis.com
@@ -303,7 +277,6 @@ libraries:
rpc_documentation: https://cloud.google.com/bare-metal/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/baremetalsolution/v2
-
- api_shortname: batch
name_pretty: Cloud Batch
product_documentation: https://cloud.google.com/
@@ -311,7 +284,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/batch/v1
- proto_path: google/cloud/batch/v1alpha
-
- api_shortname: beyondcorp-appconnections
name_pretty: BeyondCorp AppConnections
product_documentation: https://cloud.google.com/beyondcorp-enterprise/
@@ -322,7 +294,6 @@ libraries:
need for a traditional VPN.
GAPICs:
- proto_path: google/cloud/beyondcorp/appconnections/v1
-
- api_shortname: beyondcorp-appconnectors
name_pretty: BeyondCorp AppConnectors
product_documentation: cloud.google.com/beyondcorp-enterprise/
@@ -330,7 +301,6 @@ libraries:
AppConnectors.
GAPICs:
- proto_path: google/cloud/beyondcorp/appconnectors/v1
-
- api_shortname: beyondcorp-appgateways
name_pretty: BeyondCorp AppGateways
product_documentation: https://cloud.google.com/beyondcorp-enterprise/
@@ -339,7 +309,6 @@ libraries:
api_id: beyondcorp.googleapis.com
GAPICs:
- proto_path: google/cloud/beyondcorp/appgateways/v1
-
- api_shortname: beyondcorp-clientconnectorservices
name_pretty: BeyondCorp ClientConnectorServices
product_documentation: https://cloud.google.com/beyondcorp-enterprise/
@@ -348,7 +317,6 @@ libraries:
api_id: beyondcorp.googleapis.com
GAPICs:
- proto_path: google/cloud/beyondcorp/clientconnectorservices/v1
-
- api_shortname: beyondcorp-clientgateways
name_pretty: BeyondCorp ClientGateways
product_documentation: https://cloud.google.com/beyondcorp-enterprise/
@@ -357,7 +325,6 @@ libraries:
api_id: beyondcorp.googleapis.com
GAPICs:
- proto_path: google/cloud/beyondcorp/clientgateways/v1
-
- api_shortname: biglake
name_pretty: BigLake
product_documentation: https://cloud.google.com/biglake
@@ -368,7 +335,6 @@ libraries:
- proto_path: google/cloud/bigquery/biglake/v1
- proto_path: google/cloud/biglake/v1
- proto_path: google/cloud/bigquery/biglake/v1alpha1
-
- api_shortname: analyticshub
name_pretty: Analytics Hub
product_documentation: https://cloud.google.com/analytics-hub
@@ -378,18 +344,15 @@ libraries:
library_name: bigquery-data-exchange
GAPICs:
- proto_path: google/cloud/bigquery/dataexchange/v1beta1
-
- api_shortname: bigqueryconnection
name_pretty: Cloud BigQuery Connection
product_documentation: https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest
api_description: allows users to manage BigQuery connections to external data sources.
release_level: stable
- client_documentation:
- https://cloud.google.com/bigquery/docs/reference/reservations/rpc/google.cloud.bigquery.reservation.v1beta1
+ client_documentation: https://cloud.google.com/bigquery/docs/reference/reservations/rpc/google.cloud.bigquery.reservation.v1beta1
GAPICs:
- proto_path: google/cloud/bigquery/connection/v1
- proto_path: google/cloud/bigquery/connection/v1beta1
-
- api_shortname: bigquerydatapolicy
name_pretty: BigQuery DataPolicy API
product_documentation: https://cloud.google.com/bigquery/docs/reference/datapolicy/
@@ -399,7 +362,6 @@ libraries:
- proto_path: google/cloud/bigquery/datapolicies/v1beta1
- proto_path: google/cloud/bigquery/datapolicies/v2beta1
- proto_path: google/cloud/bigquery/datapolicies/v2
-
- api_shortname: bigquerydatatransfer
name_pretty: BigQuery Data Transfer Service
product_documentation: https://cloud.google.com/bigquery/transfer/
@@ -409,7 +371,6 @@ libraries:
issue_tracker: https://issuetracker.google.com/savedsearches/559654
GAPICs:
- proto_path: google/cloud/bigquery/datatransfer/v1
-
- api_shortname: bigquerymigration
name_pretty: BigQuery Migration
product_documentation: https://cloud.google.com/bigquery/docs
@@ -418,7 +379,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/bigquery/migration/v2
- proto_path: google/cloud/bigquery/migration/v2alpha
-
- api_shortname: bigqueryreservation
name_pretty: Cloud BigQuery Reservation
product_documentation: https://cloud.google.com/bigquery/docs/reference/reservations/rpc
@@ -426,7 +386,30 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/bigquery/reservation/v1
-
+- api_shortname: bigquerystorage
+ name_pretty: BigQuery Storage
+ product_documentation: https://cloud.google.com/bigquery/docs/reference/storage/
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-bigquerystorage/latest/history
+ api_description: is an API for reading data stored in BigQuery. This API provides
+ direct, high-throughput read access to existing BigQuery tables, supports parallel
+ access with automatic liquid sharding, and allows fine-grained control over what
+ data is returned.
+ issue_tracker: https://issuetracker.google.com/savedsearches/559654
+ release_level: stable
+ language: java
+ distribution_name: com.google.cloud:google-cloud-bigquerystorage
+ codeowner_team: '@googleapis/api-bigquery'
+ api_id: bigquerystorage.googleapis.com
+ transport: grpc
+ requires_billing: true
+ library_type: GAPIC_COMBO
+ recommended_package: com.google.cloud.bigquery.storage.v1
+ GAPICs:
+ - proto_path: google/cloud/bigquery/storage/v1
+ - proto_path: google/cloud/bigquery/storage/v1alpha
+ - proto_path: google/cloud/bigquery/storage/v1beta1
+ - proto_path: google/cloud/bigquery/storage/v1beta2
+ - proto_path: google/cloud/bigquery/storage/v1beta
- api_shortname: cloudbilling
name_pretty: Cloud Billing
product_documentation: https://cloud.google.com/billing/docs
@@ -439,7 +422,6 @@ libraries:
rpc_documentation: https://cloud.google.com/billing/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/billing/v1
-
- api_shortname: billingbudgets
name_pretty: Cloud Billing Budgets
product_documentation: https://cloud.google.com/billing/docs/how-to/budgets
@@ -449,7 +431,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/billing/budgets/v1
- proto_path: google/cloud/billing/budgets/v1beta1
-
- api_shortname: binaryauthorization
name_pretty: Binary Authorization
product_documentation: https://cloud.google.com/binary-authorization/docs
@@ -465,13 +446,11 @@ libraries:
GAPICs:
- proto_path: google/cloud/binaryauthorization/v1
- proto_path: google/cloud/binaryauthorization/v1beta1
-
- api_shortname: capacityplanner
name_pretty: Capacity Planner API
product_documentation: https://cloud.google.com/capacity-planner/docs
api_description: Provides programmatic access to Capacity Planner features.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-capacityplanner/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-capacityplanner/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-capacityplanner
api_id: capacityplanner.googleapis.com
@@ -490,7 +469,6 @@ libraries:
api_id: certificatemanager.googleapis.com
GAPICs:
- proto_path: google/cloud/certificatemanager/v1
-
- api_shortname: cloudchannel
name_pretty: Channel Services
product_documentation: https://cloud.google.com/channel/docs
@@ -504,7 +482,6 @@ libraries:
rpc_documentation: https://cloud.google.com/channel/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/channel/v1
-
- api_shortname: chat
name_pretty: Google Chat API
product_documentation: https://developers.google.com/chat/concepts
@@ -514,15 +491,13 @@ libraries:
rest_documentation: https://developers.google.com/chat/api/reference/rest
GAPICs:
- proto_path: google/chat/v1
-
- api_shortname: chronicle
name_pretty: Chronicle API
product_documentation: https://cloud.google.com/chronicle/docs/secops/secops-overview
api_description: The Google Cloud Security Operations API, popularly known as the
Chronicle API, serves endpoints that enable security analysts to analyze and mitigate
a security threat throughout its lifecycle
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-chronicle/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-chronicle/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-chronicle
api_id: chronicle.googleapis.com
@@ -538,8 +513,7 @@ libraries:
api_description: Cloud API Registry lets you discover, govern, use, and monitor
Model Context Protocol (MCP) servers and tools provided by Google, or by your
organization through Apigee API hub.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-cloudapiregistry/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-cloudapiregistry/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-cloudapiregistry
api_id: cloudapiregistry.googleapis.com
@@ -562,7 +536,6 @@ libraries:
GAPICs:
- proto_path: google/devtools/cloudbuild/v1
- proto_path: google/devtools/cloudbuild/v2
-
- api_shortname: cloudcommerceconsumerprocurement
name_pretty: Cloud Commerce Consumer Procurement
product_documentation: https://cloud.google.com/marketplace/
@@ -573,7 +546,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/commerce/consumer/procurement/v1
- proto_path: google/cloud/commerce/consumer/procurement/v1alpha1
-
- api_shortname: cloudcontrolspartner
name_pretty: Cloud Controls Partner API
product_documentation: https://cloud.google.com/sovereign-controls-by-partners/docs/sovereign-partners
@@ -583,27 +555,23 @@ libraries:
GAPICs:
- proto_path: google/cloud/cloudcontrolspartner/v1
- proto_path: google/cloud/cloudcontrolspartner/v1beta
-
- api_shortname: cloudquotas
name_pretty: Cloud Quotas API
product_documentation: https://cloud.google.com/cloudquotas/docs/
- api_description: "Cloud Quotas API provides GCP service consumers with management
- and\n observability for resource usage, quotas, and restrictions of the services\n\
+ api_description: "Cloud Quotas API provides GCP service consumers with management\
+ \ and\n observability for resource usage, quotas, and restrictions of the services\n\
\ they consume."
release_level: stable
GAPICs:
- proto_path: google/api/cloudquotas/v1
- proto_path: google/api/cloudquotas/v1beta
-
- api_shortname: cloudsecuritycompliance
name_pretty: Cloud Security Compliance API
- product_documentation:
- https://cloud.google.com/security-command-center/docs/compliance-manager-overview
+ product_documentation: https://cloud.google.com/security-command-center/docs/compliance-manager-overview
api_description: Compliance Manager uses software-defined controls that let you
assess support for multiple compliance programs and security requirements within
a Google Cloud organization
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-cloudsecuritycompliance/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-cloudsecuritycompliance/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-cloudsecuritycompliance
api_id: cloudsecuritycompliance.googleapis.com
@@ -621,21 +589,19 @@ libraries:
GAPICs:
- proto_path: google/cloud/support/v2
- proto_path: google/cloud/support/v2beta
-
- api_shortname: compute
name_pretty: Compute Engine
product_documentation: https://cloud.google.com/compute/
- api_description: "delivers virtual machines running in Google's innovative data
- centers and worldwide fiber network. Compute Engine's tooling and workflow support
+ api_description: 'delivers virtual machines running in Google''s innovative data
+ centers and worldwide fiber network. Compute Engine''s tooling and workflow support
enable scaling from single instances to global, load-balanced cloud computing.
- Compute Engine's VMs boot quickly, come with persistent disk storage, deliver
- consistent performance and are available in many configurations. "
+ Compute Engine''s VMs boot quickly, come with persistent disk storage, deliver
+ consistent performance and are available in many configurations. '
release_level: stable
excluded_poms: grpc-google-cloud-compute-v1
excluded_dependencies: grpc-google-cloud-compute-v1
GAPICs:
- proto_path: google/cloud/compute/v1
-
- api_shortname: confidentialcomputing
name_pretty: Confidential Computing API
product_documentation: https://cloud.google.com/confidential-computing/
@@ -644,15 +610,12 @@ libraries:
GAPICs:
- proto_path: google/cloud/confidentialcomputing/v1
- proto_path: google/cloud/confidentialcomputing/v1alpha1
-
- api_shortname: configdelivery
name_pretty: Config Delivery API
- product_documentation:
- https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/concepts/fleet-packages
+ product_documentation: https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/concepts/fleet-packages
api_description: ConfigDelivery service manages the deployment of kubernetes configuration
to a fleet of kubernetes clusters.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-configdelivery/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-configdelivery/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-configdelivery
api_id: configdelivery.googleapis.com
@@ -660,19 +623,16 @@ libraries:
group_id: com.google.cloud
cloud_api: true
requires_billing: true
- rest_documentation:
- https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/reference/rest
+ rest_documentation: https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/reference/rest
GAPICs:
- proto_path: google/cloud/configdelivery/v1beta
- proto_path: google/cloud/configdelivery/v1
- api_shortname: connectgateway
name_pretty: Connect Gateway API
- product_documentation:
- https://cloud.google.com/kubernetes-engine/enterprise/multicluster-management/gateway
+ product_documentation: https://cloud.google.com/kubernetes-engine/enterprise/multicluster-management/gateway
api_description: The Connect Gateway service allows connectivity from external parties
to connected Kubernetes clusters.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-connectgateway/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-connectgateway/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-connectgateway
api_id: connectgateway.googleapis.com
@@ -692,7 +652,6 @@ libraries:
codeowner_team: '@googleapis/api-contact-center-insights'
GAPICs:
- proto_path: google/cloud/contactcenterinsights/v1
-
- api_shortname: container
name_pretty: Kubernetes Engine
product_documentation: https://cloud.google.com/kubernetes-engine/
@@ -708,7 +667,6 @@ libraries:
GAPICs:
- proto_path: google/container/v1
- proto_path: google/container/v1beta1
-
- api_shortname: containeranalysis
name_pretty: Cloud Container Analysis
product_documentation: https://cloud.google.com/container-registry/docs/container-analysis
@@ -724,7 +682,6 @@ libraries:
GAPICs:
- proto_path: google/devtools/containeranalysis/v1
- proto_path: google/devtools/containeranalysis/v1beta1
-
- api_shortname: contentwarehouse
name_pretty: Document AI Warehouse
product_documentation: https://cloud.google.com/document-warehouse/docs/overview
@@ -733,7 +690,6 @@ libraries:
metadata.
GAPICs:
- proto_path: google/cloud/contentwarehouse/v1
-
- api_shortname: datafusion
name_pretty: Cloud Data Fusion
product_documentation: https://cloud.google.com/data-fusion/docs
@@ -745,19 +701,17 @@ libraries:
GAPICs:
- proto_path: google/cloud/datafusion/v1
- proto_path: google/cloud/datafusion/v1beta1
-
- api_shortname: databasecenter
name_pretty: Database Center API
product_documentation: https://cloud.google.com/database-center/docs/overview
- api_description: Database Center provides an organization-wide, cross-product fleet
- health platform to eliminate the overhead, complexity, and risk associated with
- aggregating and summarizing health signals through custom dashboards. Through
- Database Center’s fleet health dashboard and API, database platform teams that
- are responsible for reliability, compliance, security, cost, and administration
- of database fleets will now have a single pane of glass that pinpoints issues
- relevant to each team.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-databasecenter/latest/overview
+ api_description: "Database Center provides an organization-wide, cross-product fleet\
+ \ health platform to eliminate the overhead, complexity, and risk associated with\
+ \ aggregating and summarizing health signals through custom dashboards. Through\
+ \ Database Center\u2019s fleet health dashboard and API, database platform teams\
+ \ that are responsible for reliability, compliance, security, cost, and administration\
+ \ of database fleets will now have a single pane of glass that pinpoints issues\
+ \ relevant to each team."
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-databasecenter/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-databasecenter
api_id: databasecenter.googleapis.com
@@ -777,7 +731,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/datacatalog/v1
- proto_path: google/cloud/datacatalog/v1beta1
-
- api_shortname: dataflow
name_pretty: Dataflow
product_documentation: https://cloud.google.com/dataflow/docs
@@ -787,7 +740,6 @@ libraries:
rpc_documentation: https://cloud.google.com/dataflow/docs/reference/rpc
GAPICs:
- proto_path: google/dataflow/v1beta3
-
- api_shortname: dataform
name_pretty: Cloud Dataform
product_documentation: https://cloud.google.com/dataform/docs
@@ -795,7 +747,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/dataform/v1beta1
- proto_path: google/cloud/dataform/v1
-
- api_shortname: datalabeling
name_pretty: Data Labeling
product_documentation: https://cloud.google.com/ai-platform/data-labeling/docs/
@@ -807,7 +758,6 @@ libraries:
rpc_documentation: https://cloud.google.com/ai-platform/data-labeling/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/datalabeling/v1beta1
-
- api_shortname: datalineage
name_pretty: Data Lineage
product_documentation: https://cloud.google.com/data-catalog/docs/data-lineage/
@@ -815,7 +765,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/datacatalog/lineage/v1
-
- api_shortname: datamanager
name_pretty: Data Manager API
product_documentation: https://developers.google.com/data-manager
@@ -845,7 +794,6 @@ libraries:
rpc_documentation: https://cloud.google.com/dataplex/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/dataplex/v1
-
- api_shortname: dataproc
name_pretty: Dataproc
product_documentation: https://cloud.google.com/dataproc
@@ -858,7 +806,6 @@ libraries:
rpc_documentation: https://cloud.google.com/dataproc/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/dataproc/v1
-
- api_shortname: metastore
name_pretty: Dataproc Metastore
product_documentation: https://cloud.google.com/dataproc-metastore/docs
@@ -874,7 +821,6 @@ libraries:
- proto_path: google/cloud/metastore/v1
- proto_path: google/cloud/metastore/v1alpha
- proto_path: google/cloud/metastore/v1beta
-
- api_shortname: datastream
name_pretty: Datastream
product_documentation: https://cloud.google.com/datastream/docs
@@ -886,7 +832,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/datastream/v1
- proto_path: google/cloud/datastream/v1alpha1
-
- api_shortname: clouddeploy
name_pretty: Google Cloud Deploy
product_documentation: https://cloud.google.com/deploy/docs
@@ -897,13 +842,11 @@ libraries:
codeowner_team: '@googleapis/aap-dpes'
GAPICs:
- proto_path: google/cloud/deploy/v1
-
- api_shortname: developerconnect
name_pretty: Developer Connect API
product_documentation: https://cloud.google.com/developer-connect/docs/overview
api_description: Connect third-party source code management to Google
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-developerconnect/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-developerconnect/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-developerconnect
api_id: developerconnect.googleapis.com
@@ -917,8 +860,7 @@ libraries:
name_pretty: Device Streaming API
product_documentation: https://cloud.google.com/device-streaming/docs
api_description: The Cloud API for device streaming usage.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-devicestreaming/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-devicestreaming/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-devicestreaming
api_id: devicestreaming.googleapis.com
@@ -943,7 +885,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/dialogflow/v2
- proto_path: google/cloud/dialogflow/v2beta1
-
- api_shortname: dialogflow-cx
name_pretty: Dialogflow CX
product_documentation: https://cloud.google.com/dialogflow/cx/docs
@@ -955,7 +896,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/dialogflow/cx/v3
- proto_path: google/cloud/dialogflow/cx/v3beta1
-
- api_shortname: discoveryengine
name_pretty: Discovery Engine API
product_documentation: https://cloud.google.com/discovery-engine/media/docs
@@ -966,7 +906,6 @@ libraries:
- proto_path: google/cloud/discoveryengine/v1
- proto_path: google/cloud/discoveryengine/v1alpha
- proto_path: google/cloud/discoveryengine/v1beta
-
- api_shortname: distributedcloudedge
name_pretty: Google Distributed Cloud Edge
product_documentation: https://cloud.google.com/distributed-cloud/edge/latest/
@@ -978,7 +917,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/edgecontainer/v1
-
- api_shortname: dlp
name_pretty: Cloud Data Loss Prevention
product_documentation: https://cloud.google.com/dlp/docs/
@@ -991,7 +929,6 @@ libraries:
rpc_documentation: https://cloud.google.com/dlp/docs/reference/rpc
GAPICs:
- proto_path: google/privacy/dlp/v2
-
- api_shortname: datamigration
name_pretty: Database Migration Service
product_documentation: https://cloud.google.com/database-migration/docs
@@ -1004,7 +941,6 @@ libraries:
rest_documentation: https://cloud.google.com/database-migration/docs/reference/rest
GAPICs:
- proto_path: google/cloud/clouddms/v1
-
- api_shortname: documentai
name_pretty: Document AI
product_documentation: https://cloud.google.com/compute/docs/documentai/
@@ -1016,7 +952,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/documentai/v1
- proto_path: google/cloud/documentai/v1beta3
-
- api_shortname: domains
name_pretty: Cloud Domains
product_documentation: https://cloud.google.com/domains
@@ -1026,7 +961,6 @@ libraries:
- proto_path: google/cloud/domains/v1
- proto_path: google/cloud/domains/v1alpha2
- proto_path: google/cloud/domains/v1beta1
-
- api_shortname: edgenetwork
name_pretty: Distributed Cloud Edge Network API
product_documentation: https://cloud.google.com/distributed-cloud/edge/latest/docs/overview
@@ -1034,7 +968,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/edgenetwork/v1
-
- api_shortname: enterpriseknowledgegraph
name_pretty: Enterprise Knowledge Graph
product_documentation: https://cloud.google.com/enterprise-knowledge-graph/docs/overview
@@ -1043,7 +976,6 @@ libraries:
an efficient and useful way.
GAPICs:
- proto_path: google/cloud/enterpriseknowledgegraph/v1
-
- api_shortname: clouderrorreporting
name_pretty: Error Reporting
product_documentation: https://cloud.google.com/error-reporting
@@ -1058,7 +990,6 @@ libraries:
requires_billing: false
GAPICs:
- proto_path: google/devtools/clouderrorreporting/v1beta1
-
- api_shortname: essentialcontacts
name_pretty: Essential Contacts API
product_documentation: https://cloud.google.com/resource-manager/docs/managing-notification-contacts/
@@ -1068,7 +999,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/essentialcontacts/v1
-
- api_shortname: eventarc
name_pretty: Eventarc
product_documentation: https://cloud.google.com/eventarc/docs
@@ -1082,7 +1012,6 @@ libraries:
rpc_documentation: https://cloud.google.com/eventarc/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/eventarc/v1
-
- api_shortname: eventarcpublishing
name_pretty: Eventarc Publishing
product_documentation: https://cloud.google.com/eventarc/docs
@@ -1094,7 +1023,6 @@ libraries:
rpc_documentation: https://cloud.google.com/eventarc/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/eventarc/publishing/v1
-
- api_shortname: file
name_pretty: Cloud Filestore API
product_documentation: https://cloud.google.com/filestore/docs
@@ -1107,16 +1035,13 @@ libraries:
GAPICs:
- proto_path: google/cloud/filestore/v1
- proto_path: google/cloud/filestore/v1beta1
-
- api_shortname: financialservices
name_pretty: Financial Services API
- product_documentation:
- https://cloud.google.com/financial-services/anti-money-laundering/docs/concepts/overview
+ product_documentation: https://cloud.google.com/financial-services/anti-money-laundering/docs/concepts/overview
api_description: Google Cloud's Anti Money Laundering AI (AML AI) product is an
API that scores AML risk. Use it to identify more risk, more defensibly, with
fewer false positives and reduced time per review.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-financialservices/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-financialservices/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-financialservices
api_id: financialservices.googleapis.com
@@ -1141,15 +1066,13 @@ libraries:
- proto_path: google/cloud/functions/v2
- proto_path: google/cloud/functions/v2alpha
- proto_path: google/cloud/functions/v2beta
-
- api_shortname: gdchardwaremanagement
name_pretty: GDC Hardware Management API
product_documentation: https://cloud.google.com/distributed-cloud/edge/latest/docs
api_description: Google Distributed Cloud connected allows you to run Kubernetes
clusters on dedicated hardware provided and maintained by Google that is separate
from the Google Cloud data center.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-gdchardwaremanagement/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-gdchardwaremanagement/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-gdchardwaremanagement
api_id: gdchardwaremanagement.googleapis.com
@@ -1159,16 +1082,14 @@ libraries:
GAPICs:
- proto_path: google/cloud/gdchardwaremanagement/v1alpha
requires_billing: true
- rpc_documentation:
- https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/hardware/rpc
+ rpc_documentation: https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/hardware/rpc
- api_shortname: geminidataanalytics
name_pretty: Data Analytics API with Gemini
product_documentation: https://cloud.google.com/gemini/docs/conversational-analytics-api/overview
api_description: Use Conversational Analytics API to build an artificial intelligence
(AI)-powered chat interface, or data agent, that answers questions about structured
data using natural language.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-geminidataanalytics/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-geminidataanalytics/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-geminidataanalytics
api_id: geminidataanalytics.googleapis.com
@@ -1187,7 +1108,6 @@ libraries:
library_name: gke-backup
GAPICs:
- proto_path: google/cloud/gkebackup/v1
-
- api_shortname: connectgateway
name_pretty: Connect Gateway API
product_documentation: https://cloud.google.com/anthos/multicluster-management/gateway/
@@ -1199,7 +1119,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/gkeconnect/gateway/v1beta1
-
- api_shortname: gke-multi-cloud
name_pretty: Anthos Multicloud
product_documentation: https://cloud.google.com/anthos/clusters/docs/multi-cloud
@@ -1208,7 +1127,6 @@ libraries:
api_id: gkemulticloud.googleapis.com
GAPICs:
- proto_path: google/cloud/gkemulticloud/v1
-
- api_shortname: gkehub
name_pretty: GKE Hub API
product_documentation: https://cloud.google.com/anthos/gke/docs/
@@ -1225,16 +1143,13 @@ libraries:
- proto_path: google/cloud/gkehub/v1beta1
- proto_path: google/cloud/gkehub/policycontroller/v1beta
- proto_path: google/cloud/gkehub/servicemesh/v1beta
-
- api_shortname: gkerecommender
name_pretty: GKE Recommender API
- product_documentation:
- https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference-quickstart
+ product_documentation: https://cloud.google.com/kubernetes-engine/docs/how-to/machine-learning/inference-quickstart
api_description: lets you analyze the performance and cost-efficiency of your inference
workloads, and make data-driven decisions about resource allocation and model
deployment strategies.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-gkerecommender/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-gkerecommender/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-gkerecommender
api_id: gkerecommender.googleapis.com
@@ -1255,7 +1170,6 @@ libraries:
library_name: grafeas
GAPICs:
- proto_path: grafeas/v1
-
- api_shortname: gsuiteaddons
name_pretty: Google Workspace Add-ons API
product_documentation: https://developers.google.com/workspace/add-ons/overview
@@ -1271,14 +1185,11 @@ libraries:
- proto_path: google/apps/script/type/gmail
- proto_path: google/apps/script/type/sheets
- proto_path: google/apps/script/type/slides
-
- api_shortname: hypercomputecluster
name_pretty: Cluster Director API
- product_documentation:
- https://cloud.google.com/blog/products/compute/managed-slurm-and-other-cluster-director-enhancements
+ product_documentation: https://cloud.google.com/blog/products/compute/managed-slurm-and-other-cluster-director-enhancements
api_description: simplifies cluster management across compute, network, and storage
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-hypercomputecluster/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-hypercomputecluster/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-hypercomputecluster
api_id: hypercomputecluster.googleapis.com
@@ -1304,7 +1215,6 @@ libraries:
- proto_path: google/iam/v2beta
- proto_path: google/iam/v3
- proto_path: google/iam/v3beta
-
- api_shortname: iam-admin
name_pretty: IAM Admin API
product_documentation: https://cloud.google.com/iam/docs/apis
@@ -1314,7 +1224,6 @@ libraries:
api_id: iam.googleapis.com
GAPICs:
- proto_path: google/iam/admin/v1
-
- api_shortname: iamcredentials
name_pretty: IAM Service Account Credentials API
product_documentation: https://cloud.google.com/iam/credentials/reference/rest/
@@ -1325,7 +1234,6 @@ libraries:
issue_tracker: https://issuetracker.google.com/issues/new?component=187161&template=0
GAPICs:
- proto_path: google/iam/credentials/v1
-
- api_shortname: iap
name_pretty: Cloud Identity-Aware Proxy API
product_documentation: https://cloud.google.com/iap
@@ -1348,7 +1256,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/ids/v1
-
- api_shortname: infra-manager
name_pretty: Infrastructure Manager API
product_documentation: https://cloud.google.com/infrastructure-manager/docs/overview
@@ -1357,7 +1264,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/config/v1
-
- api_shortname: cloudiot
name_pretty: Cloud Internet of Things (IoT) Core
product_documentation: https://cloud.google.com/iot
@@ -1374,8 +1280,7 @@ libraries:
name_pretty: Merchant Issue Resolution API
product_documentation: https://developers.google.com/merchant/api
api_description: Programatically manage your Merchant Issues
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-issue-resolution/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-issue-resolution/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-issue-resolution
api_id: merchantapi.googleapis.com
@@ -1387,13 +1292,11 @@ libraries:
- proto_path: google/shopping/merchant/issueresolution/v1beta
library_name: java-shopping-merchant-issue-resolution
requires_billing: true
-
- api_shortname: merchantapi
name_pretty: Merchant Order Tracking API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center Accounts
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-order-tracking/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-order-tracking/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-order-tracking
api_id: merchantapi.googleapis.com
@@ -1405,7 +1308,6 @@ libraries:
- proto_path: google/shopping/merchant/ordertracking/v1beta
library_name: java-shopping-merchant-order-tracking
requires_billing: true
-
- api_shortname: cloudkms
name_pretty: Cloud Key Management Service
product_documentation: https://cloud.google.com/kms
@@ -1421,7 +1323,6 @@ libraries:
issue_tracker: https://issuetracker.google.com/savedsearches/5264932
GAPICs:
- proto_path: google/cloud/kms/v1
-
- api_shortname: kmsinventory
name_pretty: KMS Inventory API
product_documentation: https://cloud.google.com/kms/docs/
@@ -1430,7 +1331,6 @@ libraries:
rpc_documentation: https://cloud.google.com/kms/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/kms/inventory/v1
-
- api_shortname: language
name_pretty: Natural Language
product_documentation: https://cloud.google.com/natural-language/docs/
@@ -1446,14 +1346,12 @@ libraries:
- proto_path: google/cloud/language/v1
- proto_path: google/cloud/language/v1beta2
- proto_path: google/cloud/language/v2
-
- api_shortname: licensemanager
name_pretty: License Manager API
product_documentation: https://cloud.google.com/compute/docs/instances/windows/ms-licensing
api_description: License Manager is a tool to manage and track third-party licenses
on Google Cloud.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-licensemanager/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-licensemanager/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-licensemanager
api_id: licensemanager.googleapis.com
@@ -1473,15 +1371,13 @@ libraries:
rpc_documentation: https://cloud.google.com/life-sciences/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/lifesciences/v2beta
-
- api_shortname: locationfinder
name_pretty: Cloud Location Finder API
product_documentation: https://cloud.google.com/location-finder/docs/overview
api_description: Cloud Location Finder is a public API that offers a repository
of all Google Cloud and Google Distributed Cloud locations, as well as cloud locations
for other cloud providers.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-locationfinder/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-locationfinder/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-locationfinder
api_id: locationfinder.googleapis.com
@@ -1512,8 +1408,7 @@ libraries:
product_documentation: https://cloud.google.com/unified-maintenance/docs/overview
api_description: The Maintenance API provides a centralized view of planned disruptive
maintenance events across supported Google Cloud products.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-maintenance/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-maintenance/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-maintenance
api_id: maintenance.googleapis.com
@@ -1538,13 +1433,11 @@ libraries:
GAPICs:
- proto_path: google/cloud/managedidentities/v1
- proto_path: google/cloud/managedidentities/v1beta1
-
- api_shortname: managedkafka
name_pretty: Managed Service for Apache Kafka
product_documentation: https://cloud.google.com/managed-kafka
api_description: Manage Apache Kafka clusters and resources.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-managedkafka/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-managedkafka/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-managedkafka
api_id: managedkafka.googleapis.com
@@ -1566,13 +1459,11 @@ libraries:
distribution_name: com.google.maps:google-maps-addressvalidation
GAPICs:
- proto_path: google/maps/addressvalidation/v1
-
- api_shortname: maps-area-insights
name_pretty: Places Insights API
product_documentation: https://developers.google.com/maps/documentation/places-insights
api_description: Places Insights API.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-maps-area-insights/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-maps-area-insights/latest/overview
release_level: preview
distribution_name: com.google.maps:google-maps-area-insights
api_id: maps-area-insights.googleapis.com
@@ -1584,14 +1475,12 @@ libraries:
requires_billing: true
- api_shortname: maps-fleetengine
name_pretty: Local Rides and Deliveries API
- product_documentation:
- https://developers.google.com/maps/documentation/transportation-logistics/mobility
+ product_documentation: https://developers.google.com/maps/documentation/transportation-logistics/mobility
api_description: Enables Fleet Engine for access to the On Demand Rides and Deliveries
and Last Mile Fleet Solution APIs. Customer's use of Google Maps Content in the
Cloud Logging Services is subject to the Google Maps Platform Terms of Service
located at https://cloud.google.com/maps-platform/terms.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-maps-fleetengine/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-maps-fleetengine/latest/overview
release_level: preview
distribution_name: com.google.maps:google-maps-fleetengine
api_id: maps-fleetengine.googleapis.com
@@ -1603,14 +1492,12 @@ libraries:
requires_billing: true
- api_shortname: maps-fleetengine-delivery
name_pretty: Last Mile Fleet Solution Delivery API
- product_documentation:
- https://developers.google.com/maps/documentation/transportation-logistics/mobility
+ product_documentation: https://developers.google.com/maps/documentation/transportation-logistics/mobility
api_description: Enables Fleet Engine for access to the On Demand Rides and Deliveries
and Last Mile Fleet Solution APIs. Customer's use of Google Maps Content in the
Cloud Logging Services is subject to the Google Maps Platform Terms of Service
located at https://cloud.google.com/maps-platform/terms.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-maps-fleetengine-delivery/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-maps-fleetengine-delivery/latest/overview
release_level: preview
distribution_name: com.google.maps:google-maps-fleetengine-delivery
api_id: maps-fleetengine-delivery.googleapis.com
@@ -1623,15 +1510,14 @@ libraries:
- api_shortname: maps-mapsplatformdatasets
name_pretty: Maps Platform Datasets API
product_documentation: https://developers.google.com/maps/documentation
- api_description: "The Maps Platform Datasets API enables developers to ingest geospatially-tied
- datasets\n that they can use to enrich their experience of Maps Platform solutions
- (e.g. styling, routing)."
+ api_description: "The Maps Platform Datasets API enables developers to ingest geospatially-tied\
+ \ datasets\n that they can use to enrich their experience of Maps Platform\
+ \ solutions (e.g. styling, routing)."
api_id: mapsplatformdatasets.googleapis.com
distribution_name: com.google.maps:google-maps-mapsplatformdatasets
cloud_api: false
GAPICs:
- proto_path: google/maps/mapsplatformdatasets/v1
-
- api_shortname: maps-places
name_pretty: Places API (New)
product_documentation: https://developers.google.com/maps/documentation/places/web-service/
@@ -1642,15 +1528,13 @@ libraries:
cloud_api: false
GAPICs:
- proto_path: google/maps/places/v1
-
- api_shortname: routeoptimization
name_pretty: Route Optimization API
product_documentation: https://developers.google.com/maps/documentation/route-optimization
api_description: The Route Optimization API assigns tasks and routes to a vehicle
fleet, optimizing against the objectives and constraints that you supply for your
transportation goals.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-maps-routeoptimization/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-maps-routeoptimization/latest/overview
release_level: preview
distribution_name: com.google.maps:google-maps-routeoptimization
api_id: routeoptimization.googleapis.com
@@ -1661,10 +1545,8 @@ libraries:
- proto_path: google/maps/routeoptimization/v1
library_name: maps-routeoptimization
requires_billing: true
- rest_documentation:
- https://developers.google.com/maps/documentation/route-optimization/reference/rest/
- rpc_documentation:
- https://developers.google.com/maps/documentation/route-optimization/reference/rpc
+ rest_documentation: https://developers.google.com/maps/documentation/route-optimization/reference/rest/
+ rpc_documentation: https://developers.google.com/maps/documentation/route-optimization/reference/rpc
- api_shortname: maps-routing
name_pretty: Routes API
product_documentation: https://developers.google.com/maps/documentation/routes
@@ -1678,7 +1560,6 @@ libraries:
cloud_api: false
GAPICs:
- proto_path: google/maps/routing/v2
-
- api_shortname: maps-solar
name_pretty: Solar API
product_documentation: https://developers.google.com/maps/documentation/solar/overview
@@ -1722,7 +1603,6 @@ libraries:
requires_billing: false
GAPICs:
- proto_path: google/cloud/mediatranslation/v1beta1
-
- api_shortname: meet
name_pretty: Google Meet API
product_documentation: https://developers.google.com/meet/api/guides/overview
@@ -1731,7 +1611,6 @@ libraries:
GAPICs:
- proto_path: google/apps/meet/v2
- proto_path: google/apps/meet/v2beta
-
- api_shortname: memcache
name_pretty: Cloud Memcache
product_documentation: https://cloud.google.com/memorystore/
@@ -1741,7 +1620,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/memcache/v1
- proto_path: google/cloud/memcache/v1beta2
-
- api_shortname: migrationcenter
name_pretty: Migration Center API
product_documentation: https://cloud.google.com/migration-center/docs/migration-center-overview
@@ -1750,15 +1628,13 @@ libraries:
cloud environments to Google Cloud
GAPICs:
- proto_path: google/cloud/migrationcenter/v1
-
- api_shortname: modelarmor
name_pretty: Model Armor API
product_documentation: https://cloud.google.com/security-command-center/docs/model-armor-overview
api_description: Model Armor helps you protect against risks like prompt injection,
harmful content, and data leakage in generative AI applications by letting you
define policies that filter user prompts and model responses.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-modelarmor/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-modelarmor/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-modelarmor
api_id: modelarmor.googleapis.com
@@ -1782,7 +1658,6 @@ libraries:
issue_tracker: https://issuetracker.google.com/savedsearches/559785
GAPICs:
- proto_path: google/monitoring/v3
-
- api_shortname: monitoring-dashboards
name_pretty: Monitoring Dashboards
product_documentation: https://cloud.google.com/monitoring/charts/dashboards
@@ -1795,18 +1670,15 @@ libraries:
api_id: monitoring.googleapis.com
GAPICs:
- proto_path: google/monitoring/dashboard/v1
-
- api_shortname: monitoring-metricsscope
name_pretty: Monitoring Metrics Scopes
- product_documentation:
- https://cloud.google.com/monitoring/api/ref_v3/rest/v1/locations.global.metricsScopes
+ product_documentation: https://cloud.google.com/monitoring/api/ref_v3/rest/v1/locations.global.metricsScopes
api_description: The metrics scope defines the set of Google Cloud projects whose
metrics the current Google Cloud project can access.
api_id: monitoring.googleapis.com
distribution_name: com.google.cloud:google-cloud-monitoring-metricsscope
GAPICs:
- proto_path: google/monitoring/metricsscope/v1
-
- api_shortname: netapp
name_pretty: NetApp API
product_documentation: https://cloud.google.com/netapp/volumes/docs/discover/overview
@@ -1815,11 +1687,9 @@ libraries:
scalable performance with global availability.
GAPICs:
- proto_path: google/cloud/netapp/v1
-
- api_shortname: networkmanagement
name_pretty: Network Management API
- product_documentation:
- https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/reference/networkmanagement/rest/
+ product_documentation: https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/reference/networkmanagement/rest/
api_description: provides a collection of network performance monitoring and diagnostic
capabilities.
library_name: network-management
@@ -1827,7 +1697,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/networkmanagement/v1
- proto_path: google/cloud/networkmanagement/v1beta1
-
- api_shortname: networksecurity
name_pretty: Network Security API
product_documentation: https://cloud.google.com/traffic-director/docs/reference/network-security/rest
@@ -1837,7 +1706,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/networksecurity/v1
- proto_path: google/cloud/networksecurity/v1beta1
-
- api_shortname: networkconnectivity
name_pretty: Network Connectivity Center
product_documentation: https://cloud.google.com/network-connectivity/docs
@@ -1848,7 +1716,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/networkconnectivity/v1
- proto_path: google/cloud/networkconnectivity/v1alpha1
-
- api_shortname: networkservices
name_pretty: Network Services API
product_documentation: https://cloud.google.com/products/networking
@@ -1856,8 +1723,7 @@ libraries:
on top of planet-scale infrastructure that leverages automation, advanced AI,
and programmability, enabling enterprises to connect, scale, secure, modernize
and optimize their infrastructure.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-networkservices/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-networkservices/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-networkservices
api_id: networkservices.googleapis.com
@@ -1880,7 +1746,6 @@ libraries:
- proto_path: google/cloud/notebooks/v1
- proto_path: google/cloud/notebooks/v1beta1
- proto_path: google/cloud/notebooks/v2
-
- api_shortname: cloudoptimization
name_pretty: Cloud Fleet Routing
product_documentation: https://cloud.google.com/optimization/docs
@@ -1893,14 +1758,12 @@ libraries:
rpc_documentation: https://cloud.google.com/optimization/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/optimization/v1
-
- api_shortname: oracledatabase
name_pretty: Oracle Database@Google Cloud API
product_documentation: https://cloud.google.com/oracle/database/docs
api_description: The Oracle Database@Google Cloud API provides a set of APIs to
manage Oracle database services, such as Exadata and Autonomous Databases.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-oracledatabase/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-oracledatabase/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-oracledatabase
api_id: oracledatabase.googleapis.com
@@ -1925,18 +1788,15 @@ libraries:
GAPICs:
- proto_path: google/cloud/orchestration/airflow/service/v1
- proto_path: google/cloud/orchestration/airflow/service/v1beta1
-
- api_shortname: orgpolicy
name_pretty: Cloud Organization Policy
product_documentation: n/a
api_description: n/a
release_level: stable
- client_documentation:
- https://cloud.google.com/java/docs/reference/proto-google-cloud-orgpolicy-v1/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/proto-google-cloud-orgpolicy-v1/latest/overview
GAPICs:
- proto_path: google/cloud/orgpolicy/v1
- proto_path: google/cloud/orgpolicy/v2
-
- api_shortname: osconfig
name_pretty: OS Config API
product_documentation: https://cloud.google.com/compute/docs/os-patch-management
@@ -1950,7 +1810,6 @@ libraries:
- proto_path: google/cloud/osconfig/v1
- proto_path: google/cloud/osconfig/v1alpha
- proto_path: google/cloud/osconfig/v1beta
-
- api_shortname: oslogin
name_pretty: Cloud OS Login
product_documentation: https://cloud.google.com/compute/docs/oslogin/
@@ -1961,14 +1820,12 @@ libraries:
GAPICs:
- proto_path: google/cloud/oslogin/v1
- proto_path: google/cloud/oslogin/v1beta
-
- api_shortname: parallelstore
name_pretty: Parallelstore API
product_documentation: https://cloud/parallelstore?hl=en
api_description: 'Parallelstore is based on Intel DAOS and delivers up to 6.3x greater
read throughput performance compared to competitive Lustre scratch offerings. '
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-parallelstore/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-parallelstore/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-parallelstore
api_id: parallelstore.googleapis.com
@@ -1986,8 +1843,7 @@ libraries:
to store, access and manage the lifecycle of your workload parameters. Parameter Manager
aims to make management of sensitive application parameters effortless for
customers without diminishing focus on security.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-parametermanager/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-parametermanager/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-parametermanager
api_id: parametermanager.googleapis.com
@@ -2009,7 +1865,6 @@ libraries:
requires_billing: false
GAPICs:
- proto_path: google/cloud/phishingprotection/v1beta1
-
- api_shortname: policytroubleshooter
name_pretty: IAM Policy Troubleshooter API
product_documentation: https://cloud.google.com/iam/docs/troubleshooting-access
@@ -2025,7 +1880,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/policytroubleshooter/v1
- proto_path: google/cloud/policytroubleshooter/iam/v3
-
- api_shortname: policysimulator
name_pretty: Policy Simulator API
product_documentation: https://cloud.google.com/policysimulator/docs/overview
@@ -2033,7 +1887,6 @@ libraries:
and viewing a Replay.
GAPICs:
- proto_path: google/cloud/policysimulator/v1
-
- api_shortname: cloudprivatecatalog
name_pretty: Private Catalog
product_documentation: https://cloud.google.com/private-catalog/docs
@@ -2044,11 +1897,9 @@ libraries:
api_id: privatecatalog.googleapis.com
GAPICs:
- proto_path: google/cloud/privatecatalog/v1beta1
-
- api_shortname: privilegedaccessmanager
name_pretty: Privileged Access Manager API
- product_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-privilegedaccessmanager/latest/overview
+ product_documentation: https://cloud.google.com/java/docs/reference/google-cloud-privilegedaccessmanager/latest/overview
api_description: Privileged Access Manager (PAM) helps you on your journey towards
least privilege and helps mitigate risks tied to privileged access misuse orabuse.
PAM allows you to shift from always-on standing privileges towards on-demand access
@@ -2061,8 +1912,7 @@ libraries:
access for developers for critical deployment or maintenance, temporary access
for operators for data ingestion and audits, JIT access to service accounts for
automated tasks, and more.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-privilegedaccessmanager/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-privilegedaccessmanager/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-privilegedaccessmanager
api_id: privilegedaccessmanager.googleapis.com
@@ -2086,7 +1936,6 @@ libraries:
api_id: cloudprofiler.googleapis.com
GAPICs:
- proto_path: google/devtools/cloudprofiler/v2
-
- api_shortname: publicca
name_pretty: Public Certificate Authority API
product_documentation: https://cloud.google.com/certificate-manager/docs/public-ca
@@ -2098,14 +1947,12 @@ libraries:
GAPICs:
- proto_path: google/cloud/security/publicca/v1beta1
- proto_path: google/cloud/security/publicca/v1
-
- api_shortname: rapidmigrationassessment
name_pretty: Rapid Migration Assessment API
product_documentation: https://cloud.google.com/migration-center/docs
api_description: Rapid Migration Assessment API
GAPICs:
- proto_path: google/cloud/rapidmigrationassessment/v1
-
- api_shortname: recaptchaenterprise
name_pretty: reCAPTCHA Enterprise
product_documentation: https://cloud.google.com/recaptcha-enterprise/docs/
@@ -2118,7 +1965,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/recaptchaenterprise/v1
- proto_path: google/cloud/recaptchaenterprise/v1beta1
-
- api_shortname: recommendationengine
name_pretty: Recommendations AI
product_documentation: https://cloud.google.com/recommendations-ai/
@@ -2126,7 +1972,6 @@ libraries:
library_name: recommendations-ai
GAPICs:
- proto_path: google/cloud/recommendationengine/v1beta1
-
- api_shortname: recommender
name_pretty: Recommender
product_documentation: https://cloud.google.com/recommendations/
@@ -2136,7 +1981,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/recommender/v1
- proto_path: google/cloud/recommender/v1beta1
-
- api_shortname: redis
name_pretty: Cloud Redis
product_documentation: https://cloud.google.com/memorystore/docs/redis/
@@ -2149,7 +1993,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/redis/v1
- proto_path: google/cloud/redis/v1beta1
-
- api_shortname: redis-cluster
name_pretty: Google Cloud Memorystore for Redis API
product_documentation: https://cloud.google.com/memorystore/docs/cluster
@@ -2157,7 +2000,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/redis/cluster/v1
- proto_path: google/cloud/redis/cluster/v1beta1
-
- api_shortname: cloudresourcemanager
name_pretty: Resource Manager API
product_documentation: https://cloud.google.com/resource-manager
@@ -2169,7 +2011,6 @@ libraries:
issue_tracker: https://issuetracker.google.com/savedsearches/559757
GAPICs:
- proto_path: google/cloud/resourcemanager/v3
-
- api_shortname: retail
name_pretty: Cloud Retail
product_documentation: https://cloud.google.com/solutions/retail
@@ -2179,7 +2020,6 @@ libraries:
- proto_path: google/cloud/retail/v2
- proto_path: google/cloud/retail/v2alpha
- proto_path: google/cloud/retail/v2beta
-
- api_shortname: run
name_pretty: Cloud Run
product_documentation: https://cloud.google.com/run/docs
@@ -2189,13 +2029,11 @@ libraries:
rpc_documentation: https://cloud.google.com/run/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/run/v2
-
- api_shortname: saasservicemgmt
name_pretty: SaaS Runtime API
product_documentation: https://cloud.google.com/saas-runtime/docs/overview
api_description: "Model, deploy, and operate your SaaS at scale.\t"
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-saasservicemgmt/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-saasservicemgmt/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-saasservicemgmt
api_id: saasservicemgmt.googleapis.com
@@ -2223,7 +2061,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/scheduler/v1
- proto_path: google/cloud/scheduler/v1beta1
-
- api_shortname: secretmanager
name_pretty: Secret Management
product_documentation: https://cloud.google.com/solutions/secrets-management/
@@ -2234,18 +2071,15 @@ libraries:
GAPICs:
- proto_path: google/cloud/secretmanager/v1
- proto_path: google/cloud/secretmanager/v1beta2
- # v1beta1's version is in a different proto path from the rest
- proto_path: google/cloud/secrets/v1beta1
-
- api_shortname: securesourcemanager
name_pretty: Secure Source Manager API
product_documentation: https://cloud.google.com/secure-source-manager/docs/overview
- api_description: "Regionally deployed, single-tenant managed source code repository
- hosted on\n Google Cloud."
+ api_description: "Regionally deployed, single-tenant managed source code repository\
+ \ hosted on\n Google Cloud."
release_level: stable
GAPICs:
- proto_path: google/cloud/securesourcemanager/v1
-
- api_shortname: privateca
name_pretty: Certificate Authority Service
product_documentation: https://cloud.google.com/certificate-authority-service/docs
@@ -2259,8 +2093,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/security/privateca/v1
- proto_path: google/cloud/security/privateca/v1beta1
-
-# duplicated api_shortname
- api_shortname: securitycenter
name_pretty: Security Command Center
product_documentation: https://cloud.google.com/security-command-center
@@ -2280,7 +2112,6 @@ libraries:
- proto_path: google/cloud/securitycenter/v1beta1
- proto_path: google/cloud/securitycenter/v1p1beta1
- proto_path: google/cloud/securitycenter/v2
-
- api_shortname: securitycenter
name_pretty: Security Command Center Settings API
product_documentation: https://cloud.google.com/security-command-center/
@@ -2293,7 +2124,6 @@ libraries:
rest_documentation: https://cloud.google.com/security-command-center/docs/reference/rest
GAPICs:
- proto_path: google/cloud/securitycenter/settings/v1beta1
-
- api_shortname: securitycentermanagement
name_pretty: Security Center Management API
product_documentation: https://cloud.google.com/securitycentermanagement/docs/overview
@@ -2301,7 +2131,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/securitycentermanagement/v1
-
- api_shortname: securityposture
name_pretty: Security Posture API
product_documentation: https://cloud.google.com/security-command-center/docs/security-posture-overview
@@ -2312,7 +2141,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/securityposture/v1
-
- api_shortname: servicecontrol
name_pretty: Service Control API
product_documentation: https://cloud.google.com/service-infrastructure/docs/overview/
@@ -2324,7 +2152,6 @@ libraries:
GAPICs:
- proto_path: google/api/servicecontrol/v1
- proto_path: google/api/servicecontrol/v2
-
- api_shortname: servicemanagement
name_pretty: Service Management API
product_documentation: https://cloud.google.com/service-infrastructure/docs/overview/
@@ -2338,7 +2165,6 @@ libraries:
api_id: servicemanagement.googleapis.com
GAPICs:
- proto_path: google/api/servicemanagement/v1
-
- api_shortname: serviceusage
name_pretty: Service Usage
product_documentation: https://cloud.google.com/service-usage/docs/overview
@@ -2349,7 +2175,6 @@ libraries:
GAPICs:
- proto_path: google/api/serviceusage/v1
- proto_path: google/api/serviceusage/v1beta1
-
- api_shortname: servicedirectory
name_pretty: Service Directory
product_documentation: https://cloud.google.com/service-directory/
@@ -2361,7 +2186,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/servicedirectory/v1
- proto_path: google/cloud/servicedirectory/v1beta1
-
- api_shortname: servicehealth
name_pretty: Service Health API
product_documentation: https://cloud.google.com/service-health/docs/overview
@@ -2370,7 +2194,6 @@ libraries:
rpc_documentation: https://cloud.google.com/service-health/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/servicehealth/v1
-
- api_shortname: cloudshell
name_pretty: Cloud Shell
product_documentation: https://cloud.google.com/shell/docs
@@ -2384,7 +2207,6 @@ libraries:
rpc_documentation: https://cloud.google.com/shell/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/shell/v1
-
- api_shortname: css
name_pretty: CSS API
product_documentation: https://developers.google.com/comparison-shopping-services/api
@@ -2395,14 +2217,11 @@ libraries:
distribution_name: com.google.shopping:google-shopping-css
GAPICs:
- proto_path: google/shopping/css/v1
-
- # duplicated api_shortname
- api_shortname: merchantapi
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-accounts/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-accounts/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-accounts
api_id: merchantapi.googleapis.com
@@ -2418,8 +2237,7 @@ libraries:
name_pretty: Merchant Conversions API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-conversions/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-conversions/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-conversions
api_id: shopping-merchant-conversions.googleapis.com
@@ -2430,13 +2248,11 @@ libraries:
- proto_path: google/shopping/merchant/conversions/v1
- proto_path: google/shopping/merchant/conversions/v1beta
requires_billing: true
-
- api_shortname: merchantapi
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-datasources/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-datasources/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-datasources
api_id: merchantapi.googleapis.com
@@ -2463,8 +2279,7 @@ libraries:
name_pretty: Merchant LFP API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-lfp/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-lfp/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-lfp
api_id: shopping-merchant-lfp.googleapis.com
@@ -2475,13 +2290,11 @@ libraries:
- proto_path: google/shopping/merchant/lfp/v1
- proto_path: google/shopping/merchant/lfp/v1beta
requires_billing: true
-
- api_shortname: shopping-merchant-notifications
name_pretty: Merchant Notifications API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-notifications/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-notifications/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-notifications
api_id: shopping-merchant-notifications.googleapis.com
@@ -2496,8 +2309,7 @@ libraries:
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your products.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-productstudio/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-productstudio/latest/overview
release_level: preview
distribution_name: com.google.shopping:google-shopping-merchant-productstudio
api_id: merchantapi.googleapis.com
@@ -2512,8 +2324,7 @@ libraries:
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-products/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-products/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-products
api_id: merchantapi.googleapis.com
@@ -2528,8 +2339,7 @@ libraries:
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-promotions/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-promotions/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-promotions
api_id: merchantapi.googleapis.com
@@ -2545,8 +2355,7 @@ libraries:
name_pretty: Merchant Quota API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-quota/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-quota/latest/overview
release_level: stable
distribution_name: com.google.shopping:google-shopping-merchant-quota
api_id: shopping-merchant-quota.googleapis.com
@@ -2557,7 +2366,6 @@ libraries:
- proto_path: google/shopping/merchant/quota/v1
- proto_path: google/shopping/merchant/quota/v1beta
requires_billing: true
-
- api_shortname: merchantapi
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
@@ -2570,13 +2378,11 @@ libraries:
- proto_path: google/shopping/merchant/reports/v1
- proto_path: google/shopping/merchant/reports/v1beta
- proto_path: google/shopping/merchant/reports/v1alpha
-
- api_shortname: merchantapi
name_pretty: Merchant API
product_documentation: https://developers.google.com/merchant/api
api_description: Programmatically manage your Merchant Center Accounts.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-shopping-merchant-reviews/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-shopping-merchant-reviews/latest/overview
release_level: preview
distribution_name: com.google.shopping:google-shopping-merchant-reviews
library_type: GAPIC_AUTO
@@ -2586,16 +2392,13 @@ libraries:
- proto_path: google/shopping/merchant/reviews/v1beta
requires_billing: true
library_name: shopping-merchant-reviews
-
- api_shortname: spanneradapter
name_pretty: Cloud Spanner Adapter API
- product_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-spanneradapter/latest/overview
+ product_documentation: https://cloud.google.com/java/docs/reference/google-cloud-spanneradapter/latest/overview
api_description: The Cloud Spanner Adapter service allows native drivers of supported database
dialects to interact directly with Cloud Spanner by wrapping the underlying wire
protocol used by the driver in a gRPC stream.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-spanneradapter/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-spanneradapter/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-spanneradapter
api_id: spanneradapter.googleapis.com
@@ -2620,7 +2423,6 @@ libraries:
- proto_path: google/cloud/speech/v1
- proto_path: google/cloud/speech/v1p1beta1
- proto_path: google/cloud/speech/v2
-
- api_shortname: storagetransfer
name_pretty: Storage Transfer Service
product_documentation: https://cloud.google.com/storage-transfer-service
@@ -2630,15 +2432,13 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/storagetransfer/v1
-
- api_shortname: storagebatchoperations
name_pretty: Storage Batch Operations API
product_documentation: https://cloud.google.com/storage/docs/batch-operations/overview
api_description: Storage batch operations is a Cloud Storage management feature
that performs operations on billions of Cloud Storage objects in a serverless
manner.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-storagebatchoperations/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-storagebatchoperations/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-storagebatchoperations
api_id: storagebatchoperations.googleapis.com
@@ -2654,7 +2454,6 @@ libraries:
api_description: Provides insights capability on Google Cloud Storage
GAPICs:
- proto_path: google/cloud/storageinsights/v1
-
- api_shortname: jobs
name_pretty: Talent Solution
product_documentation: https://cloud.google.com/solutions/talent-solution/
@@ -2670,7 +2469,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/talent/v4
- proto_path: google/cloud/talent/v4beta1
-
- api_shortname: cloudtasks
name_pretty: Cloud Tasks
product_documentation: https://cloud.google.com/tasks/docs/
@@ -2688,7 +2486,6 @@ libraries:
- proto_path: google/cloud/tasks/v2
- proto_path: google/cloud/tasks/v2beta2
- proto_path: google/cloud/tasks/v2beta3
-
- api_shortname: telcoautomation
name_pretty: Telco Automation API
product_documentation: https://cloud.google.com/telecom-network-automation
@@ -2698,7 +2495,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/telcoautomation/v1
- proto_path: google/cloud/telcoautomation/v1alpha1
-
- api_shortname: texttospeech
name_pretty: Cloud Text-to-Speech
product_documentation: https://cloud.google.com/text-to-speech
@@ -2713,7 +2509,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/texttospeech/v1
- proto_path: google/cloud/texttospeech/v1beta1
-
- api_shortname: tpu
name_pretty: Cloud TPU
product_documentation: https://cloud.google.com/tpu/docs
@@ -2725,7 +2520,6 @@ libraries:
- proto_path: google/cloud/tpu/v1
- proto_path: google/cloud/tpu/v2
- proto_path: google/cloud/tpu/v2alpha1
-
- api_shortname: cloudtrace
name_pretty: Stackdriver Trace
product_documentation: https://cloud.google.com/trace/docs/
@@ -2739,7 +2533,6 @@ libraries:
GAPICs:
- proto_path: google/devtools/cloudtrace/v1
- proto_path: google/devtools/cloudtrace/v2
-
- api_shortname: translate
name_pretty: Cloud Translation
product_documentation: https://cloud.google.com/translate/docs/
@@ -2754,14 +2547,12 @@ libraries:
GAPICs:
- proto_path: google/cloud/translate/v3
- proto_path: google/cloud/translate/v3beta1
-
- api_shortname: memorystore
name_pretty: Memorystore API
product_documentation: https://cloud.google.com/memorystore/docs/valkey
api_description: Memorystore for Valkey is a fully managed Valkey Cluster service
for Google Cloud.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-memorystore/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-memorystore/latest/overview
release_level: stable
api_id: memorystore.googleapis.com
library_type: GAPIC_AUTO
@@ -2784,8 +2575,7 @@ libraries:
with associated metadata, automatically generate embeddings from your data, and
perform fast approximate nearest neighbor (ANN) searches to find semantically
similar items at scale.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-vectorsearch/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-vectorsearch/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-vectorsearch
api_id: vectorsearch.googleapis.com
@@ -2811,7 +2601,6 @@ libraries:
- proto_path: google/cloud/videointelligence/v1p1beta1
- proto_path: google/cloud/videointelligence/v1p2beta1
- proto_path: google/cloud/videointelligence/v1p3beta1
-
- api_shortname: livestream
name_pretty: Live Stream API
product_documentation: https://cloud.google.com/livestream/
@@ -2822,7 +2611,6 @@ libraries:
distribution_name: com.google.cloud:google-cloud-live-stream
GAPICs:
- proto_path: google/cloud/video/livestream/v1
-
- api_shortname: videostitcher
name_pretty: Video Stitcher API
product_documentation: https://cloud.google.com/video-stitcher/
@@ -2832,7 +2620,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/video/stitcher/v1
-
- api_shortname: transcoder
name_pretty: Video Transcoder
product_documentation: https://cloud.google.com/transcoder/docs
@@ -2846,7 +2633,6 @@ libraries:
rpc_documentation: https://cloud.google.com/transcoder/docs/reference/rpc
GAPICs:
- proto_path: google/cloud/video/transcoder/v1
-
- api_shortname: vision
name_pretty: Cloud Vision
product_documentation: https://cloud.google.com/vision/docs/
@@ -2863,14 +2649,12 @@ libraries:
- proto_path: google/cloud/vision/v1p2beta1
- proto_path: google/cloud/vision/v1p3beta1
- proto_path: google/cloud/vision/v1p4beta1
-
- api_shortname: visionai
name_pretty: Vision AI API
product_documentation: https://cloud.google.com/vision-ai/docs
api_description: Vertex AI Vision is an AI-powered platform to ingest, analyze and
store video data.
- client_documentation:
- https://cloud.google.com/java/docs/reference/google-cloud-visionai/latest/overview
+ client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-visionai/latest/overview
release_level: preview
distribution_name: com.google.cloud:google-cloud-visionai
api_id: visionai.googleapis.com
@@ -2890,7 +2674,6 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/vmmigration/v1
-
- api_shortname: vmwareengine
name_pretty: Google Cloud VMware Engine
product_documentation: https://cloud.google.com/vmware-engine/
@@ -2899,7 +2682,6 @@ libraries:
rest_documentation: https://cloud.google.com/vmware-engine/docs/reference/rest
GAPICs:
- proto_path: google/cloud/vmwareengine/v1
-
- api_shortname: vpcaccess
name_pretty: Serverless VPC Access
product_documentation: https://cloud.google.com/vpc/docs/serverless-vpc-access
@@ -2910,18 +2692,17 @@ libraries:
release_level: stable
GAPICs:
- proto_path: google/cloud/vpcaccess/v1
-
- api_shortname: webrisk
name_pretty: Web Risk
product_documentation: https://cloud.google.com/web-risk/docs/
- api_description: is a Google Cloud service that lets client applications check URLs
- against Google's constantly updated lists of unsafe web resources. Unsafe web
- resources include social engineering sites—such as phishing and deceptive sites—and
- sites that host malware or unwanted software. With the Web Risk API, you can quickly
- identify known bad sites, warn users before they click infected links, and prevent
- users from posting links to known infected pages from your site. The Web Risk
- API includes data on more than a million unsafe URLs and stays up to date by examining
- billions of URLs each day.
+ api_description: "is a Google Cloud service that lets client applications check\
+ \ URLs against Google's constantly updated lists of unsafe web resources. Unsafe\
+ \ web resources include social engineering sites\u2014such as phishing and deceptive\
+ \ sites\u2014and sites that host malware or unwanted software. With the Web Risk\
+ \ API, you can quickly identify known bad sites, warn users before they click\
+ \ infected links, and prevent users from posting links to known infected pages\
+ \ from your site. The Web Risk API includes data on more than a million unsafe\
+ \ URLs and stays up to date by examining billions of URLs each day."
release_level: stable
requires_billing: false
issue_tracker: ''
@@ -2930,7 +2711,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/webrisk/v1
- proto_path: google/cloud/webrisk/v1beta1
-
- api_shortname: websecurityscanner
name_pretty: Cloud Security Scanner
product_documentation: https://cloud.google.com/security-scanner/docs/
@@ -2945,7 +2725,6 @@ libraries:
- proto_path: google/cloud/websecurityscanner/v1
- proto_path: google/cloud/websecurityscanner/v1alpha
- proto_path: google/cloud/websecurityscanner/v1beta
-
- api_shortname: workflowexecutions
name_pretty: Cloud Workflow Executions
product_documentation: https://cloud.google.com/workflows
@@ -2958,7 +2737,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/workflows/executions/v1
- proto_path: google/cloud/workflows/executions/v1beta
-
- api_shortname: workflows
name_pretty: Cloud Workflows
product_documentation: https://cloud.google.com/workflows
@@ -2970,7 +2748,6 @@ libraries:
GAPICs:
- proto_path: google/cloud/workflows/v1
- proto_path: google/cloud/workflows/v1beta
-
- api_shortname: workspaceevents
name_pretty: Google Workspace Events API
product_documentation: https://developers.google.com/workspace/events
@@ -2980,7 +2757,6 @@ libraries:
GAPICs:
- proto_path: google/apps/events/subscriptions/v1
- proto_path: google/apps/events/subscriptions/v1beta
-
- api_shortname: workstations
name_pretty: Cloud Workstations
product_documentation: https://cloud.google.com/workstations
diff --git a/java-bigquerystorage/.OwlBot-hermetic.yaml b/java-bigquerystorage/.OwlBot-hermetic.yaml
new file mode 100644
index 000000000000..54a72ded4010
--- /dev/null
+++ b/java-bigquerystorage/.OwlBot-hermetic.yaml
@@ -0,0 +1,98 @@
+# Copyright 2021 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.
+
+deep-remove-regex:
+- /java-bigquerystorage/grpc-google-.*/src
+- /java-bigquerystorage/proto-google-.*/src
+- /java-bigquerystorage/google-.*/src
+deep-preserve-regex:
+- /java-bigquerystorage/google-.*/src/test/java/com/google/cloud/.*/v.*/it/IT.*Test.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ToProtoConverter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQuerySchemaUtil.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/BigQuerySchemaUtilTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerPoolTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/RequestProfiler.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/TelemetryMetrics.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v.*/BigQueryReadSettings.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v.*/BigQueryReadClient.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v.*/stub/BigQueryReadStubSettings.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v.*/stub/EnhancedBigQueryReadStub.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v.*/stub/EnhancedBigQueryReadStubSettings.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v.*/stub/readrows
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/proto
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v.*/stub
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v.*/it
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/util
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v.*/BigQueryReadClientTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/BigQueryStorageClientTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/it/SimpleRowReader.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/stub/EnhancedBigQueryStorageStubSettingsTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/stub/ResourceHeaderTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1beta1/stub/readrows/ReadRowsRetryTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/BQTableSchemaToProtoDescriptorTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/BQV2ToBQStorageConverterTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/BigDecimalByteStringEncoderTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/BigQueryReadClientTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/CivilTimeEncoderTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/FakeBigQueryWrite.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/FakeBigQueryWriteImpl.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/FakeClock.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/FakeScheduledExecutorService.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/JsonStreamWriterTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/JsonToProtoMessageTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/ProtoSchemaConverterTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/RequestProfilerTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/SchemaCompatibilityTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/StreamWriterTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/StreamWriterV2Test.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/RequestProfilerTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/it/BigQueryResource.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/it/SimpleRowReader.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/stub/EnhancedBigQueryReadStubSettingsTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/stub/ResourceHeaderTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1.*/stub/readrows/ReadRowsRetryTest.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1beta1/BigQueryStorageClient.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1beta1/BigQueryStorageSettings.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1beta1/stub/EnhancedBigQueryStorageStub.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1beta1/stub/EnhancedBigQueryStorageStubSettings.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/BQTableSchemaToProtoDescriptor.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/BQV2ToBQStorageConverter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/BigDecimalByteStringEncoder.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/CivilTimeEncoder.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/JsonStreamWriter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/JsonToProtoMessage.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/OnSchemaUpdateRunnable.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/ProtoSchemaConverter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/SchemaCompatibility.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/StreamConnection.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/StreamWriter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/StreamWriterV2.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1.*/Waiter.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/Exceptions.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/Singletons.java
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquerystorage/reflect-config.json
+- /java-bigquerystorage/google-cloud-bigquerystorage/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquerystorage/resource-config.json
+deep-copy-regex:
+- source: /google/cloud/bigquery/storage/(v.*)/.*-java/proto-google-.*/src
+ dest: /owl-bot-staging/java-bigquerystorage/$1/proto-google-cloud-bigquerystorage-$1/src
+- source: /google/cloud/bigquery/storage/(v.*)/.*-java/grpc-google-.*/src
+ dest: /owl-bot-staging/java-bigquerystorage/$1/grpc-google-cloud-bigquerystorage-$1/src
+- source: /google/cloud/bigquery/storage/(v.*)/.*-java/gapic-google-.*/src
+ dest: /owl-bot-staging/java-bigquerystorage/$1/google-cloud-bigquerystorage/src
diff --git a/java-bigquerystorage/.cloudbuild/samples_build.yaml b/java-bigquerystorage/.cloudbuild/samples_build.yaml
new file mode 100644
index 000000000000..333515cfd7f8
--- /dev/null
+++ b/java-bigquerystorage/.cloudbuild/samples_build.yaml
@@ -0,0 +1,32 @@
+steps:
+- name: gcr.io/cloud-devrel-public-resources/java8
+ entrypoint: ls
+ args: [
+ '-alt',
+ ]
+- name: gcr.io/cloud-devrel-public-resources/java8
+ entrypoint: curl
+ args: [
+ '--header',
+ 'Metadata-Flavor: Google',
+ 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/email'
+ ]
+- name: gcr.io/cloud-devrel-public-resources/java8
+ entrypoint: pwd
+- name: gcr.io/cloud-devrel-public-resources/java8
+ entrypoint: bash
+ args: [
+ '.kokoro/build.sh'
+ ]
+ env:
+ - 'JOB_TYPE=samples'
+ - 'GOOGLE_CLOUD_PROJECT=cloud-java-ci-sample'
+ - 'BIGTABLE_TESTING_INSTANCE=instance'
+- name: gcr.io/cloud-devrel-public-resources/java8
+ entrypoint: echo
+ args: [
+ 'Sample job succeeded',
+ ]
+timeout: 3600s
+options:
+ defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
diff --git a/java-bigquerystorage/.readme-partials.yaml b/java-bigquerystorage/.readme-partials.yaml
new file mode 100644
index 000000000000..c9416e4a266e
--- /dev/null
+++ b/java-bigquerystorage/.readme-partials.yaml
@@ -0,0 +1,30 @@
+custom_content: |
+ ## OpenTelemetry support
+ The client supports emitting metrics to OpenTelemetry. This is disabled by default. It can be enabled by calling
+ ```
+ JsonStreamWriter.Builder.setEnableOpenTelemetry(true)
+ ```
+ The following metric attributes are supported.
+ | Key | Value |
+ |-----------------|------------------------------------------------------------------------------------------------------------------------------------|
+ | `error_code` | Specifies error code in the event an append request fails, or a connection ends. |
+ | `is_retry` | Indicates this was a retry operation. This can be set for either ack’ed requests or connection retry attempts. |
+ | `table_id` | Holds fully qualified name of destination table |
+ | `trace_field_1` | If a colon-separated traceId is provided, this holds the first portion. Must be non-empty. Currently populated only for Dataflow. |
+ | `trace_field_2` | If a colon-separated traceId is provided, this holds the second portion. Must be non-empty. Currently populated only for Dataflow. |
+ | `trace_field_3` | If a colon-separated traceId is provided, this holds the third portion. Must be non-empty. Currently populated only for Dataflow. |
+ | `writer_id` | Specifies writer instance id. |
+ The following metrics are supported.
+ | Name | Kind | Description |
+ |------------------------------|---------------------|------------------------------------------------------------------------------------------------------------------|
+ | `active_connection_count` | Asynchronous gauge | Reports number of active connections |
+ | `append_requests_acked` | Synchronous counter | Counts number of requests acked by the server |
+ | `append_request_bytes_acked` | Synchronous counter | Counts byte size of requests acked by the server |
+ | `append_rows_acked` | Synchronous counter | Counts number of rows in requests acked by the server |
+ | `connection_end_count` | Synchronous counter | Counts number of connection end events. This is decorated with the error code. |
+ | `connection_start_count` | Synchronous counter | Counts number of connection attempts made, regardless of whether these are initial or retry. |
+ | `inflight_queue_length` | Asynchronous gauge | Reports length of inflight queue. This queue contains sent append requests waiting for response from the server. |
+ | `network_response_latency` | Histogram | Reports time taken in milliseconds for a response to arrive once a message has been sent over the network. |
+ ### Exporting OpenTelemetry metrics
+ An exporter or collector must be installed by the application in order for [OpenTelemetry metrics to be captured](https://opentelemetry.io/docs/concepts/components/#exporters).
+ The [sample application](https://github.com/googleapis/java-bigquerystorage/blob/main/samples/snippets/src/test/java/com/example/bigquerystorage/ExportOpenTelemetryIT.java) uses [Google Monitoring Metrics Exporter](https://github.com/GoogleCloudPlatform/opentelemetry-operations-java/tree/main/exporters/metrics) to export metrics to a Google Cloud project.
diff --git a/java-bigquerystorage/.repo-metadata.json b/java-bigquerystorage/.repo-metadata.json
new file mode 100644
index 000000000000..d1243ff6695f
--- /dev/null
+++ b/java-bigquerystorage/.repo-metadata.json
@@ -0,0 +1,19 @@
+{
+ "api_shortname": "bigquerystorage",
+ "name_pretty": "BigQuery Storage",
+ "product_documentation": "https://cloud.google.com/bigquery/docs/reference/storage/",
+ "api_description": "is an API for reading data stored in BigQuery. This API provides direct, high-throughput read access to existing BigQuery tables, supports parallel access with automatic liquid sharding, and allows fine-grained control over what data is returned.",
+ "client_documentation": "https://cloud.google.com/java/docs/reference/google-cloud-bigquerystorage/latest/history",
+ "release_level": "stable",
+ "transport": "grpc",
+ "language": "java",
+ "repo": "googleapis/google-cloud-java",
+ "repo_short": "java-bigquerystorage",
+ "distribution_name": "com.google.cloud:google-cloud-bigquerystorage",
+ "api_id": "bigquerystorage.googleapis.com",
+ "library_type": "GAPIC_COMBO",
+ "requires_billing": true,
+ "codeowner_team": "@googleapis/api-bigquery",
+ "issue_tracker": "https://issuetracker.google.com/savedsearches/559654",
+ "recommended_package": "com.google.cloud.bigquery.storage.v1"
+}
\ No newline at end of file
diff --git a/java-bigquerystorage/CHANGELOG.md b/java-bigquerystorage/CHANGELOG.md
new file mode 100644
index 000000000000..8601208489b2
--- /dev/null
+++ b/java-bigquerystorage/CHANGELOG.md
@@ -0,0 +1,3399 @@
+# Changelog
+
+## [3.19.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.19.0...v3.19.1) (2026-01-15)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.65.1 ([4b9ce88](https://github.com/googleapis/java-bigquerystorage/commit/4b9ce887eb275403e0472f3561bc4abd2d2053b8))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.57.1 ([#3060](https://github.com/googleapis/java-bigquerystorage/issues/3060)) ([3a82884](https://github.com/googleapis/java-bigquerystorage/commit/3a828848626d62dde6f89d9ef4bc781bda2b4c5e))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.55.1 ([#3173](https://github.com/googleapis/java-bigquerystorage/issues/3173)) ([fc161f2](https://github.com/googleapis/java-bigquerystorage/commit/fc161f230eef41c9458dcdc9ab95e9549e5134b8))
+* Update googleapis/sdk-platform-java action to v2.65.1 ([#3172](https://github.com/googleapis/java-bigquerystorage/issues/3172)) ([fdd8e4f](https://github.com/googleapis/java-bigquerystorage/commit/fdd8e4f2252dcca9aa31c6169a77f0c27f6ff554))
+
+
+### Documentation
+
+* Add samples for using timestamps with BQStorage Read and Write API ([#3167](https://github.com/googleapis/java-bigquerystorage/issues/3167)) ([332736e](https://github.com/googleapis/java-bigquerystorage/commit/332736e8a2e9569163838d266ff49897486b9c3a))
+
+## [3.19.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.18.0...v3.19.0) (2025-12-12)
+
+
+### Features
+
+* Add picosecond timestamp support for Json to Proto converter ([#3131](https://github.com/googleapis/java-bigquerystorage/issues/3131)) ([ea1bcc5](https://github.com/googleapis/java-bigquerystorage/commit/ea1bcc509b7c430f92c5764cc4121aaa282255bf))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.54.2 ([#3137](https://github.com/googleapis/java-bigquerystorage/issues/3137)) ([2dc42c7](https://github.com/googleapis/java-bigquerystorage/commit/2dc42c7a6a15c4b86f7012a0cd211ca09ffd9a0e))
+* Update googleapis/sdk-platform-java action to v2.64.2 ([#3138](https://github.com/googleapis/java-bigquerystorage/issues/3138)) ([28cbdd9](https://github.com/googleapis/java-bigquerystorage/commit/28cbdd9f5ab36e9d7d0aa8142260dc760e50a3fb))
+
+## [3.18.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.17.3...v3.18.0) (2025-11-13)
+
+
+### Features
+
+* Support picosecond timestamp precision in BigQuery Storage API ([3704f63](https://github.com/googleapis/java-bigquerystorage/commit/3704f63150075eca0aacd100227125656aff39a6))
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.64.1 ([3704f63](https://github.com/googleapis/java-bigquerystorage/commit/3704f63150075eca0aacd100227125656aff39a6))
+* Make location cache expire after 10 minutes ([#3117](https://github.com/googleapis/java-bigquerystorage/issues/3117)) ([f7f3c06](https://github.com/googleapis/java-bigquerystorage/commit/f7f3c063846863360503a14c401d62ee6e9b0df4))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.54.1 ([#3120](https://github.com/googleapis/java-bigquerystorage/issues/3120)) ([19ed2ec](https://github.com/googleapis/java-bigquerystorage/commit/19ed2eccdf07d3b5a211ae0781851ad838601edd))
+
+## [3.17.3](https://github.com/googleapis/java-bigquerystorage/compare/v3.17.2...v3.17.3) (2025-10-20)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.53.0 ([#3112](https://github.com/googleapis/java-bigquerystorage/issues/3112)) ([345b153](https://github.com/googleapis/java-bigquerystorage/commit/345b153070eb2c91298fe5affa5d1d6b4be6f235))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.53.0 ([#3114](https://github.com/googleapis/java-bigquerystorage/issues/3114)) ([1ddfc63](https://github.com/googleapis/java-bigquerystorage/commit/1ddfc63cea149e2a5ff5087a6c780e252e0afa59))
+
+## [3.17.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.17.1...v3.17.2) (2025-10-07)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.62.3 ([b9fad83](https://github.com/googleapis/java-bigquerystorage/commit/b9fad836efc0c2a1dac8955d93a2d73e3287de45))
+* Update apimaxrequestbytes to be the accurate 20mb ([#3099](https://github.com/googleapis/java-bigquerystorage/issues/3099)) ([00b465b](https://github.com/googleapis/java-bigquerystorage/commit/00b465b8f1423dd3826411cf1c496d5e60aa6025))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.52.3 ([#3103](https://github.com/googleapis/java-bigquerystorage/issues/3103)) ([04d9c5e](https://github.com/googleapis/java-bigquerystorage/commit/04d9c5e66c936457bd9b5d54c01635ff8d97d6c0))
+
+## [3.17.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.17.0...v3.17.1) (2025-09-25)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.62.2 ([25282fc](https://github.com/googleapis/java-bigquerystorage/commit/25282fc736278bbfb5b6086c16da8b37d3bdc139))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.52.2 ([#3092](https://github.com/googleapis/java-bigquerystorage/issues/3092)) ([b91cb97](https://github.com/googleapis/java-bigquerystorage/commit/b91cb973fc00e0cba2222bd94b2543730f02c42a))
+
+## [3.17.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.16.3...v3.17.0) (2025-09-11)
+
+
+### Features
+
+* **write:** Support Arrow format for Write API ([#3086](https://github.com/googleapis/java-bigquerystorage/issues/3086)) ([6b37a95](https://github.com/googleapis/java-bigquerystorage/commit/6b37a959b2d30dcc70052b29abc4607106f1bf28))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.52.1 ([#3088](https://github.com/googleapis/java-bigquerystorage/issues/3088)) ([4cb9fab](https://github.com/googleapis/java-bigquerystorage/commit/4cb9fab5c9c5ea716aab1813efcab319414d46c9))
+* Update googleapis/sdk-platform-java action to v2.62.1 ([#3089](https://github.com/googleapis/java-bigquerystorage/issues/3089)) ([08a1968](https://github.com/googleapis/java-bigquerystorage/commit/08a19685f519cd0a8ad43572377552e0b3727014))
+
+## [3.16.3](https://github.com/googleapis/java-bigquerystorage/compare/v3.16.2...v3.16.3) (2025-08-26)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.52.0 ([#3076](https://github.com/googleapis/java-bigquerystorage/issues/3076)) ([a99d3f3](https://github.com/googleapis/java-bigquerystorage/commit/a99d3f32b7f732c276f5a57e317f3173044c7a8d))
+
+## [3.16.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.16.1...v3.16.2) (2025-08-05)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.61.0 ([7ab0f12](https://github.com/googleapis/java-bigquerystorage/commit/7ab0f121ae2ba94e70875fd8505da1bea100a573))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.51.0 ([#3064](https://github.com/googleapis/java-bigquerystorage/issues/3064)) ([e33c4ae](https://github.com/googleapis/java-bigquerystorage/commit/e33c4aef51815ae6c8887301b2873710a28aa8c2))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.13.4 ([#3050](https://github.com/googleapis/java-bigquerystorage/issues/3050)) ([8a6b906](https://github.com/googleapis/java-bigquerystorage/commit/8a6b906970ea4dd05d1fbcb4557342cfa78ffb7c))
+* Update googleapis/sdk-platform-java action to v2.61.0 ([#3065](https://github.com/googleapis/java-bigquerystorage/issues/3065)) ([80acc0b](https://github.com/googleapis/java-bigquerystorage/commit/80acc0b85689716739d169df14edf52461d9da0d))
+
+## [3.16.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.16.0...v3.16.1) (2025-07-28)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.60.2 ([d00dc03](https://github.com/googleapis/java-bigquerystorage/commit/d00dc03867b587be50ed6be12bc7eb7e7fd7cc7f))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.53.0 ([#3047](https://github.com/googleapis/java-bigquerystorage/issues/3047)) ([9ce3925](https://github.com/googleapis/java-bigquerystorage/commit/9ce39254cc26d0dd6bcf019d259a124461cacfc2))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.2 ([#3051](https://github.com/googleapis/java-bigquerystorage/issues/3051)) ([6ecd933](https://github.com/googleapis/java-bigquerystorage/commit/6ecd9338bac7382ad58cfafe25d7268a6d9654eb))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.52.0 ([#3044](https://github.com/googleapis/java-bigquerystorage/issues/3044)) ([f922f1f](https://github.com/googleapis/java-bigquerystorage/commit/f922f1fdd78442ee4111a79da20ebb0ba891ccc3))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.52.0 ([#3045](https://github.com/googleapis/java-bigquerystorage/issues/3045)) ([c59ec44](https://github.com/googleapis/java-bigquerystorage/commit/c59ec448729ddee124755015d652143860fd1179))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.11.0 ([#3049](https://github.com/googleapis/java-bigquerystorage/issues/3049)) ([84ae4f8](https://github.com/googleapis/java-bigquerystorage/commit/84ae4f8cc6b506cc2a804227dbe424c9f85fbc75))
+
+## [3.16.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.15.3...v3.16.0) (2025-07-11)
+
+
+### Features
+
+* Lower maxInflightRequest setting so that connection pool can scale up more efficiently. ([#2993](https://github.com/googleapis/java-bigquerystorage/issues/2993)) ([38e5837](https://github.com/googleapis/java-bigquerystorage/commit/38e5837dda2dfd2c2b22bedae6db089892f129f1))
+* Next release from main branch is 3.16.0 ([#3037](https://github.com/googleapis/java-bigquerystorage/issues/3037)) ([314d641](https://github.com/googleapis/java-bigquerystorage/commit/314d6419d29c175106f7d935be8c6ccf442466a5))
+
+
+### Bug Fixes
+
+* Add UNKNOWN to retry code, the same set was used for request level retries. ([#3034](https://github.com/googleapis/java-bigquerystorage/issues/3034)) ([60fb0c7](https://github.com/googleapis/java-bigquerystorage/commit/60fb0c743a1546d8ca2d6ea4c79e88d33ae09139))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.52.0 ([#3028](https://github.com/googleapis/java-bigquerystorage/issues/3028)) ([6501ab5](https://github.com/googleapis/java-bigquerystorage/commit/6501ab5b204a9d13dce709fd832173645596f5d9))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.1 ([#3035](https://github.com/googleapis/java-bigquerystorage/issues/3035)) ([40d4e06](https://github.com/googleapis/java-bigquerystorage/commit/40d4e061f45ac3a08806828a4e47a2b48843f551))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.13.3 ([#3032](https://github.com/googleapis/java-bigquerystorage/issues/3032)) ([951f769](https://github.com/googleapis/java-bigquerystorage/commit/951f7697e28f8bfbe27130da29904c888266f30a))
+* Update googleapis/sdk-platform-java action to v2.60.1 ([#3036](https://github.com/googleapis/java-bigquerystorage/issues/3036)) ([c2941a5](https://github.com/googleapis/java-bigquerystorage/commit/c2941a5d6f99515d5ee49ebcfd00a855f22dce1c))
+* Update googleapis/sdk-platform-java action to v2.60.1 ([#3040](https://github.com/googleapis/java-bigquerystorage/issues/3040)) ([11412b4](https://github.com/googleapis/java-bigquerystorage/commit/11412b4b99510f5c52f26a3b83d7ce5cab7ae032))
+
+## [3.15.3](https://github.com/googleapis/java-bigquerystorage/compare/v3.15.2...v3.15.3) (2025-06-25)
+
+
+### Bug Fixes
+
+* StreamWriter message typo ([#3006](https://github.com/googleapis/java-bigquerystorage/issues/3006)) ([8e95be5](https://github.com/googleapis/java-bigquerystorage/commit/8e95be59d374785447fbb4c871d2ce61661ec25d))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.51.0 ([#3004](https://github.com/googleapis/java-bigquerystorage/issues/3004)) ([57d9df0](https://github.com/googleapis/java-bigquerystorage/commit/57d9df0eb1cfcd0a88197fbe474102ac8c928212))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.49.1 ([#3011](https://github.com/googleapis/java-bigquerystorage/issues/3011)) ([1521f28](https://github.com/googleapis/java-bigquerystorage/commit/1521f287f2ad5565ed18e20e0540f2521e1f7dc9))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.49.2 ([#3019](https://github.com/googleapis/java-bigquerystorage/issues/3019)) ([03685d9](https://github.com/googleapis/java-bigquerystorage/commit/03685d9c549e4206e1c3fedcfad9539e6e981bbe))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.0 ([#3023](https://github.com/googleapis/java-bigquerystorage/issues/3023)) ([820cec1](https://github.com/googleapis/java-bigquerystorage/commit/820cec13b6cd88660278c015876eeb2c0a776c50))
+* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.36.0 ([#3024](https://github.com/googleapis/java-bigquerystorage/issues/3024)) ([d230ead](https://github.com/googleapis/java-bigquerystorage/commit/d230ead35b66e6dbdb6e4042d804145160b1ab71))
+* Update dependency com.google.http-client:google-http-client to v1.47.1 ([#3020](https://github.com/googleapis/java-bigquerystorage/issues/3020)) ([ea87aa3](https://github.com/googleapis/java-bigquerystorage/commit/ea87aa3d4616d701bd8965d6f89481182f2f6da6))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.13.2 ([#3022](https://github.com/googleapis/java-bigquerystorage/issues/3022)) ([9b57395](https://github.com/googleapis/java-bigquerystorage/commit/9b57395c1e1a922ca11458321ab51decc7e74026))
+* Update googleapis/sdk-platform-java action to v2.59.1 ([#3008](https://github.com/googleapis/java-bigquerystorage/issues/3008)) ([1a5dd9c](https://github.com/googleapis/java-bigquerystorage/commit/1a5dd9c616d0f5574e442444e5402f1b80e9b76e))
+* Update googleapis/sdk-platform-java action to v2.59.2 ([#3018](https://github.com/googleapis/java-bigquerystorage/issues/3018)) ([5caccc4](https://github.com/googleapis/java-bigquerystorage/commit/5caccc490e4b800023f567dc9274ea26c870fcda))
+* Update googleapis/sdk-platform-java action to v2.60.0 ([#3021](https://github.com/googleapis/java-bigquerystorage/issues/3021)) ([1ef5170](https://github.com/googleapis/java-bigquerystorage/commit/1ef51703f8a9e0317e8c201bb2d0baf83820df00))
+
+## [3.15.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.15.1...v3.15.2) (2025-06-17)
+
+
+### Dependencies
+
+* Remove version declaration of gson and open-telemetry-bom ([#3012](https://github.com/googleapis/java-bigquerystorage/issues/3012)) ([c57ef03](https://github.com/googleapis/java-bigquerystorage/commit/c57ef0385c1415506d15bc1b6b2e787725d3cefb))
+
+## [3.15.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.15.0...v3.15.1) (2025-06-16)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.35.0 ([#2988](https://github.com/googleapis/java-bigquerystorage/issues/2988)) ([c16eefd](https://github.com/googleapis/java-bigquerystorage/commit/c16eefd3d4225b3f7eaff32134658a87be2f63a2))
+* Update dependency com.google.code.gson:gson to v2.13.1 ([#2990](https://github.com/googleapis/java-bigquerystorage/issues/2990)) ([c7ea5a8](https://github.com/googleapis/java-bigquerystorage/commit/c7ea5a898f4803850d2a7d23c5e20949b2f98967))
+* Update dependency com.google.protobuf:protobuf-java-util to v3.25.8 ([#2987](https://github.com/googleapis/java-bigquerystorage/issues/2987)) ([7e8829e](https://github.com/googleapis/java-bigquerystorage/commit/7e8829e277e6cfa49d5f01f956afb42ba4c74350))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.51.0 ([#2992](https://github.com/googleapis/java-bigquerystorage/issues/2992)) ([d746ad8](https://github.com/googleapis/java-bigquerystorage/commit/d746ad89e8273d71003b9ba7add73e2ae3d87ced))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.51.0 ([#3005](https://github.com/googleapis/java-bigquerystorage/issues/3005)) ([896956c](https://github.com/googleapis/java-bigquerystorage/commit/896956c7a18099eb0ea2fb4f3f22c688e31bf84c))
+* Update dependency org.json:json to v20250517 ([#2980](https://github.com/googleapis/java-bigquerystorage/issues/2980)) ([57b944e](https://github.com/googleapis/java-bigquerystorage/commit/57b944e165ae80eb75a7634190a62e4030ab93d8))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.13.1 ([#2998](https://github.com/googleapis/java-bigquerystorage/issues/2998)) ([9cf104b](https://github.com/googleapis/java-bigquerystorage/commit/9cf104b53b6752488d82170e57fbb46a720a25cc))
+
+## [3.15.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.14.1...v3.15.0) (2025-06-04)
+
+
+### Features
+
+* **bigquery:** Integrate Otel Tracing in storage lib ([#2983](https://github.com/googleapis/java-bigquerystorage/issues/2983)) ([c84fad6](https://github.com/googleapis/java-bigquerystorage/commit/c84fad667f6b0dea7135b87ceb15e60cad8dff3d))
+* Provide append() methods that accept com.google.gson objects ([#2985](https://github.com/googleapis/java-bigquerystorage/issues/2985)) ([b8dff57](https://github.com/googleapis/java-bigquerystorage/commit/b8dff570a27b77bdfa0cceccd207e0fbf1d16d65))
+
+
+### Bug Fixes
+
+* **bigquery:** Allow users to supply custom TracerProvider ([#2995](https://github.com/googleapis/java-bigquerystorage/issues/2995)) ([88095e6](https://github.com/googleapis/java-bigquerystorage/commit/88095e60df7ef8686b35c679501fbd3939f994d9))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.58.0 ([45d50bb](https://github.com/googleapis/java-bigquerystorage/commit/45d50bb0f7a6fc2ac226860c5b1f5ac2d27bb3b4))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.59.0 ([104571c](https://github.com/googleapis/java-bigquerystorage/commit/104571c453de7153dc05522fbb69b3be1b612e1e))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.50.1 ([#2981](https://github.com/googleapis/java-bigquerystorage/issues/2981)) ([3869181](https://github.com/googleapis/java-bigquerystorage/commit/38691813495485e81b2d7c3d4c7d108d5bfe57dc))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.49.0 ([#2989](https://github.com/googleapis/java-bigquerystorage/issues/2989)) ([40a1b95](https://github.com/googleapis/java-bigquerystorage/commit/40a1b9541c1967e9a8f1f647a48fd8484e0783ae))
+
+## [3.14.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.14.0...v3.14.1) (2025-05-15)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.57.0 ([745bedb](https://github.com/googleapis/java-bigquerystorage/commit/745bedbd7f907361f89daa165ef9b361188c61a1))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.50.0 ([#2969](https://github.com/googleapis/java-bigquerystorage/issues/2969)) ([7a85ae2](https://github.com/googleapis/java-bigquerystorage/commit/7a85ae2c616f6c851f9d45b663be5ce8ba064a4e))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.48.0 ([#2975](https://github.com/googleapis/java-bigquerystorage/issues/2975)) ([0f94876](https://github.com/googleapis/java-bigquerystorage/commit/0f94876d274968bb27c748f9a58062cfb4499e3b))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.50.0 ([#2971](https://github.com/googleapis/java-bigquerystorage/issues/2971)) ([adafd79](https://github.com/googleapis/java-bigquerystorage/commit/adafd799d43b5fdea8c527432930069fe01f08f6))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.50.0 ([#2972](https://github.com/googleapis/java-bigquerystorage/issues/2972)) ([a09a457](https://github.com/googleapis/java-bigquerystorage/commit/a09a457a4522da71c4abf255e3e1deb23364bc73))
+
+## [3.14.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.13.1...v3.14.0) (2025-05-06)
+
+
+### Features
+
+* Generate BigQueryStorage v1beta library ([#2962](https://github.com/googleapis/java-bigquerystorage/issues/2962)) ([c31f551](https://github.com/googleapis/java-bigquerystorage/commit/c31f551db95643804bcfad8dbc591f1f03a12854))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.47.0 ([#2966](https://github.com/googleapis/java-bigquerystorage/issues/2966)) ([01e5c04](https://github.com/googleapis/java-bigquerystorage/commit/01e5c0499137231331bd5fc4364ec90679de6529))
+* Update googleapis/sdk-platform-java action to v2.57.0 ([#2967](https://github.com/googleapis/java-bigquerystorage/issues/2967)) ([9e8ddae](https://github.com/googleapis/java-bigquerystorage/commit/9e8ddae6fc6ba0ecdc9299c796cde671f856c2dc))
+
+## [3.13.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.13.0...v3.13.1) (2025-05-05)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.56.3 ([5a62a1a](https://github.com/googleapis/java-bigquerystorage/commit/5a62a1a35b741426d4208980f39bc3f082f9091d))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.49.2 ([#2954](https://github.com/googleapis/java-bigquerystorage/issues/2954)) ([9cfe7d8](https://github.com/googleapis/java-bigquerystorage/commit/9cfe7d81d6a98905335fb892c84f3031d6fea008))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.46.3 ([#2958](https://github.com/googleapis/java-bigquerystorage/issues/2958)) ([f4b1d93](https://github.com/googleapis/java-bigquerystorage/commit/f4b1d932ec9addae2241da93ba4dcf3d2199d64a))
+* Update dependency com.google.http-client:google-http-client to v1.47.0 ([#2955](https://github.com/googleapis/java-bigquerystorage/issues/2955)) ([02d5fa2](https://github.com/googleapis/java-bigquerystorage/commit/02d5fa23d8bc2ae1908ef527940bd0236d2a318b))
+* Update dependency com.google.protobuf:protobuf-java-util to v3.25.7 ([#2949](https://github.com/googleapis/java-bigquerystorage/issues/2949)) ([0a6f744](https://github.com/googleapis/java-bigquerystorage/commit/0a6f744ebe08d6cd038f18f9cdbeec1c714b6005))
+* Update dependency com.google.protobuf:protobuf-java-util to v3.25.7 ([#2949](https://github.com/googleapis/java-bigquerystorage/issues/2949)) ([09db7cd](https://github.com/googleapis/java-bigquerystorage/commit/09db7cdc1268f7ff7292cd70df65b42cede11fde))
+
+## [3.13.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.12.0...v3.13.0) (2025-04-25)
+
+
+### Features
+
+* Increased the number of partitions can be written in a single request ([f5c01da](https://github.com/googleapis/java-bigquerystorage/commit/f5c01da9c8a96122130cfc5a240dd52fc00441cd))
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.56.2 ([4c8edd5](https://github.com/googleapis/java-bigquerystorage/commit/4c8edd5457b782a81554ff4715f834770e126580))
+* Don't start a retry timer if connection was closed due to being idle ([#2942](https://github.com/googleapis/java-bigquerystorage/issues/2942)) ([e17ada2](https://github.com/googleapis/java-bigquerystorage/commit/e17ada2399347e9427e6ec0c9c0259e667c7f389))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.49.0 ([#2922](https://github.com/googleapis/java-bigquerystorage/issues/2922)) ([d2b0bef](https://github.com/googleapis/java-bigquerystorage/commit/d2b0bef9fcccfa6b5ff71868e69e0db82d20faa0))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.49.1 ([#2948](https://github.com/googleapis/java-bigquerystorage/issues/2948)) ([90856b2](https://github.com/googleapis/java-bigquerystorage/commit/90856b234e01cdc6dac6def1095b1255f933aa1c))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.46.2 ([#2946](https://github.com/googleapis/java-bigquerystorage/issues/2946)) ([b828283](https://github.com/googleapis/java-bigquerystorage/commit/b82828386eb42254aeb22027adf3e049a6684db8))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.49.0 ([#2935](https://github.com/googleapis/java-bigquerystorage/issues/2935)) ([85e6f0e](https://github.com/googleapis/java-bigquerystorage/commit/85e6f0e17ec57f2c791f3397817fe418252a87b7))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.49.0 ([#2936](https://github.com/googleapis/java-bigquerystorage/issues/2936)) ([3049ccc](https://github.com/googleapis/java-bigquerystorage/commit/3049ccca040ffd3ecfcb3ee6634a2888b39b3739))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.12.2 ([#2939](https://github.com/googleapis/java-bigquerystorage/issues/2939)) ([b682c72](https://github.com/googleapis/java-bigquerystorage/commit/b682c728226254e652824652fedc9aec63e1bf36))
+
+## [3.12.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.11.4...v3.12.0) (2025-03-19)
+
+
+### Features
+
+* Next release from main branch is 3.12.0 ([#2890](https://github.com/googleapis/java-bigquerystorage/issues/2890)) ([ae6e540](https://github.com/googleapis/java-bigquerystorage/commit/ae6e54046f5922bd888be46106be19e1ee97c7e7))
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.54.0 ([5fcaa9f](https://github.com/googleapis/java-bigquerystorage/commit/5fcaa9fbc0a99a63cf12fee7ce598a601c3e506b))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.55.0 ([0ca4dba](https://github.com/googleapis/java-bigquerystorage/commit/0ca4dba010813f2d2565190253b3d97b4e61602d))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.55.1 ([29d0546](https://github.com/googleapis/java-bigquerystorage/commit/29d054639cd5a1e734d833ede2eb1d5b994807c1))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.48.1 ([#2886](https://github.com/googleapis/java-bigquerystorage/issues/2886)) ([eee3e60](https://github.com/googleapis/java-bigquerystorage/commit/eee3e6027cccef48f3b0e6ae2c342472216b545b))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.45.1 ([#2903](https://github.com/googleapis/java-bigquerystorage/issues/2903)) ([21a39c7](https://github.com/googleapis/java-bigquerystorage/commit/21a39c7e33a438565e7a82f59061a75ab538249b))
+* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.34.0 ([#2912](https://github.com/googleapis/java-bigquerystorage/issues/2912)) ([c99a713](https://github.com/googleapis/java-bigquerystorage/commit/c99a71355a5dcb2e4d3d33c4e51282889bb4de13))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.48.0 ([#2897](https://github.com/googleapis/java-bigquerystorage/issues/2897)) ([011e177](https://github.com/googleapis/java-bigquerystorage/commit/011e177c8ce560e902620d8d0a5712c4f092255e))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.48.0 ([#2899](https://github.com/googleapis/java-bigquerystorage/issues/2899)) ([e809ea0](https://github.com/googleapis/java-bigquerystorage/commit/e809ea0b7629c40d1e9d16e5104dd8dc789f2ee9))
+* Update dependency node to v22 ([#2901](https://github.com/googleapis/java-bigquerystorage/issues/2901)) ([1cb2299](https://github.com/googleapis/java-bigquerystorage/commit/1cb229997c3816f135106465c3cf9705bff284e0))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.6 ([#2905](https://github.com/googleapis/java-bigquerystorage/issues/2905)) ([6e3fc75](https://github.com/googleapis/java-bigquerystorage/commit/6e3fc757b2b9586e86ca99ccdb7c2d34af49b737))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.12.1 ([#2909](https://github.com/googleapis/java-bigquerystorage/issues/2909)) ([fd56488](https://github.com/googleapis/java-bigquerystorage/commit/fd564889ba1425612acc6ce0828d7623c261edb6))
+* Update googleapis/sdk-platform-java action to v2.55.0 ([#2904](https://github.com/googleapis/java-bigquerystorage/issues/2904)) ([1a09935](https://github.com/googleapis/java-bigquerystorage/commit/1a09935b1ca099d2f1129c128a0d970a6fb71ae4))
+
+## [3.11.4](https://github.com/googleapis/java-bigquerystorage/compare/v3.11.3...v3.11.4) (2025-02-26)
+
+
+### Bug Fixes
+
+* Clarify connection pool document ([#2877](https://github.com/googleapis/java-bigquerystorage/issues/2877)) ([4a4adbb](https://github.com/googleapis/java-bigquerystorage/commit/4a4adbbe501fe772155f25e9606194a8ed15e044))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.48.0 ([#2865](https://github.com/googleapis/java-bigquerystorage/issues/2865)) ([e934eb6](https://github.com/googleapis/java-bigquerystorage/commit/e934eb680b4a919626e0ca8de2fc97837ccded9b))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.44.0 ([#2879](https://github.com/googleapis/java-bigquerystorage/issues/2879)) ([de93f74](https://github.com/googleapis/java-bigquerystorage/commit/de93f74b737d3ca752ec213a9ea17d994c4419df))
+* Update dependency com.google.http-client:google-http-client to v1.46.2 ([#2874](https://github.com/googleapis/java-bigquerystorage/issues/2874)) ([4ba9010](https://github.com/googleapis/java-bigquerystorage/commit/4ba90103ad8e8a631603942b2fce6741634dcbfd))
+* Update dependency com.google.http-client:google-http-client to v1.46.3 ([#2876](https://github.com/googleapis/java-bigquerystorage/issues/2876)) ([1f5dc49](https://github.com/googleapis/java-bigquerystorage/commit/1f5dc493c49923b2a2f4c3e57b4fe3cb19c81f20))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.12.0 ([#2871](https://github.com/googleapis/java-bigquerystorage/issues/2871)) ([165502a](https://github.com/googleapis/java-bigquerystorage/commit/165502aca0a1fbdef90dffb500ee2500bfc65ae8))
+* Update googleapis/sdk-platform-java action to v2.54.0 ([#2878](https://github.com/googleapis/java-bigquerystorage/issues/2878)) ([5593950](https://github.com/googleapis/java-bigquerystorage/commit/5593950a16618aaa37606cc3d64efdb4da743726))
+
+## [3.11.3](https://github.com/googleapis/java-bigquerystorage/compare/v3.11.2...v3.11.3) (2025-02-12)
+
+
+### Bug Fixes
+
+* Allow trace id to switch within the same connection ([#2852](https://github.com/googleapis/java-bigquerystorage/issues/2852)) ([850eaea](https://github.com/googleapis/java-bigquerystorage/commit/850eaea9eaba2f6a43055fa8319d7342901ea21d))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.53.0 ([c757440](https://github.com/googleapis/java-bigquerystorage/commit/c75744088a32598644d4924b7d2dfdcef37ff0d1))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.47.0 ([#2845](https://github.com/googleapis/java-bigquerystorage/issues/2845)) ([b089788](https://github.com/googleapis/java-bigquerystorage/commit/b08978808987dbb4b317d492e2306d24b6427669))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.43.0 ([#2859](https://github.com/googleapis/java-bigquerystorage/issues/2859)) ([ceb926a](https://github.com/googleapis/java-bigquerystorage/commit/ceb926ad9515dfc15ed5f6c7ea15506351d7d37d))
+* Update dependency com.google.http-client:google-http-client to v1.46.1 ([#2854](https://github.com/googleapis/java-bigquerystorage/issues/2854)) ([037ca78](https://github.com/googleapis/java-bigquerystorage/commit/037ca78f20d1ae0d86c1acaf2a48d75418207501))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.47.0 ([#2856](https://github.com/googleapis/java-bigquerystorage/issues/2856)) ([14d12ba](https://github.com/googleapis/java-bigquerystorage/commit/14d12ba859f5af961c5b382bba47e118bcb69d3b))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.47.0 ([#2857](https://github.com/googleapis/java-bigquerystorage/issues/2857)) ([1839051](https://github.com/googleapis/java-bigquerystorage/commit/183905176cbedfc9e1bfcf744907fd624d99c8a5))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.5 ([#2851](https://github.com/googleapis/java-bigquerystorage/issues/2851)) ([2ff6112](https://github.com/googleapis/java-bigquerystorage/commit/2ff6112a7f7d7a938d2267e60a4fdfe1fb5baaea))
+* Update googleapis/sdk-platform-java action to v2.53.0 ([#2858](https://github.com/googleapis/java-bigquerystorage/issues/2858)) ([2412f62](https://github.com/googleapis/java-bigquerystorage/commit/2412f629bd7a305d8b19685ef5b8067702187aec))
+
+## [3.11.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.11.1...v3.11.2) (2025-01-28)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.52.0 ([71d6c1a](https://github.com/googleapis/java-bigquerystorage/commit/71d6c1abf8633a24470e08e3b3ad294d545e6164))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.46.0 ([#2826](https://github.com/googleapis/java-bigquerystorage/issues/2826)) ([9bc1596](https://github.com/googleapis/java-bigquerystorage/commit/9bc15969d480a36f9bbbc9cab5ce7aa1410ad3bc))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.42.0 ([#2840](https://github.com/googleapis/java-bigquerystorage/issues/2840)) ([b270ff0](https://github.com/googleapis/java-bigquerystorage/commit/b270ff056b0065bcc57c3b8fd6bacf71fb4cfe77))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.46.0 ([#2825](https://github.com/googleapis/java-bigquerystorage/issues/2825)) ([4806d11](https://github.com/googleapis/java-bigquerystorage/commit/4806d11498e4c57f5a694bc05a9f1df3dcba841f))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.46.0 ([#2822](https://github.com/googleapis/java-bigquerystorage/issues/2822)) ([4b59e8f](https://github.com/googleapis/java-bigquerystorage/commit/4b59e8f3f43b08b6d7c670773d540cd1ce827d39))
+* Update googleapis/sdk-platform-java action to v2.52.0 ([#2838](https://github.com/googleapis/java-bigquerystorage/issues/2838)) ([0058a0b](https://github.com/googleapis/java-bigquerystorage/commit/0058a0b3339d78cd2d9824bf24434e442753c97f))
+
+## [3.11.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.11.0...v3.11.1) (2025-01-10)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.51.1 ([693c294](https://github.com/googleapis/java-bigquerystorage/commit/693c29419be0c0daad404500ba764f62de9ad56a))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.45.0 ([#2812](https://github.com/googleapis/java-bigquerystorage/issues/2812)) ([5c8ebc0](https://github.com/googleapis/java-bigquerystorage/commit/5c8ebc0e01171495c37d14d451b5fe63b9b9371b))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.41.1 ([#2819](https://github.com/googleapis/java-bigquerystorage/issues/2819)) ([059cd9b](https://github.com/googleapis/java-bigquerystorage/commit/059cd9bf77365603f45d01c71275e51b654ff381))
+* Update dependency org.json:json to v20241224 ([#2815](https://github.com/googleapis/java-bigquerystorage/issues/2815)) ([d93cf86](https://github.com/googleapis/java-bigquerystorage/commit/d93cf8628dcb2e632a317330d43f22c3b360f36e))
+* Update dependency org.json:json to v20250107 ([#2818](https://github.com/googleapis/java-bigquerystorage/issues/2818)) ([7cfebde](https://github.com/googleapis/java-bigquerystorage/commit/7cfebdeec471eae027204743abec57a6fadab06f))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.11.4 ([#2805](https://github.com/googleapis/java-bigquerystorage/issues/2805)) ([ab94a44](https://github.com/googleapis/java-bigquerystorage/commit/ab94a44a2fd75f1b1b8f78a642ea51e37acee570))
+* Update googleapis/sdk-platform-java action to v2.51.1 ([#2817](https://github.com/googleapis/java-bigquerystorage/issues/2817)) ([2d290ac](https://github.com/googleapis/java-bigquerystorage/commit/2d290ac07f0ad9e0c2af3556e2efeeb3305f2bdf))
+
+## [3.11.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.10.3...v3.11.0) (2024-12-12)
+
+
+### Features
+
+* Add support for byte and short ([#2789](https://github.com/googleapis/java-bigquerystorage/issues/2789)) ([98a714f](https://github.com/googleapis/java-bigquerystorage/commit/98a714fbdd409632c000e01c2ada9565e483eecc))
+* Introduce `java.time` methods and variables ([#2780](https://github.com/googleapis/java-bigquerystorage/issues/2780)) ([8dd66d5](https://github.com/googleapis/java-bigquerystorage/commit/8dd66d56ae9a0cb25171e466dcd8dc1e78660872))
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.51.0 ([4936ac9](https://github.com/googleapis/java-bigquerystorage/commit/4936ac952e76c08239c0aad28cc38c3212591dcd))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.44.0 ([#2778](https://github.com/googleapis/java-bigquerystorage/issues/2778)) ([91be63a](https://github.com/googleapis/java-bigquerystorage/commit/91be63a273441ee50610545c4acce9ae2b86639c))
+* Update dependency com.google.http-client:google-http-client to v1.45.3 ([#2790](https://github.com/googleapis/java-bigquerystorage/issues/2790)) ([cd0e62e](https://github.com/googleapis/java-bigquerystorage/commit/cd0e62e8fa4de42cc2fc4e9e38650eea69fc7035))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.45.0 ([#2792](https://github.com/googleapis/java-bigquerystorage/issues/2792)) ([e6cfc49](https://github.com/googleapis/java-bigquerystorage/commit/e6cfc49039c2d9f1bd49ec4d423c9cb0192680c5))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.45.0 ([#2793](https://github.com/googleapis/java-bigquerystorage/issues/2793)) ([eea1d82](https://github.com/googleapis/java-bigquerystorage/commit/eea1d82aaae379c98f35b6da067cb84e28522655))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.4 ([#2787](https://github.com/googleapis/java-bigquerystorage/issues/2787)) ([b85f01d](https://github.com/googleapis/java-bigquerystorage/commit/b85f01d809aa3e9e84c81ab4af8cf8c0eba98c0b))
+* Update sdk-platform-java dependencies ([#2798](https://github.com/googleapis/java-bigquerystorage/issues/2798)) ([1f2eaa0](https://github.com/googleapis/java-bigquerystorage/commit/1f2eaa08d49c1bca88164bcc149cfd75a7146686))
+
+## [3.10.3](https://github.com/googleapis/java-bigquerystorage/compare/v3.10.2...v3.10.3) (2024-11-17)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.50.0 ([1b7a04c](https://github.com/googleapis/java-bigquerystorage/commit/1b7a04cff6b93cffa26b2e8124835d7b3d1629ab))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.43.3 ([#2749](https://github.com/googleapis/java-bigquerystorage/issues/2749)) ([9e844df](https://github.com/googleapis/java-bigquerystorage/commit/9e844df78e99520343ac6519b75022c272aef760))
+* Update dependency com.google.http-client:google-http-client to v1.45.1 ([#2769](https://github.com/googleapis/java-bigquerystorage/issues/2769)) ([b0532b2](https://github.com/googleapis/java-bigquerystorage/commit/b0532b2ae51924815dfb9d40422c6f228fb2afc4))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.44.1 ([#2762](https://github.com/googleapis/java-bigquerystorage/issues/2762)) ([31908f6](https://github.com/googleapis/java-bigquerystorage/commit/31908f67e392a2a40b1098f30713893b6492558b))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.44.1 ([#2763](https://github.com/googleapis/java-bigquerystorage/issues/2763)) ([28239ba](https://github.com/googleapis/java-bigquerystorage/commit/28239ba88cf7f3edbe543c387ec2bf5645aaf7ab))
+* Update sdk-platform-java dependencies ([#2771](https://github.com/googleapis/java-bigquerystorage/issues/2771)) ([73effc3](https://github.com/googleapis/java-bigquerystorage/commit/73effc344ea394e8d11fecaa1a8f068d59aaec26))
+
+## [3.10.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.10.1...v3.10.2) (2024-10-28)
+
+
+### Bug Fixes
+
+* BQTableSchemaToProtoDescriptor setting of FieldOption. ([#2743](https://github.com/googleapis/java-bigquerystorage/issues/2743)) ([fb57909](https://github.com/googleapis/java-bigquerystorage/commit/fb57909e75c31a1c3f924b8b41c8a9d5f7c73207))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.49.0 ([882a657](https://github.com/googleapis/java-bigquerystorage/commit/882a6576ebab12d5bdd95261d231f49bc24f52ac))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.43.2 ([#2744](https://github.com/googleapis/java-bigquerystorage/issues/2744)) ([1b12580](https://github.com/googleapis/java-bigquerystorage/commit/1b12580ff7de454876870cc08e78b81f3b7b572c))
+
+## [3.10.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.10.0...v3.10.1) (2024-10-26)
+
+
+### Bug Fixes
+
+* Update BigQuerySchemaUtil to use non-deprecated hasExtension ([#2732](https://github.com/googleapis/java-bigquerystorage/issues/2732)) ([b97b234](https://github.com/googleapis/java-bigquerystorage/commit/b97b23423408b1c96941a507cf27ddce84c1be38))
+
+
+### Dependencies
+
+* Update actions/checkout digest to 11bd719 ([#2726](https://github.com/googleapis/java-bigquerystorage/issues/2726)) ([01a3a23](https://github.com/googleapis/java-bigquerystorage/commit/01a3a239c2cf3ee0146bea64ffa4ff93515b7ae7))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.11.3 ([#2721](https://github.com/googleapis/java-bigquerystorage/issues/2721)) ([0bc725c](https://github.com/googleapis/java-bigquerystorage/commit/0bc725cce59582706f2abb41804ee58796afb637))
+* Update googleapis/sdk-platform-java action to v2.49.0 ([#2737](https://github.com/googleapis/java-bigquerystorage/issues/2737)) ([46e302f](https://github.com/googleapis/java-bigquerystorage/commit/46e302fcb2345370c5f7fd91e0c9d550c8c05f23))
+* Update sdk-platform-java dependencies ([#2738](https://github.com/googleapis/java-bigquerystorage/issues/2738)) ([9556cfe](https://github.com/googleapis/java-bigquerystorage/commit/9556cfedaf321b49ee21083a376540ea57550519))
+
+## [3.10.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.9.3...v3.10.0) (2024-10-23)
+
+
+### Features
+
+* Add experimental ArrowData type and arrow_data field within AppendRowsRequest ([18faebd](https://github.com/googleapis/java-bigquerystorage/commit/18faebd3eccf317a67306ebaebc987367fca3627))
+
+
+### Bug Fixes
+
+* Add stream name to every request when connection is created during multiplexing ([#2699](https://github.com/googleapis/java-bigquerystorage/issues/2699)) ([c53a77c](https://github.com/googleapis/java-bigquerystorage/commit/c53a77c6e0d2d1a639033db98bacccedb3a226f7))
+
+
+### Dependencies
+
+* Update actions/checkout digest to eef6144 ([#2687](https://github.com/googleapis/java-bigquerystorage/issues/2687)) ([f3c5a7a](https://github.com/googleapis/java-bigquerystorage/commit/f3c5a7af4316ca5b3656aaa7c65bce12c5932503))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.43.1 ([#2701](https://github.com/googleapis/java-bigquerystorage/issues/2701)) ([6ebed6d](https://github.com/googleapis/java-bigquerystorage/commit/6ebed6d7b450879ff61e4c3222c24709e2809cf9))
+* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.33.0 ([#2696](https://github.com/googleapis/java-bigquerystorage/issues/2696)) ([19398db](https://github.com/googleapis/java-bigquerystorage/commit/19398db70f07ed7b2fe52e7aed221e481bee089d))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.43.0 ([#2711](https://github.com/googleapis/java-bigquerystorage/issues/2711)) ([46e3cb0](https://github.com/googleapis/java-bigquerystorage/commit/46e3cb022142bdae8223028549b6d08050895f3c))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.43.0 ([#2712](https://github.com/googleapis/java-bigquerystorage/issues/2712)) ([b466e28](https://github.com/googleapis/java-bigquerystorage/commit/b466e287caa61a92fe6d70a9c115c0b596f436b4))
+* Update dependency org.apache.avro:avro to v1.11.4 [security] ([#2694](https://github.com/googleapis/java-bigquerystorage/issues/2694)) ([b0498ba](https://github.com/googleapis/java-bigquerystorage/commit/b0498ba15ef87a703801f4c56867ab744f7c3902))
+* Update sdk-platform-java dependencies ([#2727](https://github.com/googleapis/java-bigquerystorage/issues/2727)) ([dfa7555](https://github.com/googleapis/java-bigquerystorage/commit/dfa75555a52506804debb06b442a6d13dcffc6f2))
+
+## [3.9.3](https://github.com/googleapis/java-bigquerystorage/compare/v3.9.2...v3.9.3) (2024-10-07)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.46.1 ([c0f14d8](https://github.com/googleapis/java-bigquerystorage/commit/c0f14d85f5ac4ccb44563449431ca05ccb5591e9))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.47.0 ([3183017](https://github.com/googleapis/java-bigquerystorage/commit/3183017127ee8ff9219eccb8d85f3d1398ab34ed))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.43.0 ([#2677](https://github.com/googleapis/java-bigquerystorage/issues/2677)) ([e03db45](https://github.com/googleapis/java-bigquerystorage/commit/e03db4515dbee57ae9a60fdc851d97a3991ac906))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.37.0 ([#2684](https://github.com/googleapis/java-bigquerystorage/issues/2684)) ([23684e5](https://github.com/googleapis/java-bigquerystorage/commit/23684e50c198eccb696f0be387ab9d24a58dfd92))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.11.2 ([#2682](https://github.com/googleapis/java-bigquerystorage/issues/2682)) ([8cc01e1](https://github.com/googleapis/java-bigquerystorage/commit/8cc01e13dbbb224b2dd64d4fd226755a4884363e))
+* Update googleapis/sdk-platform-java action to v2.47.0 ([#2685](https://github.com/googleapis/java-bigquerystorage/issues/2685)) ([c7c9ccd](https://github.com/googleapis/java-bigquerystorage/commit/c7c9ccdba11effff15a24e4fe985132142308b98))
+
+## [3.9.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.9.1...v3.9.2) (2024-09-26)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.46.0 ([1805476](https://github.com/googleapis/java-bigquerystorage/commit/18054767ca551410269f65ca6ccfa6247af0b0e3))
+* Increase method timeout to 240s for BigQuery Metastore Partition Service API version v1alpha ([26e6d33](https://github.com/googleapis/java-bigquerystorage/commit/26e6d33dbce75ac8dfd2f8b5930aa347b1fffe27))
+* Persist missingValueInterpretationMap in StreamWriter's Builder ([#2587](https://github.com/googleapis/java-bigquerystorage/issues/2587)) ([036d2e6](https://github.com/googleapis/java-bigquerystorage/commit/036d2e6606fa05c02f87dae8b5a8db5a70453e55))
+
+
+### Dependencies
+
+* Update core dependencies to v1.26.0 ([#2650](https://github.com/googleapis/java-bigquerystorage/issues/2650)) ([1a162bc](https://github.com/googleapis/java-bigquerystorage/commit/1a162bcdf908487eec847d95564c64e07861c37e))
+* Update core dependencies to v1.27.0 ([#2654](https://github.com/googleapis/java-bigquerystorage/issues/2654)) ([521396a](https://github.com/googleapis/java-bigquerystorage/commit/521396a666c460ce5c7b5eff2451ad186c48c967))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.42.3 ([#2643](https://github.com/googleapis/java-bigquerystorage/issues/2643)) ([c65bec0](https://github.com/googleapis/java-bigquerystorage/commit/c65bec06acb589ad087f6287518dfa99f3b95e78))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.36.0 ([#2655](https://github.com/googleapis/java-bigquerystorage/issues/2655)) ([289fe16](https://github.com/googleapis/java-bigquerystorage/commit/289fe161a82a2a786a1bf68b3805a8f094e55384))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.36.1 ([#2661](https://github.com/googleapis/java-bigquerystorage/issues/2661)) ([286b5be](https://github.com/googleapis/java-bigquerystorage/commit/286b5bea3922efea7db61ff2051d495d5e598053))
+* Update dependency com.google.cloud.opentelemetry:exporter-metrics to v0.32.0 ([#2657](https://github.com/googleapis/java-bigquerystorage/issues/2657)) ([480b373](https://github.com/googleapis/java-bigquerystorage/commit/480b3739372908c8140bc804979d4b7f0be102ef))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.11.1 ([#2660](https://github.com/googleapis/java-bigquerystorage/issues/2660)) ([95a9977](https://github.com/googleapis/java-bigquerystorage/commit/95a9977c963864cfee24a38cc644920bd72f18cc))
+
+## [3.9.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.9.0...v3.9.1) (2024-09-11)
+
+
+### Dependencies
+
+* Update core dependencies to v1.25.0 ([#2629](https://github.com/googleapis/java-bigquerystorage/issues/2629)) ([904a439](https://github.com/googleapis/java-bigquerystorage/commit/904a439a62582ea765b5766f60fa7b055d9f3ee9))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.42.1 ([#2623](https://github.com/googleapis/java-bigquerystorage/issues/2623)) ([853be58](https://github.com/googleapis/java-bigquerystorage/commit/853be584d5622ae8d87f43467a6c0df66844df8a))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.42.2 ([#2626](https://github.com/googleapis/java-bigquerystorage/issues/2626)) ([6a2fcac](https://github.com/googleapis/java-bigquerystorage/commit/6a2fcac7ef80bd3ec4d84400c139309d3551360d))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.35.0 ([#2633](https://github.com/googleapis/java-bigquerystorage/issues/2633)) ([7f6b28d](https://github.com/googleapis/java-bigquerystorage/commit/7f6b28da1efc90840c26152c7118c89153a43162))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.42.1 ([#2631](https://github.com/googleapis/java-bigquerystorage/issues/2631)) ([b4b7cca](https://github.com/googleapis/java-bigquerystorage/commit/b4b7ccae25bbe606d44c330ece7e268678697b68))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.42.1 ([#2632](https://github.com/googleapis/java-bigquerystorage/issues/2632)) ([3cf4182](https://github.com/googleapis/java-bigquerystorage/commit/3cf4182747f342e58253f9d6bd2205df4008171c))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.3 ([#2635](https://github.com/googleapis/java-bigquerystorage/issues/2635)) ([b16b4b7](https://github.com/googleapis/java-bigquerystorage/commit/b16b4b7c1bf8d9bb5f0830abe1b47ded95596ca7))
+
+## [3.9.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.8.1...v3.9.0) (2024-08-27)
+
+
+### Features
+
+* V1alpha client generation ([#2615](https://github.com/googleapis/java-bigquerystorage/issues/2615)) ([061691c](https://github.com/googleapis/java-bigquerystorage/commit/061691ccdfe56ae0813e376b8f1946cd2a41617b))
+
+
+### Dependencies
+
+* Update dependency com.google.http-client:google-http-client to v1.45.0 ([#2616](https://github.com/googleapis/java-bigquerystorage/issues/2616)) ([93b30f9](https://github.com/googleapis/java-bigquerystorage/commit/93b30f91cbe103ab44d10ca64cf344304f342600))
+
+## [3.8.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.8.0...v3.8.1) (2024-08-20)
+
+
+### Bug Fixes
+
+* Github workflow vulnerable to script injection ([#2600](https://github.com/googleapis/java-bigquerystorage/issues/2600)) ([9ce25b6](https://github.com/googleapis/java-bigquerystorage/commit/9ce25b6c96bcb5b89f69b8deee65c80c4545758f))
+* RequestProfilerTest.java regex in deep-preserve list ([#2589](https://github.com/googleapis/java-bigquerystorage/issues/2589)) ([e62ac66](https://github.com/googleapis/java-bigquerystorage/commit/e62ac664fb8e7056481ad29547bb33ae73ad2ef0))
+
+
+### Dependencies
+
+* Update core dependencies to v1.24.1 ([#2604](https://github.com/googleapis/java-bigquerystorage/issues/2604)) ([eaac3dc](https://github.com/googleapis/java-bigquerystorage/commit/eaac3dc886fe2b4cdcc8cca71fdba4b8055d70f1))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.42.0 ([#2586](https://github.com/googleapis/java-bigquerystorage/issues/2586)) ([8893d43](https://github.com/googleapis/java-bigquerystorage/commit/8893d435597dd393f39225eaa186bfb637240816))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.34.0 ([#2608](https://github.com/googleapis/java-bigquerystorage/issues/2608)) ([b4861b4](https://github.com/googleapis/java-bigquerystorage/commit/b4861b43f873037b8e20da445f0d6e125eab01b9))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.41.0 ([#2603](https://github.com/googleapis/java-bigquerystorage/issues/2603)) ([896903a](https://github.com/googleapis/java-bigquerystorage/commit/896903ac4ef5cbc315e6e0a6b1d882649f134cab))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.11.0 ([#2605](https://github.com/googleapis/java-bigquerystorage/issues/2605)) ([754e883](https://github.com/googleapis/java-bigquerystorage/commit/754e88326d99c1baa191eba511be49a28953632c))
+
+## [3.8.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.7.0...v3.8.0) (2024-07-26)
+
+
+### Features
+
+* Add opentelemetry counters for sent and acked messages ([#2532](https://github.com/googleapis/java-bigquerystorage/issues/2532)) ([2fc5c55](https://github.com/googleapis/java-bigquerystorage/commit/2fc5c5544cb32343a2ecd46445f7118e7254de8d))
+
+
+### Bug Fixes
+
+* Add `RequestProfile` classes to `deep-preserve` list ([#2574](https://github.com/googleapis/java-bigquerystorage/issues/2574)) ([2141f89](https://github.com/googleapis/java-bigquerystorage/commit/2141f89538e698eff64a665e34ad32b181b7c04a))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.33.0 ([#2577](https://github.com/googleapis/java-bigquerystorage/issues/2577)) ([5c143a0](https://github.com/googleapis/java-bigquerystorage/commit/5c143a0d0e165fcacc5cf00dee5e1a391726dc5c))
+
+## [3.7.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.6.1...v3.7.0) (2024-07-19)
+
+
+### Features
+
+* Add profiler for request execution details for write api connection worker ([#2555](https://github.com/googleapis/java-bigquerystorage/issues/2555)) ([5691bd5](https://github.com/googleapis/java-bigquerystorage/commit/5691bd54a5f31bb11bcb610a2e793259fa064656))
+* Enable hermetic library generation ([#2515](https://github.com/googleapis/java-bigquerystorage/issues/2515)) ([e1b14c1](https://github.com/googleapis/java-bigquerystorage/commit/e1b14c133a7fd75c7ddf1019f0e947d8dce30538))
+* Wire and expose profiler api to the StreamWirter/JsonStreamWriter ([#2561](https://github.com/googleapis/java-bigquerystorage/issues/2561)) ([16f19dd](https://github.com/googleapis/java-bigquerystorage/commit/16f19ddb111ff145008d89dddc159bb1a0cb32f4))
+
+
+### Bug Fixes
+
+* Correct hermetic library generation script path ([#2545](https://github.com/googleapis/java-bigquerystorage/issues/2545)) ([55cc139](https://github.com/googleapis/java-bigquerystorage/commit/55cc139ab5d66ef44b6ff4c71477be1f4008bd44))
+* Remove singleton access to request profiler. Use instance of hook instead. ([#2567](https://github.com/googleapis/java-bigquerystorage/issues/2567)) ([2f45fa2](https://github.com/googleapis/java-bigquerystorage/commit/2f45fa2d16eed5fb3a692657142b058f06115d49))
+* Using context from call in ReadRowsRetryingCallable ([#2560](https://github.com/googleapis/java-bigquerystorage/issues/2560)) ([eeb19b7](https://github.com/googleapis/java-bigquerystorage/commit/eeb19b72629f28fd740c61f60cc8856577f4b8a9))
+
+
+### Dependencies
+
+* Update core dependencies to v1.24.0 ([#2554](https://github.com/googleapis/java-bigquerystorage/issues/2554)) ([4797801](https://github.com/googleapis/java-bigquerystorage/commit/4797801120935def1b38834fb752cf552a5c73c3))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.41.0 ([#2539](https://github.com/googleapis/java-bigquerystorage/issues/2539)) ([5d17db5](https://github.com/googleapis/java-bigquerystorage/commit/5d17db52f509e1218f4f4cc0d0295f2e51bad3e1))
+* Update dependency com.google.truth:truth to v1.4.3 ([#2542](https://github.com/googleapis/java-bigquerystorage/issues/2542)) ([f45bf86](https://github.com/googleapis/java-bigquerystorage/commit/f45bf868dfda6b7662617c3259ad637383ffea7e))
+* Update dependency com.google.truth:truth to v1.4.4 ([#2557](https://github.com/googleapis/java-bigquerystorage/issues/2557)) ([41fd95c](https://github.com/googleapis/java-bigquerystorage/commit/41fd95cc37272d094400c49f2114158adb52a95c))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.40.0 ([#2552](https://github.com/googleapis/java-bigquerystorage/issues/2552)) ([ac26913](https://github.com/googleapis/java-bigquerystorage/commit/ac269139bdd53ecb8b453da99bdee68b5c1256a9))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.10.3 ([#2543](https://github.com/googleapis/java-bigquerystorage/issues/2543)) ([f36d734](https://github.com/googleapis/java-bigquerystorage/commit/f36d734120496d61123c48dab47fb0fb3b134f61))
+
+## [3.6.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.6.0...v3.6.1) (2024-06-25)
+
+
+### Dependencies
+
+* Update actions/checkout digest to 692973e ([#2530](https://github.com/googleapis/java-bigquerystorage/issues/2530)) ([3f2e689](https://github.com/googleapis/java-bigquerystorage/commit/3f2e6896ec208bcc850af7b9e54804637e214206))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.40.3 ([#2528](https://github.com/googleapis/java-bigquerystorage/issues/2528)) ([952af9e](https://github.com/googleapis/java-bigquerystorage/commit/952af9ef73253fc7f77c8700a06b9df446c3e981))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 ([#2535](https://github.com/googleapis/java-bigquerystorage/issues/2535)) ([0a9a0c0](https://github.com/googleapis/java-bigquerystorage/commit/0a9a0c01834c3a4e0f6bedc437c0cdb6f38362c1))
+
+## [3.6.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.5.2...v3.6.0) (2024-06-11)
+
+
+### Features
+
+* Add ability to write Range values with JSONStreamWriter ([#2498](https://github.com/googleapis/java-bigquerystorage/issues/2498)) ([a5e62be](https://github.com/googleapis/java-bigquerystorage/commit/a5e62bedf35238f440f7b52dc3e1d3c972e4acdd))
+* Add instrumentation for a couple of OpenTelemetry metrics ([#2501](https://github.com/googleapis/java-bigquerystorage/issues/2501)) ([195ea96](https://github.com/googleapis/java-bigquerystorage/commit/195ea96a68cc117974a8a74ae1c031ca30a6ae21))
+
+
+### Dependencies
+
+* Update actions/checkout digest to a5ac7e5 ([#2508](https://github.com/googleapis/java-bigquerystorage/issues/2508)) ([e84e877](https://github.com/googleapis/java-bigquerystorage/commit/e84e877f45e76c14102910d35b5818b49f2b9405))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.40.2 ([#2513](https://github.com/googleapis/java-bigquerystorage/issues/2513)) ([09e3b2f](https://github.com/googleapis/java-bigquerystorage/commit/09e3b2fa5792d5c88239e6713f826ff44a6293fc))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.31.0 ([#2522](https://github.com/googleapis/java-bigquerystorage/issues/2522)) ([72e1450](https://github.com/googleapis/java-bigquerystorage/commit/72e14509bc8f672af082d1dbd3f69e44e259b75c))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.39.0 ([#2524](https://github.com/googleapis/java-bigquerystorage/issues/2524)) ([25341d2](https://github.com/googleapis/java-bigquerystorage/commit/25341d20fa95feb164ae60d854d026a23882763c))
+
+## [3.5.2](https://github.com/googleapis/java-bigquerystorage/compare/v3.5.1...v3.5.2) (2024-05-24)
+
+
+### Bug Fixes
+
+* Reset send timestamp each time a request is sent ([#2499](https://github.com/googleapis/java-bigquerystorage/issues/2499)) ([b1b62b1](https://github.com/googleapis/java-bigquerystorage/commit/b1b62b1a8b89e8b5b950e0f5e35f385c35bae2da))
+
+
+### Dependencies
+
+* Update actions/checkout digest to 0ad4b8f ([#2496](https://github.com/googleapis/java-bigquerystorage/issues/2496)) ([22e8f62](https://github.com/googleapis/java-bigquerystorage/commit/22e8f62940cedfa051b77383773324bbcc79bb95))
+* Update actions/checkout digest to 44c2b7a ([#2494](https://github.com/googleapis/java-bigquerystorage/issues/2494)) ([87b435a](https://github.com/googleapis/java-bigquerystorage/commit/87b435a5add55ba7f0cad52c59df5c67bc0dfb70))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.40.0 ([#2488](https://github.com/googleapis/java-bigquerystorage/issues/2488)) ([85f7f05](https://github.com/googleapis/java-bigquerystorage/commit/85f7f05a249b9be3ab29bff0e4bba26032543423))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.40.1 ([#2492](https://github.com/googleapis/java-bigquerystorage/issues/2492)) ([f6c6f02](https://github.com/googleapis/java-bigquerystorage/commit/f6c6f027d63d0d3d74d7791affd98e7ee359aabc))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.30.1 ([#2502](https://github.com/googleapis/java-bigquerystorage/issues/2502)) ([ed4d1a3](https://github.com/googleapis/java-bigquerystorage/commit/ed4d1a38adee35450b73aefa21e25d13e8bf8469))
+* Update dependency com.google.http-client:google-http-client to v1.44.2 ([#2503](https://github.com/googleapis/java-bigquerystorage/issues/2503)) ([66840e6](https://github.com/googleapis/java-bigquerystorage/commit/66840e6acd832702157d434762eef66e00c4c5df))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.2 ([#2504](https://github.com/googleapis/java-bigquerystorage/issues/2504)) ([bebbd21](https://github.com/googleapis/java-bigquerystorage/commit/bebbd218623554bae32eeeda81e3c9f166d31b93))
+
+## [3.5.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.5.0...v3.5.1) (2024-05-06)
+
+
+### Dependencies
+
+* Update actions/checkout digest to 0ad4b8f ([#2474](https://github.com/googleapis/java-bigquerystorage/issues/2474)) ([d8d5278](https://github.com/googleapis/java-bigquerystorage/commit/d8d5278ca54317a599e7c8b7c661eedd075f6a74))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.39.1 ([#2480](https://github.com/googleapis/java-bigquerystorage/issues/2480)) ([2c6bcbb](https://github.com/googleapis/java-bigquerystorage/commit/2c6bcbbe727518b1a1d784d5d9f9653af5759886))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 ([#2483](https://github.com/googleapis/java-bigquerystorage/issues/2483)) ([8007acf](https://github.com/googleapis/java-bigquerystorage/commit/8007acfdb1965fa5a6c9308189c92ae0f523faad))
+
+## [3.5.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.4.0...v3.5.0) (2024-04-26)
+
+
+### Features
+
+* Add `libraries_bom_version` in metadata ([#1956](https://github.com/googleapis/java-bigquerystorage/issues/1956)) ([#2463](https://github.com/googleapis/java-bigquerystorage/issues/2463)) ([b35bd4a](https://github.com/googleapis/java-bigquerystorage/commit/b35bd4a631ad6411531cd9056d01e829a0863b39))
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.39.0 ([#2467](https://github.com/googleapis/java-bigquerystorage/issues/2467)) ([e2bc82d](https://github.com/googleapis/java-bigquerystorage/commit/e2bc82dde45c8c8e01bbe221f5817b02e9c5b7ed))
+
+
+### Dependencies
+
+* Update actions/checkout digest to 1d96c77 ([#2469](https://github.com/googleapis/java-bigquerystorage/issues/2469)) ([8efb813](https://github.com/googleapis/java-bigquerystorage/commit/8efb8131ff89b57509b4b122c75f765c62514b1c))
+* Update arrow.version to v16 ([#2468](https://github.com/googleapis/java-bigquerystorage/issues/2468)) ([d143c65](https://github.com/googleapis/java-bigquerystorage/commit/d143c65b6c92b98d321408458a6b2bc18e42593b))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.38.2 ([#2453](https://github.com/googleapis/java-bigquerystorage/issues/2453)) ([a054ddd](https://github.com/googleapis/java-bigquerystorage/commit/a054dddb20962c610a7af5c8cd76c93082df55fa))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.39.0 ([#2473](https://github.com/googleapis/java-bigquerystorage/issues/2473)) ([4eadc4a](https://github.com/googleapis/java-bigquerystorage/commit/4eadc4a5e63acf2daba7589f804b5facad1452fa))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.28.1 ([#2455](https://github.com/googleapis/java-bigquerystorage/issues/2455)) ([80269b0](https://github.com/googleapis/java-bigquerystorage/commit/80269b0f861ab9f5a2426668e10b35e963019395))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.29.0 ([#2465](https://github.com/googleapis/java-bigquerystorage/issues/2465)) ([c082c36](https://github.com/googleapis/java-bigquerystorage/commit/c082c363fc365962dc9654a9cefb7602711c03f8))
+
+## [3.4.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.3.1...v3.4.0) (2024-03-19)
+
+
+### Features
+
+* Add short, integer, long, boolean conversions into string ([#2437](https://github.com/googleapis/java-bigquerystorage/issues/2437)) ([4f4216e](https://github.com/googleapis/java-bigquerystorage/commit/4f4216e21b1949da096c9d180c64086ba1edfd8f))
+* Provide the default stream name ([#2444](https://github.com/googleapis/java-bigquerystorage/issues/2444)) ([fe9c3ae](https://github.com/googleapis/java-bigquerystorage/commit/fe9c3ae6d9459cf5273cf9440bd6eecc27b71a7d))
+
+
+### Bug Fixes
+
+* Accept default stream name ([#2432](https://github.com/googleapis/java-bigquerystorage/issues/2432)) ([d58a314](https://github.com/googleapis/java-bigquerystorage/commit/d58a3146458a4593876e1bb62d3c2b6d0bfb1c05))
+* Add version id to the client lib header ([#2447](https://github.com/googleapis/java-bigquerystorage/issues/2447)) ([43fd699](https://github.com/googleapis/java-bigquerystorage/commit/43fd699798db8053c2248d3d0506387a1f695b5f))
+* Also shutdown the stream connection in case the timeout exception is ([#2445](https://github.com/googleapis/java-bigquerystorage/issues/2445)) ([6e267fb](https://github.com/googleapis/java-bigquerystorage/commit/6e267fb4aaadf8bd61192a709b97cb9b799983db))
+* Fix WriteToDefaultStream example code to close the client properly ([#2433](https://github.com/googleapis/java-bigquerystorage/issues/2433)) ([d8a52f8](https://github.com/googleapis/java-bigquerystorage/commit/d8a52f886aef174bf01147e81728de6b2f09f4c3))
+
+
+### Dependencies
+
+* Update arrow.version to v15.0.1 ([#2442](https://github.com/googleapis/java-bigquerystorage/issues/2442)) ([d629194](https://github.com/googleapis/java-bigquerystorage/commit/d629194c97b75279cfa07e8dc4520868375d1c3e))
+* Update arrow.version to v15.0.2 ([#2449](https://github.com/googleapis/java-bigquerystorage/issues/2449)) ([27ded96](https://github.com/googleapis/java-bigquerystorage/commit/27ded96d7935467f61d0aefe2bd524590ea3e973))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.38.1 ([#2434](https://github.com/googleapis/java-bigquerystorage/issues/2434)) ([d99b6bd](https://github.com/googleapis/java-bigquerystorage/commit/d99b6bd31653bcc07302c089f87af88796af5bad))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.28.1 ([#2448](https://github.com/googleapis/java-bigquerystorage/issues/2448)) ([6ae3d07](https://github.com/googleapis/java-bigquerystorage/commit/6ae3d07ffda047bd8288bd00d01f14aa37ce36f8))
+
+## [3.3.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.3.0...v3.3.1) (2024-03-06)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.27.0 ([#2425](https://github.com/googleapis/java-bigquerystorage/issues/2425)) ([488d282](https://github.com/googleapis/java-bigquerystorage/commit/488d28287fdaefff02e7ad9f9f7c8da6ac873671))
+
+## [3.3.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.2.0...v3.3.0) (2024-03-04)
+
+
+### Features
+
+* Add RetrySettings use to Write API samples. ([#2419](https://github.com/googleapis/java-bigquerystorage/issues/2419)) ([5b000d0](https://github.com/googleapis/java-bigquerystorage/commit/5b000d0a4e953649ca4e44bffd3ba25c288e70e4))
+* Add the RANGE type to the google.cloud.bigquery.storage.v1.TableFieldSchema ([#2413](https://github.com/googleapis/java-bigquerystorage/issues/2413)) ([6aa92b5](https://github.com/googleapis/java-bigquerystorage/commit/6aa92b5d03eed548de9e89b0731707f92c373ce3))
+* Next release from main branch is 2.48.0 ([#2420](https://github.com/googleapis/java-bigquerystorage/issues/2420)) ([2dd8efc](https://github.com/googleapis/java-bigquerystorage/commit/2dd8efc4a21f186c20e86304092d22fd574e822e))
+
+
+### Bug Fixes
+
+* Fix issue where Universe Domain is not correctly set. ([#2423](https://github.com/googleapis/java-bigquerystorage/issues/2423)) ([b7ebd73](https://github.com/googleapis/java-bigquerystorage/commit/b7ebd73754fe51a4835f676e429b95b80f8114a5))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.38.0 ([#2417](https://github.com/googleapis/java-bigquerystorage/issues/2417)) ([8184a0f](https://github.com/googleapis/java-bigquerystorage/commit/8184a0f74e98340fe62621957f3ac78ad70c9edb))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.38.0 ([#2418](https://github.com/googleapis/java-bigquerystorage/issues/2418)) ([4d5eb73](https://github.com/googleapis/java-bigquerystorage/commit/4d5eb7343cdf5fd617a2da120642bfd678d58f94))
+* Update dependency com.google.truth:truth to v1.4.1 ([#2412](https://github.com/googleapis/java-bigquerystorage/issues/2412)) ([c2dcb73](https://github.com/googleapis/java-bigquerystorage/commit/c2dcb73c54ad5dcb68ce18741efaf479298373e1))
+* Update dependency com.google.truth:truth to v1.4.2 ([#2424](https://github.com/googleapis/java-bigquerystorage/issues/2424)) ([7a12de0](https://github.com/googleapis/java-bigquerystorage/commit/7a12de0ebc6a0a0f4bb438e3dcb36ee0759c0b94))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.1 ([#2414](https://github.com/googleapis/java-bigquerystorage/issues/2414)) ([dfa8d53](https://github.com/googleapis/java-bigquerystorage/commit/dfa8d532e5e1a28d644fefed6650ca1a2481a3a3))
+* Update dependency org.json:json to v20240303 ([#2426](https://github.com/googleapis/java-bigquerystorage/issues/2426)) ([2accca7](https://github.com/googleapis/java-bigquerystorage/commit/2accca72f2bd26c9a1cf1bd918961889b9ee3ace))
+
+
+### Documentation
+
+* Mark BigQueryWrite v1beta2 as deprecated ([#2421](https://github.com/googleapis/java-bigquerystorage/issues/2421)) ([07d98ab](https://github.com/googleapis/java-bigquerystorage/commit/07d98ab417ae9fd2f90aca4d6a1a3ff62ef0bc1d))
+
+## [3.2.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.1.0...v3.2.0) (2024-02-15)
+
+
+### Features
+
+* Introduce MaximumRequestCallbackWaitTimeExceededException ([#2401](https://github.com/googleapis/java-bigquerystorage/issues/2401)) ([0dbbfb8](https://github.com/googleapis/java-bigquerystorage/commit/0dbbfb80632e17b06bff04760e129df16149be4b))
+
+
+### Bug Fixes
+
+* Add client id and update trace id population for StreamWriter and JsonWriter ([#2389](https://github.com/googleapis/java-bigquerystorage/issues/2389)) ([4258af4](https://github.com/googleapis/java-bigquerystorage/commit/4258af42f8ab4494a254637fd018159ea426e0b7))
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.35.0 ([#2407](https://github.com/googleapis/java-bigquerystorage/issues/2407)) ([59a1ede](https://github.com/googleapis/java-bigquerystorage/commit/59a1ede76bf37d4f71e8d0b89a1610277091f5ec))
+
+
+### Dependencies
+
+* Update core dependencies to v1.23.0 ([#2403](https://github.com/googleapis/java-bigquerystorage/issues/2403)) ([68eaae7](https://github.com/googleapis/java-bigquerystorage/commit/68eaae7851ccc2b698eb06a88c11719905fca049))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.37.1 ([#2402](https://github.com/googleapis/java-bigquerystorage/issues/2402)) ([ac13acc](https://github.com/googleapis/java-bigquerystorage/commit/ac13acc3b363ac954c2efdeff86fe7ca1eaeb0a8))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.37.2 ([#2409](https://github.com/googleapis/java-bigquerystorage/issues/2409)) ([c95f4b4](https://github.com/googleapis/java-bigquerystorage/commit/c95f4b46e1040be606deace3bd0ec952d07cfc4d))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.25.0 ([#2406](https://github.com/googleapis/java-bigquerystorage/issues/2406)) ([2184b82](https://github.com/googleapis/java-bigquerystorage/commit/2184b82f322737b952d2ddab68bc37ded02f30a5))
+* Update dependency com.google.truth:truth to v1.4.0 ([#2394](https://github.com/googleapis/java-bigquerystorage/issues/2394)) ([3234fc9](https://github.com/googleapis/java-bigquerystorage/commit/3234fc93476342774a92febd14fb4a9a08bca330))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.0 ([#2392](https://github.com/googleapis/java-bigquerystorage/issues/2392)) ([9106284](https://github.com/googleapis/java-bigquerystorage/commit/91062842986166f156abbf5eefa986e3a134ef46))
+* Update dependency org.json:json to v20240205 ([#2398](https://github.com/googleapis/java-bigquerystorage/issues/2398)) ([7e6481d](https://github.com/googleapis/java-bigquerystorage/commit/7e6481d3daf1c3930c48670ccd774f1629e22360))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.10.2 ([#2397](https://github.com/googleapis/java-bigquerystorage/issues/2397)) ([f01182b](https://github.com/googleapis/java-bigquerystorage/commit/f01182b63fb31dd8a1d95f5e084b3f2ddb2e8580))
+
+## [3.1.0](https://github.com/googleapis/java-bigquerystorage/compare/v3.0.1...v3.1.0) (2024-02-02)
+
+
+### Features
+
+* Enable instream retry for default streams when Multiplexing. ([#2376](https://github.com/googleapis/java-bigquerystorage/issues/2376)) ([9a18523](https://github.com/googleapis/java-bigquerystorage/commit/9a18523503dcfc0a787985075d7193efa472c32f))
+
+
+### Bug Fixes
+
+* Add a bit more message so customers are not going to be scared on retryable errors. ([#2386](https://github.com/googleapis/java-bigquerystorage/issues/2386)) ([90331a3](https://github.com/googleapis/java-bigquerystorage/commit/90331a32447d28df99d483482ee222746da32acb))
+* Split connection pool based on credential ([#2388](https://github.com/googleapis/java-bigquerystorage/issues/2388)) ([08bc846](https://github.com/googleapis/java-bigquerystorage/commit/08bc846813e0b70bd940878658f9c33903c1416d))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.37.0 ([#2382](https://github.com/googleapis/java-bigquerystorage/issues/2382)) ([27e0bc7](https://github.com/googleapis/java-bigquerystorage/commit/27e0bc7c642de6c86e5c27834994bdd07f6e7279))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.24.0 ([#2390](https://github.com/googleapis/java-bigquerystorage/issues/2390)) ([3bb0149](https://github.com/googleapis/java-bigquerystorage/commit/3bb0149c9152905ee4c6c00fd3a55ba8502a9229))
+* Update dependency com.google.http-client:google-http-client to v1.44.1 ([#2384](https://github.com/googleapis/java-bigquerystorage/issues/2384)) ([6aecf34](https://github.com/googleapis/java-bigquerystorage/commit/6aecf34a001aea37ba0d0a2ebb0ed62619147d3d))
+
+## [3.0.1](https://github.com/googleapis/java-bigquerystorage/compare/v3.0.0...v3.0.1) (2024-01-25)
+
+
+### Bug Fixes
+
+* **deps:** Update the Java code generator (gapic-generator-java) to 2.32.0 ([#2363](https://github.com/googleapis/java-bigquerystorage/issues/2363)) ([542b946](https://github.com/googleapis/java-bigquerystorage/commit/542b94606de6790f54ebeb546dc84f30faeb58b2))
+
+
+### Dependencies
+
+* Update arrow.version to v15 ([#2372](https://github.com/googleapis/java-bigquerystorage/issues/2372)) ([4b59eec](https://github.com/googleapis/java-bigquerystorage/commit/4b59eec20da86195ab5051e585bfe20d149af863))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.36.0 ([#2364](https://github.com/googleapis/java-bigquerystorage/issues/2364)) ([26f3429](https://github.com/googleapis/java-bigquerystorage/commit/26f342990fee9c12cb1ee3d016a6d2f434d7b85d))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.22.0 ([#2370](https://github.com/googleapis/java-bigquerystorage/issues/2370)) ([adcc49e](https://github.com/googleapis/java-bigquerystorage/commit/adcc49e96a445c4dd2c68be7c82a1d750579d0d3))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.23.0 ([#2378](https://github.com/googleapis/java-bigquerystorage/issues/2378)) ([2d8245f](https://github.com/googleapis/java-bigquerystorage/commit/2d8245fbf1143308410ea2a86ca98b0289a04c29))
+* Update dependency com.google.truth:truth to v1.3.0 ([#2371](https://github.com/googleapis/java-bigquerystorage/issues/2371)) ([8b39e8a](https://github.com/googleapis/java-bigquerystorage/commit/8b39e8af6a88312b39e1283a52bcd52c119c5f30))
+
+## [3.0.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.47.0...v3.0.0) (2024-01-11)
+
+
+### âš BREAKING CHANGES
+
+* use table name create default write stream issue fix ([#2119](https://github.com/googleapis/java-bigquerystorage/issues/2119))
+
+### Features
+
+* Add configuration in json steam writer to configure the timeout in request waiting queue ([#2362](https://github.com/googleapis/java-bigquerystorage/issues/2362)) ([db527be](https://github.com/googleapis/java-bigquerystorage/commit/db527be024cd0e8c36d3b22e0b8f5c185c56f74f))
+* Adding deprecated message to v1beta2 manual client ([#2098](https://github.com/googleapis/java-bigquerystorage/issues/2098)) ([f150780](https://github.com/googleapis/java-bigquerystorage/commit/f150780454a29770781e3bdd1a21718efe92de56))
+* Exponentially backoff on INTERNAL errors for Default streams ([#2358](https://github.com/googleapis/java-bigquerystorage/issues/2358)) ([472a36f](https://github.com/googleapis/java-bigquerystorage/commit/472a36f214ea586c51a2e93ba8e4944892bbcb8c))
+* Use table name create default write stream issue fix ([#2119](https://github.com/googleapis/java-bigquerystorage/issues/2119)) ([91a2bec](https://github.com/googleapis/java-bigquerystorage/commit/91a2becf7a296b1fd33fe880f7a3b710eab4783c))
+
+
+### Bug Fixes
+
+* Add a e2e json test ([#2062](https://github.com/googleapis/java-bigquerystorage/issues/2062)) ([1893b3f](https://github.com/googleapis/java-bigquerystorage/commit/1893b3f6091972f99226dd28626bd1e638bef597))
+* Do not use regexp for BigQuerySchemaUtil#isProtoCompatible ([#2226](https://github.com/googleapis/java-bigquerystorage/issues/2226)) ([1741166](https://github.com/googleapis/java-bigquerystorage/commit/1741166d3aa6a3bab8dd8cb74b3be8f7b4ac4ac3))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.35.0 ([#2348](https://github.com/googleapis/java-bigquerystorage/issues/2348)) ([3395649](https://github.com/googleapis/java-bigquerystorage/commit/33956494008446fe194fed93cbc2136f4e9383be))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.21.0 ([#2361](https://github.com/googleapis/java-bigquerystorage/issues/2361)) ([95d4214](https://github.com/googleapis/java-bigquerystorage/commit/95d4214ae26468fa63fd101eeb0bb8d5ec656a75))
+* Update dependency com.google.truth:truth to v1.2.0 ([#2360](https://github.com/googleapis/java-bigquerystorage/issues/2360)) ([38a285f](https://github.com/googleapis/java-bigquerystorage/commit/38a285f33fa83d16637ec275d965e8f3ff880bd9))
+* Update dependency org.graalvm.buildtools:native-maven-plugin to v0.9.28 ([#2349](https://github.com/googleapis/java-bigquerystorage/issues/2349)) ([6910035](https://github.com/googleapis/java-bigquerystorage/commit/69100356eb0bb920fcffb7b4e92c74722e84f8b1))
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.10.1 ([#2350](https://github.com/googleapis/java-bigquerystorage/issues/2350)) ([91caf73](https://github.com/googleapis/java-bigquerystorage/commit/91caf73f1896553a2a3ba4c8109cbbb93ba47f34))
+
+## [2.47.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.46.0...v2.47.0) (2023-12-01)
+
+
+### Features
+
+* Adding CDC sample ([#2263](https://github.com/googleapis/java-bigquerystorage/issues/2263)) ([ba134e4](https://github.com/googleapis/java-bigquerystorage/commit/ba134e403f7696d5e797faf7c07ff817b90f1085))
+
+
+### Bug Fixes
+
+* An atempt to solve test failure in nightly build ([#2330](https://github.com/googleapis/java-bigquerystorage/issues/2330)) ([f77465e](https://github.com/googleapis/java-bigquerystorage/commit/f77465e094ca9b00fc2eb6882a69b9eb9dfd8edb))
+* Fix a test that is flaky ([#2340](https://github.com/googleapis/java-bigquerystorage/issues/2340)) ([cb6e2c9](https://github.com/googleapis/java-bigquerystorage/commit/cb6e2c97c854d89c2679d17a24f021a676f25039))
+* Fix the write api integration test ([#2333](https://github.com/googleapis/java-bigquerystorage/issues/2333)) ([a69bec9](https://github.com/googleapis/java-bigquerystorage/commit/a69bec9c017509ef3beb975e2b6d929c12420c0c))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.34.2 ([#2313](https://github.com/googleapis/java-bigquerystorage/issues/2313)) ([1e1b60c](https://github.com/googleapis/java-bigquerystorage/commit/1e1b60cbc036bd8ed48736e3c53a10bc3a76c821))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.20.0 ([#2336](https://github.com/googleapis/java-bigquerystorage/issues/2336)) ([6ada6c5](https://github.com/googleapis/java-bigquerystorage/commit/6ada6c5fd411576c2c27ab94e7ef47f7ba02629b))
+
+## [2.46.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.45.0...v2.46.0) (2023-11-15)
+
+
+### Features
+
+* Add integration tests with RetrySettings enabled. ([#2275](https://github.com/googleapis/java-bigquerystorage/issues/2275)) ([179193a](https://github.com/googleapis/java-bigquerystorage/commit/179193a18ba31c4c82946dc48671512fdac335c8))
+* Add new configuration for nightly retry-related tests. ([#2319](https://github.com/googleapis/java-bigquerystorage/issues/2319)) ([e78b841](https://github.com/googleapis/java-bigquerystorage/commit/e78b84151d1e7f9a4cfc6f252b6215fce4cec670))
+* Enable 20MB request limit, this feature is allowlist only. ([#2311](https://github.com/googleapis/java-bigquerystorage/issues/2311)) ([75c2552](https://github.com/googleapis/java-bigquerystorage/commit/75c2552a2ece47a8e14ad4932d4fcc36c8005cbe))
+
+
+### Bug Fixes
+
+* Add comment/documentation for setRetrySettings ([#2309](https://github.com/googleapis/java-bigquerystorage/issues/2309)) ([664b550](https://github.com/googleapis/java-bigquerystorage/commit/664b550258dbe6037972b4a94eb41acd254849c5))
+* Create next attempt after first attempt to initialize exponential backoff settings. ([#2316](https://github.com/googleapis/java-bigquerystorage/issues/2316)) ([e5884cc](https://github.com/googleapis/java-bigquerystorage/commit/e5884cc0a28a5b3fc6aab6854c6b435431524d42))
+* Enable request limit e2e test. ([#2320](https://github.com/googleapis/java-bigquerystorage/issues/2320)) ([9d8c368](https://github.com/googleapis/java-bigquerystorage/commit/9d8c36859d5dd39f2e5fad26b692aa95308b1f5e))
+
+
+### Dependencies
+
+* Update actions/github-script action to v7 ([#2317](https://github.com/googleapis/java-bigquerystorage/issues/2317)) ([f68064f](https://github.com/googleapis/java-bigquerystorage/commit/f68064f2991768656fdefdce7e089313ee0f1e7e))
+
+## [2.45.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.44.1...v2.45.0) (2023-11-07)
+
+
+### Features
+
+* Add support for proto3 optional tag ([#2295](https://github.com/googleapis/java-bigquerystorage/issues/2295)) ([bc88aa5](https://github.com/googleapis/java-bigquerystorage/commit/bc88aa57f55b2c3605cbb9c66f2e66daa695c20c))
+
+
+### Bug Fixes
+
+* Add native image configurations for com.google.rpc classes ([#2305](https://github.com/googleapis/java-bigquerystorage/issues/2305)) ([3a771fd](https://github.com/googleapis/java-bigquerystorage/commit/3a771fded7c0f5243be1e4c76e7229f15eda95fa))
+* **bigquery:** Make exponential backoff retry second based ([#2212](https://github.com/googleapis/java-bigquerystorage/issues/2212)) ([eff4a09](https://github.com/googleapis/java-bigquerystorage/commit/eff4a09aece936dfee7fff46e7bd031ec780ab96))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.34.0 ([#2291](https://github.com/googleapis/java-bigquerystorage/issues/2291)) ([5377f79](https://github.com/googleapis/java-bigquerystorage/commit/5377f79300e38b192d36fe2e4ee42b34b8173aa1))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.34.1 ([#2308](https://github.com/googleapis/java-bigquerystorage/issues/2308)) ([6aee78f](https://github.com/googleapis/java-bigquerystorage/commit/6aee78f9d0f1918056d8fd2dd74bd0934733d496))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.19.0 ([#2300](https://github.com/googleapis/java-bigquerystorage/issues/2300)) ([1ddd11c](https://github.com/googleapis/java-bigquerystorage/commit/1ddd11c8910df6fc277d7bdd6856f85695a43009))
+
+## [2.44.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.44.0...v2.44.1) (2023-10-25)
+
+
+### Dependencies
+
+* Update actions/checkout digest to b4ffde6 ([#2281](https://github.com/googleapis/java-bigquerystorage/issues/2281)) ([8c78515](https://github.com/googleapis/java-bigquerystorage/commit/8c78515979e22a802e70def26dafa9512d785268))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.33.2 ([#2274](https://github.com/googleapis/java-bigquerystorage/issues/2274)) ([d55ce5e](https://github.com/googleapis/java-bigquerystorage/commit/d55ce5edd6f728cfce7ce0d59cf29d6e9d14d80a))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.18.0 ([#2282](https://github.com/googleapis/java-bigquerystorage/issues/2282)) ([12f3fce](https://github.com/googleapis/java-bigquerystorage/commit/12f3fce59ab95b6b0319c080b86916586e35ce00))
+* Update dependency org.json:json to v20231013 - abandoned ([#2276](https://github.com/googleapis/java-bigquerystorage/issues/2276)) ([0c5a60b](https://github.com/googleapis/java-bigquerystorage/commit/0c5a60b9ead20cbceda08805229ad6fa3f91c7e3))
+* Update dependency org.json:json to v20231013 [security] ([#2278](https://github.com/googleapis/java-bigquerystorage/issues/2278)) ([2b7887d](https://github.com/googleapis/java-bigquerystorage/commit/2b7887d0bab1e0534f1616f3b64a28d7a57518d6))
+
+## [2.44.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.43.0...v2.44.0) (2023-10-10)
+
+
+### Features
+
+* Add in-stream retry logic for retryable and quota errors ([#2243](https://github.com/googleapis/java-bigquerystorage/issues/2243)) ([6435a04](https://github.com/googleapis/java-bigquerystorage/commit/6435a0491827779b01dd0c3cf184f6578bf33f3e))
+
+
+### Dependencies
+
+* Bumping google-cloud-shared-config to v1.5.8 ([#2269](https://github.com/googleapis/java-bigquerystorage/issues/2269)) ([fb6e38d](https://github.com/googleapis/java-bigquerystorage/commit/fb6e38d575800ab4c7c16ae0545fdbd91ea358bd))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.33.1 ([#2258](https://github.com/googleapis/java-bigquerystorage/issues/2258)) ([f6cbea2](https://github.com/googleapis/java-bigquerystorage/commit/f6cbea204b5a414d8e2932ad2fd194996685ec39))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.17.0 ([#2266](https://github.com/googleapis/java-bigquerystorage/issues/2266)) ([827aaf7](https://github.com/googleapis/java-bigquerystorage/commit/827aaf70bc19de8d67d0f386085877eb5d2fbced))
+
+## [2.43.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.42.0...v2.43.0) (2023-09-28)
+
+
+### Features
+
+* Add sample code about default missingValueInterpretation ([#2249](https://github.com/googleapis/java-bigquerystorage/issues/2249)) ([ebedcc0](https://github.com/googleapis/java-bigquerystorage/commit/ebedcc07e400429fc6b80a4ad0543fe25eef970d))
+
+
+### Dependencies
+
+* Update actions/checkout digest to 8ade135 ([#2251](https://github.com/googleapis/java-bigquerystorage/issues/2251)) ([182e050](https://github.com/googleapis/java-bigquerystorage/commit/182e050d9929f9fb58694e76625b03bb54f67efe))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.32.0 ([#2246](https://github.com/googleapis/java-bigquerystorage/issues/2246)) ([893fcb9](https://github.com/googleapis/java-bigquerystorage/commit/893fcb9f6c4b2eb9814ea2597fe9aae95367b4cd))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.33.0 ([#2255](https://github.com/googleapis/java-bigquerystorage/issues/2255)) ([7689dee](https://github.com/googleapis/java-bigquerystorage/commit/7689dee5f70a144efb9eb9be1a058d11d7e3c05d))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.16.1 ([#2250](https://github.com/googleapis/java-bigquerystorage/issues/2250)) ([43d96d2](https://github.com/googleapis/java-bigquerystorage/commit/43d96d288207a607d168f604f190fb28b5eab132))
+* Update dependency org.apache.arrow:arrow-vector to v13 ([#2236](https://github.com/googleapis/java-bigquerystorage/issues/2236)) ([afde7ce](https://github.com/googleapis/java-bigquerystorage/commit/afde7ce1f48f1c7cdd4b06d4aabdaac9d367aa50))
+* Update dependency org.apache.avro:avro to v1.11.3 ([#2252](https://github.com/googleapis/java-bigquerystorage/issues/2252)) ([10b615b](https://github.com/googleapis/java-bigquerystorage/commit/10b615b49ba8889f7d051ac03d4751ace82b6823))
+
+## [2.42.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.41.1...v2.42.0) (2023-09-13)
+
+
+### Features
+
+* Add default_missing_value_interpretation field; indicate KMS_SERVICE_ERROR is retryable ([#2229](https://github.com/googleapis/java-bigquerystorage/issues/2229)) ([df686d6](https://github.com/googleapis/java-bigquerystorage/commit/df686d6ac51d182b52dbd1f5a69585bb605e9b94))
+* Expose settings to configure default missing value interpretation. ([#2230](https://github.com/googleapis/java-bigquerystorage/issues/2230)) ([dc5ed73](https://github.com/googleapis/java-bigquerystorage/commit/dc5ed73f513a77939286d3c129fc26f039c23d5c))
+
+
+### Bug Fixes
+
+* Populate final stauts to initial request during connection shutdown ([#2228](https://github.com/googleapis/java-bigquerystorage/issues/2228)) ([9b9b5c0](https://github.com/googleapis/java-bigquerystorage/commit/9b9b5c09d7bc458493338eced8527a168fff0129))
+
+
+### Dependencies
+
+* Update actions/checkout action to v4 ([#2237](https://github.com/googleapis/java-bigquerystorage/issues/2237)) ([d5d739f](https://github.com/googleapis/java-bigquerystorage/commit/d5d739fe7624b74584c1272f13635f728fdf53d2))
+* Update arrow.version to v13 ([#2234](https://github.com/googleapis/java-bigquerystorage/issues/2234)) ([ac45c2a](https://github.com/googleapis/java-bigquerystorage/commit/ac45c2aa189fa0cba05f88486f44d3b1d6f761ca))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.31.1 ([#2225](https://github.com/googleapis/java-bigquerystorage/issues/2225)) ([5144c5a](https://github.com/googleapis/java-bigquerystorage/commit/5144c5ad1e107f96d2003064cd2823982ac0e360))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.31.2 ([#2241](https://github.com/googleapis/java-bigquerystorage/issues/2241)) ([91e3730](https://github.com/googleapis/java-bigquerystorage/commit/91e37303f57ec2e211a375652a8eca8b7d39d1e6))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.15.0 ([#2239](https://github.com/googleapis/java-bigquerystorage/issues/2239)) ([5352a7d](https://github.com/googleapis/java-bigquerystorage/commit/5352a7d7e1d7b01a33936adf7e204c5f49f0c230))
+* Update dependency org.apache.arrow:arrow-memory-netty to v13 ([#2235](https://github.com/googleapis/java-bigquerystorage/issues/2235)) ([7e50bef](https://github.com/googleapis/java-bigquerystorage/commit/7e50bef3fa3c92c94aeefedca0ae87c5132bb1be))
+
+## [2.41.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.41.0...v2.41.1) (2023-08-08)
+
+
+### Bug Fixes
+
+* Remove FAILED_PRECONDITION from connection retry code ([#2214](https://github.com/googleapis/java-bigquerystorage/issues/2214)) ([b8e8a24](https://github.com/googleapis/java-bigquerystorage/commit/b8e8a2489fbd68b24c39ca2d1d90cbb9fc3be715))
+* Remove pre launch comments from enableConnectionPool ([#2215](https://github.com/googleapis/java-bigquerystorage/issues/2215)) ([fb72c18](https://github.com/googleapis/java-bigquerystorage/commit/fb72c181cc07e8870c100bb63a334e3a6e3d1fa3))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.31.0 ([#2206](https://github.com/googleapis/java-bigquerystorage/issues/2206)) ([7d935f0](https://github.com/googleapis/java-bigquerystorage/commit/7d935f094ec679fb1c72541340625c6d05580496))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.14.0 ([#2218](https://github.com/googleapis/java-bigquerystorage/issues/2218)) ([4d51a01](https://github.com/googleapis/java-bigquerystorage/commit/4d51a016fb9e2cf65f3b9f490cf0f6802d8ec5de))
+
+## [2.41.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.40.1...v2.41.0) (2023-07-24)
+
+
+### Features
+
+* Add enable connection pool to sample ([#2192](https://github.com/googleapis/java-bigquerystorage/issues/2192)) ([c2642de](https://github.com/googleapis/java-bigquerystorage/commit/c2642de07556381490c92eedf25b17d36218c2f8))
+* Support gRPC Compression ([#2197](https://github.com/googleapis/java-bigquerystorage/issues/2197)) ([642e345](https://github.com/googleapis/java-bigquerystorage/commit/642e3452f3b490d6d85b61dfd1a1bb82e175d565))
+
+
+### Bug Fixes
+
+* Reduce StreamConnection visibility since it is not supposed to be public. ([#2196](https://github.com/googleapis/java-bigquerystorage/issues/2196)) ([addbcdf](https://github.com/googleapis/java-bigquerystorage/commit/addbcdf04e330a76e29e41b1e8f4ca04ad96ed00))
+* Update SchemaAwareStreamWriter comment to down recommend it. ([#2195](https://github.com/googleapis/java-bigquerystorage/issues/2195)) ([4897c05](https://github.com/googleapis/java-bigquerystorage/commit/4897c05aeb7cddff20fb530d64034cc143c24d91))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.30.1 ([#2191](https://github.com/googleapis/java-bigquerystorage/issues/2191)) ([da4f2e5](https://github.com/googleapis/java-bigquerystorage/commit/da4f2e5e801daad1136eb4a3e753e486cef194e7))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.13.1 ([#2199](https://github.com/googleapis/java-bigquerystorage/issues/2199)) ([fc8f4fb](https://github.com/googleapis/java-bigquerystorage/commit/fc8f4fbae333db08ae21730a61a8993c3e1f9897))
+
+## [2.40.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.40.0...v2.40.1) (2023-07-18)
+
+
+### Dependencies
+
+* Remove auto value annotation version ([#2188](https://github.com/googleapis/java-bigquerystorage/issues/2188)) ([9186f04](https://github.com/googleapis/java-bigquerystorage/commit/9186f04eefff3a483d39c4c5db7aeb3e213ed4ca))
+
+## [2.40.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.39.1...v2.40.0) (2023-07-17)
+
+
+### Features
+
+* Add ResourceExhausted to retryable error for Write API unary calls ([#2178](https://github.com/googleapis/java-bigquerystorage/issues/2178)) ([d9b526a](https://github.com/googleapis/java-bigquerystorage/commit/d9b526a2e4109ef5ed95fb74373f2f13b06c7c54))
+* Improve json to proto conversion by caching schema ([#2179](https://github.com/googleapis/java-bigquerystorage/issues/2179)) ([afc550a](https://github.com/googleapis/java-bigquerystorage/commit/afc550aeacb0e3f26440eeb70d2cebbf65922c07))
+
+
+### Bug Fixes
+
+* Interpret Integer and Float values for TIMESTAMP as microseconds ([#2175](https://github.com/googleapis/java-bigquerystorage/issues/2175)) ([e5bb5d0](https://github.com/googleapis/java-bigquerystorage/commit/e5bb5d099ea0272c4bd447b7f8fef5207c14ffc5))
+* Support DATETIME field that has a space between date and time and has only date ([#2176](https://github.com/googleapis/java-bigquerystorage/issues/2176)) ([494ce85](https://github.com/googleapis/java-bigquerystorage/commit/494ce8513e8925b4330a2bf45641ba38db625c1d))
+
+
+### Dependencies
+
+* Update dependency com.google.auto.value:auto-value to v1.10.2 ([#2171](https://github.com/googleapis/java-bigquerystorage/issues/2171)) ([721908d](https://github.com/googleapis/java-bigquerystorage/commit/721908d412f1d82aff9aed8edcf727fc5b1bf950))
+* Update dependency com.google.auto.value:auto-value-annotations to v1.10.2 ([#2172](https://github.com/googleapis/java-bigquerystorage/issues/2172)) ([8a51fae](https://github.com/googleapis/java-bigquerystorage/commit/8a51fae180ced3b362acc350999157d3d6e0da6a))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.29.0 ([#2168](https://github.com/googleapis/java-bigquerystorage/issues/2168)) ([50ca432](https://github.com/googleapis/java-bigquerystorage/commit/50ca432854851f7cc89cb50a327d9641000b81ee))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.30.0 ([#2184](https://github.com/googleapis/java-bigquerystorage/issues/2184)) ([87f93a9](https://github.com/googleapis/java-bigquerystorage/commit/87f93a921c62cd71808cddc35382bbaabb7da54b))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.13.0 ([#2180](https://github.com/googleapis/java-bigquerystorage/issues/2180)) ([7ce19e7](https://github.com/googleapis/java-bigquerystorage/commit/7ce19e7a4ca47df9590c1023abcc459248b1fec2))
+* Update dependency org.apache.avro:avro to v1.11.2 ([#2177](https://github.com/googleapis/java-bigquerystorage/issues/2177)) ([75ce0b5](https://github.com/googleapis/java-bigquerystorage/commit/75ce0b5d7009bbb47b91c222390cfe864b8bd84e))
+
+## [2.39.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.39.0...v2.39.1) (2023-06-22)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.27.1 ([#2150](https://github.com/googleapis/java-bigquerystorage/issues/2150)) ([da736a6](https://github.com/googleapis/java-bigquerystorage/commit/da736a65378d007930e0afb9246d0f53bb41e0c3))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.28.0 ([#2163](https://github.com/googleapis/java-bigquerystorage/issues/2163)) ([088219e](https://github.com/googleapis/java-bigquerystorage/commit/088219effe0528df7c998c6e71adc62025d3b204))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.12.0 ([#2160](https://github.com/googleapis/java-bigquerystorage/issues/2160)) ([069165a](https://github.com/googleapis/java-bigquerystorage/commit/069165aa9e3644ae84bcffa501bee175623ee9b3))
+* Update dependency com.google.http-client:google-http-client to v1.43.3 ([#2156](https://github.com/googleapis/java-bigquerystorage/issues/2156)) ([814e826](https://github.com/googleapis/java-bigquerystorage/commit/814e8261689351bc88202be37975e78415192de5))
+* Update dependency com.google.truth:truth to v1.1.5 ([#2153](https://github.com/googleapis/java-bigquerystorage/issues/2153)) ([bf9f1da](https://github.com/googleapis/java-bigquerystorage/commit/bf9f1da8a3de27a775e7c3a58076dd06b026c459))
+* Update dependency org.json:json to v20230618 ([#2154](https://github.com/googleapis/java-bigquerystorage/issues/2154)) ([8e7b42a](https://github.com/googleapis/java-bigquerystorage/commit/8e7b42aeac292b3291a505e2a456499553951a8f))
+
+## [2.39.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.38.0...v2.39.0) (2023-06-22)
+
+
+### Features
+
+* Add estimated physical file sizes to ReadAPI v1 ([#2157](https://github.com/googleapis/java-bigquerystorage/issues/2157)) ([fbf6bf6](https://github.com/googleapis/java-bigquerystorage/commit/fbf6bf66567644dd46a5062507f75951800e10a9))
+
+## [2.38.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.37.2...v2.38.0) (2023-06-13)
+
+
+### Features
+
+* Add storage error codes for KMS ([5d2d3c6](https://github.com/googleapis/java-bigquerystorage/commit/5d2d3c6fc6be14a3cb79cf0ce0e82b48699a97c4))
+* Add table sampling to ReadAPI v1 ([5d2d3c6](https://github.com/googleapis/java-bigquerystorage/commit/5d2d3c6fc6be14a3cb79cf0ce0e82b48699a97c4))
+
+
+### Bug Fixes
+
+* Update copyright year in Java license header replacement template ([#1810](https://github.com/googleapis/java-bigquerystorage/issues/1810)) ([#2138](https://github.com/googleapis/java-bigquerystorage/issues/2138)) ([af99efe](https://github.com/googleapis/java-bigquerystorage/commit/af99efe938302e0d09c98308ad081244d9c5633e))
+
+
+### Dependencies
+
+* Update arrow.version to v12.0.1 ([#2143](https://github.com/googleapis/java-bigquerystorage/issues/2143)) ([7fb618e](https://github.com/googleapis/java-bigquerystorage/commit/7fb618e16b6a06278d511e771b8b46ebf4658aa9))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.27.0 ([#2131](https://github.com/googleapis/java-bigquerystorage/issues/2131)) ([e459348](https://github.com/googleapis/java-bigquerystorage/commit/e4593486959e86808255517861361805dc8769aa))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.11.0 ([#2137](https://github.com/googleapis/java-bigquerystorage/issues/2137)) ([5fe7cdb](https://github.com/googleapis/java-bigquerystorage/commit/5fe7cdb6c9b6899a13b0fdde0a5a436d68a509e2))
+* Update dependency org.apache.arrow:arrow-memory-netty to v12.0.1 ([#2144](https://github.com/googleapis/java-bigquerystorage/issues/2144)) ([e738bff](https://github.com/googleapis/java-bigquerystorage/commit/e738bff88e3efaf0f6beb5f2d93057a175671d3e))
+* Update dependency org.apache.arrow:arrow-vector to v12.0.1 ([#2145](https://github.com/googleapis/java-bigquerystorage/issues/2145)) ([34dfda6](https://github.com/googleapis/java-bigquerystorage/commit/34dfda6aeec700c0722ad559e71e85bdedd04bfb))
+* Update dependency org.mockito:mockito-core to v3.12.4 ([#2146](https://github.com/googleapis/java-bigquerystorage/issues/2146)) ([1434fc0](https://github.com/googleapis/java-bigquerystorage/commit/1434fc0b995f5d6c8039acca8ca530e9d11f490b))
+
+## [2.37.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.37.1...v2.37.2) (2023-05-30)
+
+
+### Bug Fixes
+
+* Pass the parameter value of enableConnectionPool instead of true always ([#2096](https://github.com/googleapis/java-bigquerystorage/issues/2096)) ([253678d](https://github.com/googleapis/java-bigquerystorage/commit/253678df630c717fbcf7018b3245aa56b5f22660))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.26.0 ([#2114](https://github.com/googleapis/java-bigquerystorage/issues/2114)) ([8b44534](https://github.com/googleapis/java-bigquerystorage/commit/8b4453476b17dcbb10faaa52c6a2b06506d89d62))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.26.1 ([#2128](https://github.com/googleapis/java-bigquerystorage/issues/2128)) ([62afd46](https://github.com/googleapis/java-bigquerystorage/commit/62afd46bb4cad09886c49bac88a2052c8754f8fe))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.10.1 ([#2121](https://github.com/googleapis/java-bigquerystorage/issues/2121)) ([3fabc5d](https://github.com/googleapis/java-bigquerystorage/commit/3fabc5d467becd3d9b816f9545e8a1e6dd09f682))
+* Update dependency com.google.http-client:google-http-client to v1.43.2 ([#2109](https://github.com/googleapis/java-bigquerystorage/issues/2109)) ([0d57daf](https://github.com/googleapis/java-bigquerystorage/commit/0d57daff0d113089ba1957753febeed92024e4c2))
+* Update dependency com.google.truth:truth to v1.1.4 ([#2126](https://github.com/googleapis/java-bigquerystorage/issues/2126)) ([a0be7ad](https://github.com/googleapis/java-bigquerystorage/commit/a0be7ad59b1604972b190befe2e4befd2e2c6431))
+
+## [2.37.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.37.0...v2.37.1) (2023-05-25)
+
+
+### Bug Fixes
+
+* Bug fix for streamWriter & jsonStreamWriter ([#2122](https://github.com/googleapis/java-bigquerystorage/issues/2122)) ([36964a3](https://github.com/googleapis/java-bigquerystorage/commit/36964a39e0f2a7ede8c55c43313a32922c06fe15))
+
+## [2.37.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.36.1...v2.37.0) (2023-05-12)
+
+
+### Features
+
+* Adding setting KeepAlive to JsonWriter sample ([#2104](https://github.com/googleapis/java-bigquerystorage/issues/2104)) ([a5b95c1](https://github.com/googleapis/java-bigquerystorage/commit/a5b95c10df4ce34d542d3a3e9227522817538d10))
+* Improve client settings ([#2097](https://github.com/googleapis/java-bigquerystorage/issues/2097)) ([4fc2fac](https://github.com/googleapis/java-bigquerystorage/commit/4fc2fac3cc30d4d6f288c82cf1446d19fab95712))
+
+
+### Dependencies
+
+* Update arrow.version to v12 (major) ([#2099](https://github.com/googleapis/java-bigquerystorage/issues/2099)) ([e0c09d5](https://github.com/googleapis/java-bigquerystorage/commit/e0c09d57fdb80e81c3f4047cb845033a8bbe9542))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.25.0 ([#2094](https://github.com/googleapis/java-bigquerystorage/issues/2094)) ([6ca6677](https://github.com/googleapis/java-bigquerystorage/commit/6ca667703f480d50ec009af0b27c651d63bda0b5))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.9.0 ([#2108](https://github.com/googleapis/java-bigquerystorage/issues/2108)) ([af1001b](https://github.com/googleapis/java-bigquerystorage/commit/af1001b5f49e04e5d02057376c98363dbf6f9b9c))
+* Update dependency org.apache.arrow:arrow-memory-netty to v12 ([#2100](https://github.com/googleapis/java-bigquerystorage/issues/2100)) ([df7bda4](https://github.com/googleapis/java-bigquerystorage/commit/df7bda4da70c18fa1565fb261cf5e12820d51f62))
+* Update dependency org.apache.arrow:arrow-vector to v12 ([#2101](https://github.com/googleapis/java-bigquerystorage/issues/2101)) ([25c2682](https://github.com/googleapis/java-bigquerystorage/commit/25c26823ed07b9a77deec8e09a934f68b58813c2))
+
+## [2.36.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.36.0...v2.36.1) (2023-04-27)
+
+
+### Bug Fixes
+
+* Remove teh 30 minutes wait trying to refresh schema. Customers s… ([#2088](https://github.com/googleapis/java-bigquerystorage/issues/2088)) ([3ec294f](https://github.com/googleapis/java-bigquerystorage/commit/3ec294f4b7db34bb44d862224189d8fc42821b7d))
+
+## [2.36.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.35.0...v2.36.0) (2023-04-26)
+
+
+### Features
+
+* Adding ExecutorProvider support while creating BigQueryReadClient ([#2072](https://github.com/googleapis/java-bigquerystorage/issues/2072)) ([9221e18](https://github.com/googleapis/java-bigquerystorage/commit/9221e1896f7af6c2dd23e92f6ea13d86c3368600))
+
+
+### Bug Fixes
+
+* Reduce timeout of waiting in queue from 15 minutes to 5 minutes and rephrase the log a bit ([#2084](https://github.com/googleapis/java-bigquerystorage/issues/2084)) ([fe25f38](https://github.com/googleapis/java-bigquerystorage/commit/fe25f38215ffaacd2cbe4af74c0de9ea7c053d91))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.24.5 ([#2081](https://github.com/googleapis/java-bigquerystorage/issues/2081)) ([362568d](https://github.com/googleapis/java-bigquerystorage/commit/362568d4d8e1cf5e1e2a1bbfe3513d440f9fb99f))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.8.0 ([#2087](https://github.com/googleapis/java-bigquerystorage/issues/2087)) ([1f79a96](https://github.com/googleapis/java-bigquerystorage/commit/1f79a9691ebb5f22077534fb7d266df830cb7ec2))
+
+## [2.35.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.34.2...v2.35.0) (2023-04-13)
+
+
+### Features
+
+* Add public api to stream writer to set the maximum wait time ([#2066](https://github.com/googleapis/java-bigquerystorage/issues/2066)) ([1e9a8ca](https://github.com/googleapis/java-bigquerystorage/commit/1e9a8cac19c3748515ebff7990d02fd576c7dd23))
+* Add sample about processing permanent writer failure ([#2057](https://github.com/googleapis/java-bigquerystorage/issues/2057)) ([8eda934](https://github.com/googleapis/java-bigquerystorage/commit/8eda9347a90f59ddcf99501f8b71ba17c5f3a143))
+* Add schema aware stream writer ([#2048](https://github.com/googleapis/java-bigquerystorage/issues/2048)) ([ad136b9](https://github.com/googleapis/java-bigquerystorage/commit/ad136b9fa25e774a33d02fc3a82a76fb1152b5c5))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.24.4 ([#2070](https://github.com/googleapis/java-bigquerystorage/issues/2070)) ([ce9e962](https://github.com/googleapis/java-bigquerystorage/commit/ce9e96209cbafd5a4daa981c5e5252272dc9811a))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.7.0 ([#2077](https://github.com/googleapis/java-bigquerystorage/issues/2077)) ([b5ea788](https://github.com/googleapis/java-bigquerystorage/commit/b5ea788df26122dcdf3c7104658cc8fd35a38f72))
+
+## [2.34.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.34.1...v2.34.2) (2023-03-30)
+
+
+### Bug Fixes
+
+* Correct AppendSerializtionError typo ([#2037](https://github.com/googleapis/java-bigquerystorage/issues/2037)) ([e67e913](https://github.com/googleapis/java-bigquerystorage/commit/e67e913f34fda4f4cc523c0248e5344232c0b736))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.24.0 ([#2054](https://github.com/googleapis/java-bigquerystorage/issues/2054)) ([e3156c7](https://github.com/googleapis/java-bigquerystorage/commit/e3156c7b525f7df2f3fe756f096e7fb1352fae8e))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.24.1 ([#2056](https://github.com/googleapis/java-bigquerystorage/issues/2056)) ([a989ac6](https://github.com/googleapis/java-bigquerystorage/commit/a989ac63d813cc98dcc13200a950fe3edad10bdf))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.24.3 ([#2058](https://github.com/googleapis/java-bigquerystorage/issues/2058)) ([9346667](https://github.com/googleapis/java-bigquerystorage/commit/934666737a92ec3220c6a186cc1af0f1adabb00c))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.6.0 ([#2063](https://github.com/googleapis/java-bigquerystorage/issues/2063)) ([965de7b](https://github.com/googleapis/java-bigquerystorage/commit/965de7bf78884cca30e6e6d672b74d734bda840d))
+
+## [2.34.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.34.0...v2.34.1) (2023-03-21)
+
+
+### Bug Fixes
+
+* Add service_yaml_parameters to `java_gapic_library` targets ([#2034](https://github.com/googleapis/java-bigquerystorage/issues/2034)) ([8dae87c](https://github.com/googleapis/java-bigquerystorage/commit/8dae87cff06c7d08b9d597be9c66de570739abf4))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.23.2 ([#2029](https://github.com/googleapis/java-bigquerystorage/issues/2029)) ([e9c0152](https://github.com/googleapis/java-bigquerystorage/commit/e9c0152c2b098d7fb2d1de4d535d636a3ac9f90e))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.5.0 ([#2050](https://github.com/googleapis/java-bigquerystorage/issues/2050)) ([349092f](https://github.com/googleapis/java-bigquerystorage/commit/349092f28f6017b1df5b325e9a9036c311e70546))
+* Update dependency com.google.http-client:google-http-client to v1.43.1 ([#2038](https://github.com/googleapis/java-bigquerystorage/issues/2038)) ([5e865c9](https://github.com/googleapis/java-bigquerystorage/commit/5e865c9b3779f0d20080eead241f1b5858156880))
+
+## [2.34.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.33.1...v2.34.0) (2023-03-10)
+
+
+### Features
+
+* Add routing header for multiplexed connection ([#2035](https://github.com/googleapis/java-bigquerystorage/issues/2035)) ([1f2752f](https://github.com/googleapis/java-bigquerystorage/commit/1f2752f3988ac87dca50813d69d0d519a2356a30))
+
+
+### Bug Fixes
+
+* **bigdecimal:** Convert BigDecimal to BigNumeric instead of Numeric ([#2031](https://github.com/googleapis/java-bigquerystorage/issues/2031)) ([e0f7e34](https://github.com/googleapis/java-bigquerystorage/commit/e0f7e34ca7f7c60279985afec46f780e0acc9a9e)), closes [#2013](https://github.com/googleapis/java-bigquerystorage/issues/2013)
+
+## [2.33.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.33.0...v2.33.1) (2023-03-02)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.23.0 ([#2012](https://github.com/googleapis/java-bigquerystorage/issues/2012)) ([0651aa6](https://github.com/googleapis/java-bigquerystorage/commit/0651aa6f3e83da73da77ae2e9376f6203cd36338))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.4.0 ([#2024](https://github.com/googleapis/java-bigquerystorage/issues/2024)) ([9135769](https://github.com/googleapis/java-bigquerystorage/commit/91357697f61d3026ae3fb14605e9e3ee94b351d1))
+* Update dependency com.google.http-client:google-http-client to v1.43.0 ([#2018](https://github.com/googleapis/java-bigquerystorage/issues/2018)) ([6bccd9d](https://github.com/googleapis/java-bigquerystorage/commit/6bccd9d21698fa94645bfdda2e7d4e70af612d6b))
+* Update dependency org.json:json to v20230227 ([#2020](https://github.com/googleapis/java-bigquerystorage/issues/2020)) ([6d6bb76](https://github.com/googleapis/java-bigquerystorage/commit/6d6bb76188d4be6beec88c54946d6f9515962c55))
+
+## [2.33.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.32.1...v2.33.0) (2023-03-01)
+
+
+### Features
+
+* Add header back to the client ([#2016](https://github.com/googleapis/java-bigquerystorage/issues/2016)) ([de00447](https://github.com/googleapis/java-bigquerystorage/commit/de00447958e5939d7be9d0f7da02323aabbfed8c))
+
+
+### Bug Fixes
+
+* Add client shutdown if request waiting in request queue for too long. ([#2017](https://github.com/googleapis/java-bigquerystorage/issues/2017)) ([91da88b](https://github.com/googleapis/java-bigquerystorage/commit/91da88b0ed914bf55111dd9cef2a3fc4b27c3443))
+* Allow StreamWriter settings to override passed in BQ client setting ([#2001](https://github.com/googleapis/java-bigquerystorage/issues/2001)) ([66db8fe](https://github.com/googleapis/java-bigquerystorage/commit/66db8fed26474076fb5aaca5044d39e11f6ef28d))
+* Catch uncaught exception from append loop and add expoential retry to reconnection ([#2015](https://github.com/googleapis/java-bigquerystorage/issues/2015)) ([35db0fb](https://github.com/googleapis/java-bigquerystorage/commit/35db0fb38a929a8f3e4db30ee173ce5a4af43d64))
+* Remove write_location header pending discussion ([#2021](https://github.com/googleapis/java-bigquerystorage/issues/2021)) ([0941d43](https://github.com/googleapis/java-bigquerystorage/commit/0941d4363daf782e0be81c11fdf6a2fe0ff4d7ac))
+
+## [2.32.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.32.0...v2.32.1) (2023-02-22)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.22.0 ([#1991](https://github.com/googleapis/java-bigquerystorage/issues/1991)) ([0684e7c](https://github.com/googleapis/java-bigquerystorage/commit/0684e7cf0f0b4d8ff343aee29f252489fe6c1ee7))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.3.0 ([#2003](https://github.com/googleapis/java-bigquerystorage/issues/2003)) ([d146bec](https://github.com/googleapis/java-bigquerystorage/commit/d146becd5bf1022a4259c027a5e9b8db262170ea))
+
+## [2.32.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.31.1...v2.32.0) (2023-02-21)
+
+
+### Features
+
+* Add default_value_expression to TableFieldSchema ([#1988](https://github.com/googleapis/java-bigquerystorage/issues/1988)) ([89c767f](https://github.com/googleapis/java-bigquerystorage/commit/89c767f059ead3ce30842a478e395ac657f4b4ef))
+* Add functions to set missing value map in the stream writers ([#1966](https://github.com/googleapis/java-bigquerystorage/issues/1966)) ([98d7e44](https://github.com/googleapis/java-bigquerystorage/commit/98d7e446b75aba02ce27cdcb5e835c3fd0f3ad54))
+
+
+### Bug Fixes
+
+* Extra logging for investigation of the stuck case. ([#1999](https://github.com/googleapis/java-bigquerystorage/issues/1999)) ([e6ee13a](https://github.com/googleapis/java-bigquerystorage/commit/e6ee13a70304c2278d6b7a94dc19049a2b786a6e))
+
+## [2.31.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.31.0...v2.31.1) (2023-02-14)
+
+
+### Bug Fixes
+
+* Refactor only, add StreamWriter to AppendRowsRequestResponse ([#1981](https://github.com/googleapis/java-bigquerystorage/issues/1981)) ([da06a46](https://github.com/googleapis/java-bigquerystorage/commit/da06a4623e89b5f3caf90f85dd87d8538fc7d312))
+* Support ByteString values on repeated fields ([#1996](https://github.com/googleapis/java-bigquerystorage/issues/1996)) ([0263b00](https://github.com/googleapis/java-bigquerystorage/commit/0263b0054fbb7d9f49157f507cfe11c5b5816b07))
+
+## [2.31.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.30.0...v2.31.0) (2023-02-08)
+
+
+### Features
+
+* Add isDone to JsonWriter to indicate a JsonWriter is no longer usable and needs to be recreated. ([#1978](https://github.com/googleapis/java-bigquerystorage/issues/1978)) ([dc07ed8](https://github.com/googleapis/java-bigquerystorage/commit/dc07ed84778028f149cab3883af9bb9a7929efd1))
+* Add isUserClosed to indicate that user explicitly closed the StreamWriter ([#1983](https://github.com/googleapis/java-bigquerystorage/issues/1983)) ([abd6627](https://github.com/googleapis/java-bigquerystorage/commit/abd66274abca2315739c1b388dd363e107baad85))
+
+
+### Dependencies
+
+* Update arrow.version to v11 (major) ([#1961](https://github.com/googleapis/java-bigquerystorage/issues/1961)) ([c13ab23](https://github.com/googleapis/java-bigquerystorage/commit/c13ab23a96d72d5087653ebaf0a0635863a526a9))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.21.0 ([#1956](https://github.com/googleapis/java-bigquerystorage/issues/1956)) ([6a1d783](https://github.com/googleapis/java-bigquerystorage/commit/6a1d783b80bdd0e1846ee667e2a15d41e3f6980f))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.2.0 ([#1974](https://github.com/googleapis/java-bigquerystorage/issues/1974)) ([8e2c1e3](https://github.com/googleapis/java-bigquerystorage/commit/8e2c1e326d6a65ba814ef826cfcb98c58395f01f))
+* Update dependency org.apache.arrow:arrow-memory-netty to v11 ([#1962](https://github.com/googleapis/java-bigquerystorage/issues/1962)) ([48abc75](https://github.com/googleapis/java-bigquerystorage/commit/48abc75cdd2c372751790c197b83cf3aa59f1055))
+* Update dependency org.apache.arrow:arrow-vector to v11 ([#1963](https://github.com/googleapis/java-bigquerystorage/issues/1963)) ([e872723](https://github.com/googleapis/java-bigquerystorage/commit/e87272323a0267771f3ffbc857fbaf06c6656f90))
+
+## [2.30.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.29.0...v2.30.0) (2023-02-06)
+
+
+### Features
+
+* Add userClose flag back to StreamWriter ([#1973](https://github.com/googleapis/java-bigquerystorage/issues/1973)) ([4b51acd](https://github.com/googleapis/java-bigquerystorage/commit/4b51acd49292d99e1c3cd670bec695b8bcd3b5c4))
+
+
+### Bug Fixes
+
+* Close stream connection before each retry ([#1975](https://github.com/googleapis/java-bigquerystorage/issues/1975)) ([54e9bb9](https://github.com/googleapis/java-bigquerystorage/commit/54e9bb9116eb9781b6f2266f98de4d3853a469b8))
+* Improve ConnectionWorker fine logging ([#1972](https://github.com/googleapis/java-bigquerystorage/issues/1972)) ([812bcf1](https://github.com/googleapis/java-bigquerystorage/commit/812bcf16efdc7a1797435f0b87430c35f27f7245))
+
+## [2.29.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.28.4...v2.29.0) (2023-02-01)
+
+
+### Features
+
+* Add timeout to inflight queue waiting ([#1957](https://github.com/googleapis/java-bigquerystorage/issues/1957)) ([3159b12](https://github.com/googleapis/java-bigquerystorage/commit/3159b120e5cd388cf9776a1fa928a3e6ae105d9d))
+* Allow java client to handle schema change during same stream name ([#1964](https://github.com/googleapis/java-bigquerystorage/issues/1964)) ([305f71e](https://github.com/googleapis/java-bigquerystorage/commit/305f71ee4b274df58388fc3000e9f5da9fc908e1))
+
+
+### Bug Fixes
+
+* At connection level, retry for internal errors ([#1965](https://github.com/googleapis/java-bigquerystorage/issues/1965)) ([9c01bc1](https://github.com/googleapis/java-bigquerystorage/commit/9c01bc11b51dc1e3e209e4d6b666b9ddd3212cf5))
+* Reduce visibility of the ConnectionPool and ConnectionWorker, so… ([#1954](https://github.com/googleapis/java-bigquerystorage/issues/1954)) ([dcb234b](https://github.com/googleapis/java-bigquerystorage/commit/dcb234b95d0812d4d91b0c206d0b7e0fb30ab0fa))
+* Remove unrecoverable connection from connection pool during multiplexing ([#1967](https://github.com/googleapis/java-bigquerystorage/issues/1967)) ([091dddb](https://github.com/googleapis/java-bigquerystorage/commit/091dddb9b2baf1f4b481e8d7961d451b71a8508b))
+
+## [2.28.4](https://github.com/googleapis/java-bigquerystorage/compare/v2.28.3...v2.28.4) (2023-01-25)
+
+
+### Bug Fixes
+
+* Fix one potential root cause of deadlock in connection worker ([#1955](https://github.com/googleapis/java-bigquerystorage/issues/1955)) ([598ce5e](https://github.com/googleapis/java-bigquerystorage/commit/598ce5eb5e8d5efaaa841495794be4d39c6c0fce))
+
+## [2.28.3](https://github.com/googleapis/java-bigquerystorage/compare/v2.28.2...v2.28.3) (2023-01-20)
+
+
+### Bug Fixes
+
+* Fix deadlock issue in ConnectionWorkerPool ([#1938](https://github.com/googleapis/java-bigquerystorage/issues/1938)) ([caf1e76](https://github.com/googleapis/java-bigquerystorage/commit/caf1e7603153b1b8de90d6294ac15c711076d8f4))
+* **java:** Skip fixing poms for special modules ([#1744](https://github.com/googleapis/java-bigquerystorage/issues/1744)) ([#1946](https://github.com/googleapis/java-bigquerystorage/issues/1946)) ([2863542](https://github.com/googleapis/java-bigquerystorage/commit/286354231eaf8e329bbea05e0c45b28e14f4a1e7))
+* Update BQTableSchemaToProtoDescriptor to unblock a protobuf change. ([#1942](https://github.com/googleapis/java-bigquerystorage/issues/1942)) ([62cc80a](https://github.com/googleapis/java-bigquerystorage/commit/62cc80a216ff4969a30e5fe93ff74b2c582e4677))
+* We should isolate the client used in StreamWriter and the client used in ConnectionWorker ([#1933](https://github.com/googleapis/java-bigquerystorage/issues/1933)) ([3530672](https://github.com/googleapis/java-bigquerystorage/commit/3530672f0bddfacb973fb0fc1d30aabb4ffefccb))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.1.2 ([#1949](https://github.com/googleapis/java-bigquerystorage/issues/1949)) ([23ec7fa](https://github.com/googleapis/java-bigquerystorage/commit/23ec7fa2c70c720fb995bdfac9416a29d77de2e2))
+
+## [2.28.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.28.1...v2.28.2) (2023-01-18)
+
+
+### Bug Fixes
+
+* Add a timeout on retry for retryable errors ([#1930](https://github.com/googleapis/java-bigquerystorage/issues/1930)) ([2d648cf](https://github.com/googleapis/java-bigquerystorage/commit/2d648cf9706a6e7bc155e8769ba7dda2a6bc3061))
+* Add precision overwritten to 9 digit if the passed in JSON type is FLOAT or DOUBLE ([#1932](https://github.com/googleapis/java-bigquerystorage/issues/1932)) ([417bc6c](https://github.com/googleapis/java-bigquerystorage/commit/417bc6c76f7b9fa602721c3c183c487c5aab2e09))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.20.2 ([#1929](https://github.com/googleapis/java-bigquerystorage/issues/1929)) ([a95ae9d](https://github.com/googleapis/java-bigquerystorage/commit/a95ae9d708bd3e2d8f55297a6004a0d937c8d83f))
+
+## [2.28.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.28.0...v2.28.1) (2023-01-12)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.20.1 ([#1919](https://github.com/googleapis/java-bigquerystorage/issues/1919)) ([b6565f2](https://github.com/googleapis/java-bigquerystorage/commit/b6565f2ee0d3b45f55bc3ade6918d36cf0bd20da))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.1.1 ([#1922](https://github.com/googleapis/java-bigquerystorage/issues/1922)) ([074a20e](https://github.com/googleapis/java-bigquerystorage/commit/074a20e0a9baf228e34fa01511a980862650c66a))
+
+## [2.28.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.27.0...v2.28.0) (2023-01-04)
+
+
+### Features
+
+* Add estimated number of rows to CreateReadSession response ([#1913](https://github.com/googleapis/java-bigquerystorage/issues/1913)) ([4840b26](https://github.com/googleapis/java-bigquerystorage/commit/4840b26956c22e40b6edcefe57f26dd0386e90e5))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.20.0 ([#1912](https://github.com/googleapis/java-bigquerystorage/issues/1912)) ([e9e7ac3](https://github.com/googleapis/java-bigquerystorage/commit/e9e7ac3d4e655f7b77d830108226891c45464069))
+* Update dependency org.json:json to v20220924 ([#1799](https://github.com/googleapis/java-bigquerystorage/issues/1799)) ([a0a5d52](https://github.com/googleapis/java-bigquerystorage/commit/a0a5d52cdd06739992944126a89fe58daf4ee605))
+
+## [2.27.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.26.0...v2.27.0) (2022-12-12)
+
+
+### Features
+
+* Change one thread per retry to use a thread pool ([#1898](https://github.com/googleapis/java-bigquerystorage/issues/1898)) ([44a4e4d](https://github.com/googleapis/java-bigquerystorage/commit/44a4e4d8c70bf910f96d2d2c181d1f23b70f3e52))
+* Throw error when using connection pool for explicit stream ([#1903](https://github.com/googleapis/java-bigquerystorage/issues/1903)) ([bd89556](https://github.com/googleapis/java-bigquerystorage/commit/bd895567fe33735294065d7043d845f14f33f8a8))
+
+
+### Bug Fixes
+
+* Add back the accidentally removed background executor provider ([#1899](https://github.com/googleapis/java-bigquerystorage/issues/1899)) ([065cc4f](https://github.com/googleapis/java-bigquerystorage/commit/065cc4f35ad5e5cdc393e01adbea881c6e92dcab))
+* Update JsonStreamWriterBuilder comment and update sample to use the latest schema retrieval support ([#1902](https://github.com/googleapis/java-bigquerystorage/issues/1902)) ([2a46ec3](https://github.com/googleapis/java-bigquerystorage/commit/2a46ec3df419bbeba6a2e60b2b621dc60f31eab1))
+
+
+### Dependencies
+
+* Update arrow.version to v10.0.1 ([#1894](https://github.com/googleapis/java-bigquerystorage/issues/1894)) ([8e90767](https://github.com/googleapis/java-bigquerystorage/commit/8e907677bae0c48e8c64be5cbab8fb203645f4ef))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.1.0 ([#1905](https://github.com/googleapis/java-bigquerystorage/issues/1905)) ([767be03](https://github.com/googleapis/java-bigquerystorage/commit/767be035defbcc5b77f1276bb1a2983b6a7423bd))
+* Update dependency org.apache.arrow:arrow-memory-netty to v10.0.1 ([#1895](https://github.com/googleapis/java-bigquerystorage/issues/1895)) ([8b079cc](https://github.com/googleapis/java-bigquerystorage/commit/8b079cc47ca914756bd73dda98bd15393754ebb1))
+* Update dependency org.apache.arrow:arrow-vector to v10.0.1 ([#1896](https://github.com/googleapis/java-bigquerystorage/issues/1896)) ([087ac6e](https://github.com/googleapis/java-bigquerystorage/commit/087ac6e7ad813dc248e9029f91c454299a87b2b3))
+
+## [2.26.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.25.0...v2.26.0) (2022-11-18)
+
+
+### Features
+
+* Add missing_value_interpretations to AppendRowsRequest ([#1885](https://github.com/googleapis/java-bigquerystorage/issues/1885)) ([0def62f](https://github.com/googleapis/java-bigquerystorage/commit/0def62fb6375d35e753f60dc2ac3b102e15ef336))
+* Add update schema support for multiplexing ([#1867](https://github.com/googleapis/java-bigquerystorage/issues/1867)) ([2adf81b](https://github.com/googleapis/java-bigquerystorage/commit/2adf81b70da043c6a66e38dbd52ef7aae9cffb9e))
+* Fix windows build failure by using nanoSeconds instead of Instant for better accuracy. ([#1887](https://github.com/googleapis/java-bigquerystorage/issues/1887)) ([e5cd7df](https://github.com/googleapis/java-bigquerystorage/commit/e5cd7df54e2f6af12c240268a91e0afc2ec27a8a))
+* Next release from main branch is 2.26.0 ([#1874](https://github.com/googleapis/java-bigquerystorage/issues/1874)) ([589dd63](https://github.com/googleapis/java-bigquerystorage/commit/589dd637dfc16fb9bd3655a0d98115f601983997))
+* Provide sample code for row-level error handling ([#1863](https://github.com/googleapis/java-bigquerystorage/issues/1863)) ([027c5bb](https://github.com/googleapis/java-bigquerystorage/commit/027c5bb7cc27234bc1e3a552b4896b919921dc71))
+
+
+### Bug Fixes
+
+* Fix window build bug caused by Instant resolution. ([#1884](https://github.com/googleapis/java-bigquerystorage/issues/1884)) ([2332dc1](https://github.com/googleapis/java-bigquerystorage/commit/2332dc13bb45c7377722a3a289d66a4cf73bb79d))
+
+
+### Dependencies
+
+* Update dependency com.google.auto.value:auto-value to v1.10.1 ([#1888](https://github.com/googleapis/java-bigquerystorage/issues/1888)) ([9546298](https://github.com/googleapis/java-bigquerystorage/commit/954629811d0b9e942f23e0cb0d1935cd38e4b30b))
+* Update dependency com.google.auto.value:auto-value-annotations to v1.10.1 ([#1889](https://github.com/googleapis/java-bigquerystorage/issues/1889)) ([b4eec03](https://github.com/googleapis/java-bigquerystorage/commit/b4eec032706f2ed7039b3ad9bfd81b8dea536008))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.19.1 ([#1878](https://github.com/googleapis/java-bigquerystorage/issues/1878)) ([4b1989b](https://github.com/googleapis/java-bigquerystorage/commit/4b1989b51d18b081c8e980a59bd6117230c11a9d))
+
+## [2.25.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.24.2...v2.25.0) (2022-11-08)
+
+
+### Features
+
+* Add schema comparision to the main request loop for multiplexing to correctly update schema ([#1865](https://github.com/googleapis/java-bigquerystorage/issues/1865)) ([cb18d28](https://github.com/googleapis/java-bigquerystorage/commit/cb18d288f78773af60b9fddc583f46a571cbc3f4))
+
+
+### Documentation
+
+* Remove stale header guidance for AppendRows ([#1866](https://github.com/googleapis/java-bigquerystorage/issues/1866)) ([1de23be](https://github.com/googleapis/java-bigquerystorage/commit/1de23be7fe84747a4e7ca5b511458a5b378a1170))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.18.2 ([#1862](https://github.com/googleapis/java-bigquerystorage/issues/1862)) ([ca2cafe](https://github.com/googleapis/java-bigquerystorage/commit/ca2cafe095eca8b610ec8ca1acf95cf7a561af61))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.19.0 ([#1871](https://github.com/googleapis/java-bigquerystorage/issues/1871)) ([4aa967a](https://github.com/googleapis/java-bigquerystorage/commit/4aa967a0a30db0037a04b6b47646ae79dfffaead))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.6 ([#1870](https://github.com/googleapis/java-bigquerystorage/issues/1870)) ([17b2a80](https://github.com/googleapis/java-bigquerystorage/commit/17b2a8036cf5706cb753f7116b1fa424a661ba39))
+* Update dependency kr.motd.maven:os-maven-plugin to v1.7.1 ([#1868](https://github.com/googleapis/java-bigquerystorage/issues/1868)) ([08b8468](https://github.com/googleapis/java-bigquerystorage/commit/08b8468dc31fe654f5f7a345377b14f51f19eeea))
+
+## [2.24.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.24.1...v2.24.2) (2022-10-28)
+
+
+### Bug Fixes
+
+* Remove applying header for multiplexing client and add a unit test for multiplexing with different location ([df9b487](https://github.com/googleapis/java-bigquerystorage/commit/df9b4876f868d1e33a1c2273a83fc7bfcd3ddf27))
+
+
+### Dependencies
+
+* Revert dependency upgrade for protobuf to v3.20.2 ([#1659](https://github.com/googleapis/java-bigquerystorage/issues/1659)) ([#1856](https://github.com/googleapis/java-bigquerystorage/issues/1856)) ([df9b487](https://github.com/googleapis/java-bigquerystorage/commit/df9b4876f868d1e33a1c2273a83fc7bfcd3ddf27))
+* Update arrow.version to v10 (major) (https://togithub.com/googleapis/java-bigquerystorage/issues/1847) ([b0b5f06](https://togithub.com/googleapis/java-bigquerystorage/commit/b0b5f06de60bce556b813e91c7ac665d8f045906)) ([df9b487](https://github.com/googleapis/java-bigquerystorage/commit/df9b4876f868d1e33a1c2273a83fc7bfcd3ddf27))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.18.0 (https://togithub.com/googleapis/java-bigquerystorage/issues/1852) ([bb475bd](https://togithub.com/googleapis/java-bigquerystorage/commit/bb475bdbeb0749889fec32fcecf36d0b51fdd8ac)) ([df9b487](https://github.com/googleapis/java-bigquerystorage/commit/df9b4876f868d1e33a1c2273a83fc7bfcd3ddf27))
+* Update dependency org.apache.arrow:arrow-memory-netty to v10 (https://togithub.com/googleapis/java-bigquerystorage/issues/1848) ([d6d96ff](https://togithub.com/googleapis/java-bigquerystorage/commit/d6d96ffb58be65d2a06c4f02de351fadd08da8e4)) ([df9b487](https://github.com/googleapis/java-bigquerystorage/commit/df9b4876f868d1e33a1c2273a83fc7bfcd3ddf27))
+* Update dependency org.apache.arrow:arrow-vector to v10 (https://togithub.com/googleapis/java-bigquerystorage/issues/1849) ([66853c2](https://togithub.com/googleapis/java-bigquerystorage/commit/66853c216ed2887e2d56f987cfffcb10d616f4bb)) ([df9b487](https://github.com/googleapis/java-bigquerystorage/commit/df9b4876f868d1e33a1c2273a83fc7bfcd3ddf27))
+
+## [2.24.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.24.0...v2.24.1) (2022-10-28)
+
+
+### Bug Fixes
+
+* Remove applying header for multiplexing client and add a unit test for multiplexing with different location ([#1850](https://github.com/googleapis/java-bigquerystorage/issues/1850)) ([1733d5a](https://github.com/googleapis/java-bigquerystorage/commit/1733d5a380080a0826aa9fcc41672bdb6a64c249))
+
+
+### Dependencies
+
+* Update arrow.version to v10 (major) ([#1847](https://github.com/googleapis/java-bigquerystorage/issues/1847)) ([b0b5f06](https://github.com/googleapis/java-bigquerystorage/commit/b0b5f06de60bce556b813e91c7ac665d8f045906))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.18.0 ([#1852](https://github.com/googleapis/java-bigquerystorage/issues/1852)) ([bb475bd](https://github.com/googleapis/java-bigquerystorage/commit/bb475bdbeb0749889fec32fcecf36d0b51fdd8ac))
+* Update dependency org.apache.arrow:arrow-memory-netty to v10 ([#1848](https://github.com/googleapis/java-bigquerystorage/issues/1848)) ([d6d96ff](https://github.com/googleapis/java-bigquerystorage/commit/d6d96ffb58be65d2a06c4f02de351fadd08da8e4))
+* Update dependency org.apache.arrow:arrow-vector to v10 ([#1849](https://github.com/googleapis/java-bigquerystorage/issues/1849)) ([66853c2](https://github.com/googleapis/java-bigquerystorage/commit/66853c216ed2887e2d56f987cfffcb10d616f4bb))
+
+## [2.24.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.23.1...v2.24.0) (2022-10-25)
+
+
+### Features
+
+* Add getInflightWaitSeconds implementation ([#1835](https://github.com/googleapis/java-bigquerystorage/issues/1835)) ([b569116](https://github.com/googleapis/java-bigquerystorage/commit/b569116179700123e405eb7712abb136456f2f26))
+* **shortsAndBigDecimals:** Add shorts and big decimals ([#1674](https://github.com/googleapis/java-bigquerystorage/issues/1674)) ([604d7df](https://github.com/googleapis/java-bigquerystorage/commit/604d7df2afa54e445a4d310e5293d8d19901d565))
+
+
+### Bug Fixes
+
+* **java:** Restore native image configurations ([#1844](https://github.com/googleapis/java-bigquerystorage/issues/1844)) ([8ce670a](https://github.com/googleapis/java-bigquerystorage/commit/8ce670a487a192807ccfd58613fc271d9402ca7c))
+* Remove the client lib header setting since after router migration, it is no longer needed ([#1842](https://github.com/googleapis/java-bigquerystorage/issues/1842)) ([5f3b821](https://github.com/googleapis/java-bigquerystorage/commit/5f3b8214116b17b315d589bfde184e0e045cff69))
+
+
+### Dependencies
+
+* Update dependency com.google.auto.value:auto-value to v1.10 ([#1825](https://github.com/googleapis/java-bigquerystorage/issues/1825)) ([f7b8f2b](https://github.com/googleapis/java-bigquerystorage/commit/f7b8f2b4df8ca9b306a75d46eb223124ac9bdebb))
+* Update dependency com.google.auto.value:auto-value-annotations to v1.10 ([#1826](https://github.com/googleapis/java-bigquerystorage/issues/1826)) ([37eb8a1](https://github.com/googleapis/java-bigquerystorage/commit/37eb8a1df34e8ae4d5e2849c76d9a591ec5505d4))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.17.1 ([#1829](https://github.com/googleapis/java-bigquerystorage/issues/1829)) ([7e8d900](https://github.com/googleapis/java-bigquerystorage/commit/7e8d90037f5ae426882f90ab251d315767b3a6b7))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.5 ([#1840](https://github.com/googleapis/java-bigquerystorage/issues/1840)) ([474756b](https://github.com/googleapis/java-bigquerystorage/commit/474756bd6547254ed6d761a73f2e69920fa79458))
+
+## [2.23.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.23.0...v2.23.1) (2022-10-04)
+
+
+### Bug Fixes
+
+* update protobuf to v3.21.7 ([77bf65b](https://github.com/googleapis/java-bigquerystorage/commit/77bf65b94e324712ff957cb709d393c1f825ebcf))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.17.0 ([#1821](https://github.com/googleapis/java-bigquerystorage/issues/1821)) ([8747079](https://github.com/googleapis/java-bigquerystorage/commit/87470799a55b60d671af977dca14140e9f6d94c6))
+
+## [2.23.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.22.0...v2.23.0) (2022-10-03)
+
+
+### Features
+
+* return list of row errors from append ([df7c6e9](https://github.com/googleapis/java-bigquerystorage/commit/df7c6e9816d43eac196d77604bc99db6115de670))
+
+
+### Bug Fixes
+
+* return row-level error information via an AppendSerializtionError exception ([df7c6e9](https://github.com/googleapis/java-bigquerystorage/commit/df7c6e9816d43eac196d77604bc99db6115de670))
+
+## [2.22.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.21.0...v2.22.0) (2022-09-29)
+
+
+### Features
+
+* Add a new specific exception about json data has unknown field ([#1792](https://github.com/googleapis/java-bigquerystorage/issues/1792)) ([18f93c1](https://github.com/googleapis/java-bigquerystorage/commit/18f93c124334464a951b3d3065bdf11bbda13dac))
+* Add cache for location in stream writer, and trigger that when location is not presented ([#1804](https://github.com/googleapis/java-bigquerystorage/issues/1804)) ([c24c14f](https://github.com/googleapis/java-bigquerystorage/commit/c24c14f14b1a6f8249f55630d51e3cadd500c1ad))
+* Add close() to multiplexing client ([#1788](https://github.com/googleapis/java-bigquerystorage/issues/1788)) ([6b3a974](https://github.com/googleapis/java-bigquerystorage/commit/6b3a97491bf718333ae7c085f9b10723d8b24388))
+* Add fully managed schema support on json writer ([#1794](https://github.com/googleapis/java-bigquerystorage/issues/1794)) ([b6b515f](https://github.com/googleapis/java-bigquerystorage/commit/b6b515f57a0f6956c9d9f902a5e3e16edc845a48))
+* Add more retry error code to the sample ([#1805](https://github.com/googleapis/java-bigquerystorage/issues/1805)) ([4bf67bc](https://github.com/googleapis/java-bigquerystorage/commit/4bf67bcf0de2d370f0b04d8df236d30466b91598))
+* Add multiplexing client core algorithm and basic testing, plus fix a tiny bug in fake server ([#1787](https://github.com/googleapis/java-bigquerystorage/issues/1787)) ([1bb8e26](https://github.com/googleapis/java-bigquerystorage/commit/1bb8e262941f570d7f2de60123ec5a6a0cf43600))
+* Add multiplexing support to connection worker. ([#1784](https://github.com/googleapis/java-bigquerystorage/issues/1784)) ([a869a1d](https://github.com/googleapis/java-bigquerystorage/commit/a869a1d8baba3cc0f6046d661c6f52ec12a3f12d))
+* Add support for flexible column name in JsonStreamWriter ([#1786](https://github.com/googleapis/java-bigquerystorage/issues/1786)) ([694abbb](https://github.com/googleapis/java-bigquerystorage/commit/694abbb43bf2970cd81803521c349dc31a38f484))
+* Add two fine logs that would allow Datastream to look into the stuck issue ([#1791](https://github.com/googleapis/java-bigquerystorage/issues/1791)) ([745ceb4](https://github.com/googleapis/java-bigquerystorage/commit/745ceb46dec5922efe394773028532dcd84a4f9b))
+* Always pass a null bigquery client lib to StreamWriter ([#1795](https://github.com/googleapis/java-bigquerystorage/issues/1795)) ([eec50c1](https://github.com/googleapis/java-bigquerystorage/commit/eec50c14e1dff84ae9a3e70f9d08d27b9e225e55))
+* Bug fix for checking write_stream field but proto might not contain the field to unblock the release ([#1806](https://github.com/googleapis/java-bigquerystorage/issues/1806)) ([9791d69](https://github.com/googleapis/java-bigquerystorage/commit/9791d693c75367bec6451ebf65ae4ea3347bf50f))
+* Client unknown fields drives writer refreshment ([#1797](https://github.com/googleapis/java-bigquerystorage/issues/1797)) ([d8aaed5](https://github.com/googleapis/java-bigquerystorage/commit/d8aaed522b9de487539165ea662465e5a96222f1))
+* ExecutorProvider can now be replaced ([#1770](https://github.com/googleapis/java-bigquerystorage/issues/1770)) ([6380f71](https://github.com/googleapis/java-bigquerystorage/commit/6380f713b8f42fa3a58df2750ea2cf3b7397d29c)), closes [#1769](https://github.com/googleapis/java-bigquerystorage/issues/1769)
+* Fix some todos and reject stream writer if it's created with mixed behavior of passed in client or not ([#1803](https://github.com/googleapis/java-bigquerystorage/issues/1803)) ([1a69192](https://github.com/googleapis/java-bigquerystorage/commit/1a69192e2ffc6475a7e4b67c5a452f1c0e8aaddc))
+* Minor tune after offline testing ([#1807](https://github.com/googleapis/java-bigquerystorage/issues/1807)) ([694a870](https://github.com/googleapis/java-bigquerystorage/commit/694a870bac623ef038168a4358b9d73972077edb))
+* Populate location info if we already called GetWriteStream ([#1802](https://github.com/googleapis/java-bigquerystorage/issues/1802)) ([5f43103](https://github.com/googleapis/java-bigquerystorage/commit/5f4310321e7f90385f7ef5c32e3e5395f719d0ca))
+* Some fixes for multiplexing client ([#1798](https://github.com/googleapis/java-bigquerystorage/issues/1798)) ([b3ffd77](https://github.com/googleapis/java-bigquerystorage/commit/b3ffd77e4b86708f241ba517c55bb3508964bc0e))
+* Wire connection pool to stream writer without implementing updated schema ([#1790](https://github.com/googleapis/java-bigquerystorage/issues/1790)) ([3eb1475](https://github.com/googleapis/java-bigquerystorage/commit/3eb147545db2415e5a68752b8ede1c4d342d1a84))
+
+## [2.21.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.20.1...v2.21.0) (2022-09-15)
+
+
+### Features
+
+* Add connection worker skeleton used for multiplexing client ([#1778](https://github.com/googleapis/java-bigquerystorage/issues/1778)) ([b26265e](https://github.com/googleapis/java-bigquerystorage/commit/b26265e56a47cda3fca1329d349ab4a18288d4cb))
+* Add Load api for connection worker for multiplexing worker ([#1779](https://github.com/googleapis/java-bigquerystorage/issues/1779)) ([179930e](https://github.com/googleapis/java-bigquerystorage/commit/179930e6b0017f1fa12dcd3ef7c3efa374f41576))
+* Add location to WriteStream and add WriteStreamView support ([#1771](https://github.com/googleapis/java-bigquerystorage/issues/1771)) ([f446ff4](https://github.com/googleapis/java-bigquerystorage/commit/f446ff4f7d3f9d217501201289be416cbfdbe937))
+* Add proto annotation for non-ascii field mapping ([#1776](https://github.com/googleapis/java-bigquerystorage/issues/1776)) ([1a079ee](https://github.com/googleapis/java-bigquerystorage/commit/1a079ee0761bad2e942081f7f02b530f32e55afe))
+* introducing connection worker to run a loop for fetching / sending requests in a queue. ([7dd447d](https://github.com/googleapis/java-bigquerystorage/commit/7dd447da206cdd7a403191bd15203bb4cc53ccb5))
+
+
+### Bug Fixes
+
+* **api:** Numeric/bignumeric conversion issue [#1757](https://github.com/googleapis/java-bigquerystorage/issues/1757) ([#1768](https://github.com/googleapis/java-bigquerystorage/issues/1768)) ([5cc96a0](https://github.com/googleapis/java-bigquerystorage/commit/5cc96a0c5da5c8b557e96cd1a25afdff9d583a0f))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.15.0 ([#1766](https://github.com/googleapis/java-bigquerystorage/issues/1766)) ([40e0ba0](https://github.com/googleapis/java-bigquerystorage/commit/40e0ba09527c564004fcbbb0c3af2fb97eb811c0))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.16.0 ([#1777](https://github.com/googleapis/java-bigquerystorage/issues/1777)) ([08a7c8f](https://github.com/googleapis/java-bigquerystorage/commit/08a7c8f1dde71f48706bb0b1aa780f79012594bf))
+* Update dependency com.google.cloud:google-cloud-bigquery to v2.16.1 ([#1781](https://github.com/googleapis/java-bigquerystorage/issues/1781)) ([7ff7099](https://github.com/googleapis/java-bigquerystorage/commit/7ff709951f40c3683da628a9bcf66a5fe0a2e368))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.2 ([#1772](https://github.com/googleapis/java-bigquerystorage/issues/1772)) ([3279ef4](https://github.com/googleapis/java-bigquerystorage/commit/3279ef42e915881c255a8db8e677799f530c5d53))
+* Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.3 ([#1780](https://github.com/googleapis/java-bigquerystorage/issues/1780)) ([ed2cd66](https://github.com/googleapis/java-bigquerystorage/commit/ed2cd66a3804140711b9f4aa05b67641f2494bc9))
+
+## [2.20.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.20.0...v2.20.1) (2022-08-24)
+
+
+### Bug Fixes
+
+* Add unit test for closing disconnected streamwriter. Also reduce wait from 5->3 minutes ([#1751](https://github.com/googleapis/java-bigquerystorage/issues/1751)) ([095d7d5](https://github.com/googleapis/java-bigquerystorage/commit/095d7d59b47becf72a5e9cd3ced383fa45b04b50))
+* allow repeated field to have a null or missing json array ([#1760](https://github.com/googleapis/java-bigquerystorage/issues/1760)) ([ef24825](https://github.com/googleapis/java-bigquerystorage/commit/ef24825ca40e6156f6f3ce38c3c6051673a5f6cc))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.7 ([#1759](https://github.com/googleapis/java-bigquerystorage/issues/1759)) ([ac3f0b8](https://github.com/googleapis/java-bigquerystorage/commit/ac3f0b871a1db4bcbd5ce8fa019ae8e1559ed3ec))
+
+## [2.20.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.19.1...v2.20.0) (2022-08-17)
+
+
+### Features
+
+* introduce InflightLimitExceededException ([#1746](https://github.com/googleapis/java-bigquerystorage/issues/1746)) ([449353b](https://github.com/googleapis/java-bigquerystorage/commit/449353bd3b1fc78d46990c8203e1607d83f7ad03))
+
+
+### Bug Fixes
+
+* Add documentation to Exceptions ([#1745](https://github.com/googleapis/java-bigquerystorage/issues/1745)) ([3bc7aca](https://github.com/googleapis/java-bigquerystorage/commit/3bc7acaa4a110a0ce487e3976b5fd4ddb865ea24))
+* Add missing field error to row error message ([#1752](https://github.com/googleapis/java-bigquerystorage/issues/1752)) ([186d213](https://github.com/googleapis/java-bigquerystorage/commit/186d2135cb7e18410b89c93e909b03dc8e92ac6c))
+* Close based on whether connection is active, not status variable ([#1750](https://github.com/googleapis/java-bigquerystorage/issues/1750)) ([ce7f3e0](https://github.com/googleapis/java-bigquerystorage/commit/ce7f3e04046be6b4c1321be877034f5d0ab007f4))
+
+
+### Dependencies
+
+* fixing the test scope dependency to runtime ([#1742](https://github.com/googleapis/java-bigquerystorage/issues/1742)) ([878020b](https://github.com/googleapis/java-bigquerystorage/commit/878020b3667040aef1b8d610b37cd678ef932870))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.4 ([#1740](https://github.com/googleapis/java-bigquerystorage/issues/1740)) ([f842d51](https://github.com/googleapis/java-bigquerystorage/commit/f842d517b70847b8e67359257a213129586513f6))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.6 ([#1747](https://github.com/googleapis/java-bigquerystorage/issues/1747)) ([329bd9d](https://github.com/googleapis/java-bigquerystorage/commit/329bd9da268f48a4d18158845895b07a43c766ab))
+
+## [2.19.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.19.0...v2.19.1) (2022-08-06)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.3 ([#1736](https://github.com/googleapis/java-bigquerystorage/issues/1736)) ([f36d4f0](https://github.com/googleapis/java-bigquerystorage/commit/f36d4f01b5529ca93ca5f713852bc8bd48c51cdc))
+
+## [2.19.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.18.0...v2.19.0) (2022-08-05)
+
+
+### Features
+
+* Add CANCELLED to StreamWriter retryable error code ([#1725](https://github.com/googleapis/java-bigquerystorage/issues/1725)) ([6d4c004](https://github.com/googleapis/java-bigquerystorage/commit/6d4c00474a4056d72544b5a8966de6acaf0eecd3))
+* remove a dummy WriterClosedException ([0b3018d](https://github.com/googleapis/java-bigquerystorage/commit/0b3018d9e4cd64402f8d111aa9b4857224b8134e))
+
+
+### Bug Fixes
+
+* Switch integration test onto v1 write api ([#1731](https://github.com/googleapis/java-bigquerystorage/issues/1731)) ([2ccb96e](https://github.com/googleapis/java-bigquerystorage/commit/2ccb96ecd7431a53ccd3a1b2bfd7df5a8e76498e))
+
+
+### Documentation
+
+* **owlbot-java:** explaining why not using formatter in pom.xml ([#1511](https://github.com/googleapis/java-bigquerystorage/issues/1511)) ([#1723](https://github.com/googleapis/java-bigquerystorage/issues/1723)) ([eabfa93](https://github.com/googleapis/java-bigquerystorage/commit/eabfa937fbda2244e67765aa6a01399ae04b943a)), closes [#1502](https://github.com/googleapis/java-bigquerystorage/issues/1502)
+
+
+### Dependencies
+
+* update arrow.version to v9 (major) ([#1728](https://github.com/googleapis/java-bigquerystorage/issues/1728)) ([3694243](https://github.com/googleapis/java-bigquerystorage/commit/3694243b5f9e392b475c2a9fbb66979ff510781f))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.1 ([#1721](https://github.com/googleapis/java-bigquerystorage/issues/1721)) ([e27a9e9](https://github.com/googleapis/java-bigquerystorage/commit/e27a9e97ac2bf1e7a40bed17c67b3244f03c7d7a))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.2 ([#1734](https://github.com/googleapis/java-bigquerystorage/issues/1734)) ([0115e98](https://github.com/googleapis/java-bigquerystorage/commit/0115e98f8c11694183741c352ce97e0ab45894c7))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v3 ([#1718](https://github.com/googleapis/java-bigquerystorage/issues/1718)) ([940c613](https://github.com/googleapis/java-bigquerystorage/commit/940c613b1480948c3561df6e19a650b14dbf051f))
+* update dependency org.apache.arrow:arrow-memory-netty to v9 ([#1729](https://github.com/googleapis/java-bigquerystorage/issues/1729)) ([297ee99](https://github.com/googleapis/java-bigquerystorage/commit/297ee998f8f868480477dabff0e0a4b3417d7129))
+* update dependency org.apache.arrow:arrow-vector to v9 ([#1730](https://github.com/googleapis/java-bigquerystorage/issues/1730)) ([6010b42](https://github.com/googleapis/java-bigquerystorage/commit/6010b42c6d14f15681ee97a83c64136aefb75028))
+* update dependency org.apache.avro:avro to v1.11.1 ([#1719](https://github.com/googleapis/java-bigquerystorage/issues/1719)) ([754296f](https://github.com/googleapis/java-bigquerystorage/commit/754296fd24635e20edccb7371b27474f825741ba))
+
+## [2.18.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.17.0...v2.18.0) (2022-07-27)
+
+
+### Features
+
+* Add another StreamWriterClosedException and remove RETRY_THRESHOLD ([#1713](https://github.com/googleapis/java-bigquerystorage/issues/1713)) ([f8d1bd9](https://github.com/googleapis/java-bigquerystorage/commit/f8d1bd901232a61ca87c2671e478136dfd4f2432))
+* increase timeout waiting for done callback from 2 minutes to 5 … ([#1682](https://github.com/googleapis/java-bigquerystorage/issues/1682)) ([5171898](https://github.com/googleapis/java-bigquerystorage/commit/517189858263107ffc00cee5328ac958cb45a3f9))
+
+
+### Documentation
+
+* clarify size limitations for AppendRowsRequest ([#1714](https://github.com/googleapis/java-bigquerystorage/issues/1714)) ([ed3fe1f](https://github.com/googleapis/java-bigquerystorage/commit/ed3fe1fb20fc2e07c26da42b7564599642540317))
+
+## [2.17.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.16.1...v2.17.0) (2022-07-25)
+
+
+### Features
+
+* Return explicit StreamWriterClosedException ([#1709](https://github.com/googleapis/java-bigquerystorage/issues/1709)) ([57eb6d0](https://github.com/googleapis/java-bigquerystorage/commit/57eb6d0078a498e2f792d76b685c113a6a52ea8e))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.14.0 ([#1706](https://github.com/googleapis/java-bigquerystorage/issues/1706)) ([e92a8c0](https://github.com/googleapis/java-bigquerystorage/commit/e92a8c066130a6f28500fa887aef96da8a7af6df))
+
+## [2.16.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.16.0...v2.16.1) (2022-07-19)
+
+
+### Bug Fixes
+
+* enable longpaths support for windows test ([#1485](https://github.com/googleapis/java-bigquerystorage/issues/1485)) ([#1699](https://github.com/googleapis/java-bigquerystorage/issues/1699)) ([0cb05fd](https://github.com/googleapis/java-bigquerystorage/commit/0cb05fd3f9a732a0e7fc0cc494e1a305ce44805f))
+
+## [2.16.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.15.0...v2.16.0) (2022-07-11)
+
+
+### Features
+
+* expose row level serialization failures for JsonStreamWriter append ([#1686](https://github.com/googleapis/java-bigquerystorage/issues/1686)) ([bba0746](https://github.com/googleapis/java-bigquerystorage/commit/bba0746a13c785621c4e4cbd2239060d67ce155b))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.8 ([#1690](https://github.com/googleapis/java-bigquerystorage/issues/1690)) ([195670d](https://github.com/googleapis/java-bigquerystorage/commit/195670d677864ed310898fe9f4b00cc28d942237))
+
+## [2.15.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.14.2...v2.15.0) (2022-07-01)
+
+
+### Features
+
+* add fields to eventually contain row level errors ([ec3ea29](https://github.com/googleapis/java-bigquerystorage/commit/ec3ea29efae1cf6567055d43219690b3d2db8b5e))
+
+
+### Bug Fixes
+
+* Modify client lib retry policy for CreateWriteStream with longer backoff, more error code and longer overall time ([#1679](https://github.com/googleapis/java-bigquerystorage/issues/1679)) ([ec3ea29](https://github.com/googleapis/java-bigquerystorage/commit/ec3ea29efae1cf6567055d43219690b3d2db8b5e))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.3 ([#1678](https://github.com/googleapis/java-bigquerystorage/issues/1678)) ([740f2ae](https://github.com/googleapis/java-bigquerystorage/commit/740f2ae070454fbc2a87fdd7c01c7f90fc3867f3))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.4 ([#1680](https://github.com/googleapis/java-bigquerystorage/issues/1680)) ([de1c8df](https://github.com/googleapis/java-bigquerystorage/commit/de1c8df710b0510d66e91ac42d5d56eba4442bdb))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.6 ([#1684](https://github.com/googleapis/java-bigquerystorage/issues/1684)) ([05cdb38](https://github.com/googleapis/java-bigquerystorage/commit/05cdb380d27ab7484c7f81a0a490a58de67694c6))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.7 ([#1687](https://github.com/googleapis/java-bigquerystorage/issues/1687)) ([8795ae7](https://github.com/googleapis/java-bigquerystorage/commit/8795ae78e55bb4eb651a6e78a2645e3fe8df8d8e))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.13.0 ([#1683](https://github.com/googleapis/java-bigquerystorage/issues/1683)) ([2821ee9](https://github.com/googleapis/java-bigquerystorage/commit/2821ee9d6893ce1f2ac68615d99973e2c98e3678))
+
+## [2.14.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.14.1...v2.14.2) (2022-06-08)
+
+
+### Bug Fixes
+
+* **floating:** floating point numbers as numerics ([#1648](https://github.com/googleapis/java-bigquerystorage/issues/1648)) ([ecf8598](https://github.com/googleapis/java-bigquerystorage/commit/ecf8598bf66c0921524bbdb74d968edb389f197c))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.1 ([#1668](https://github.com/googleapis/java-bigquerystorage/issues/1668)) ([3eb8d4f](https://github.com/googleapis/java-bigquerystorage/commit/3eb8d4f0ab4db257899f7c72e02fef0a8b200c6e))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.2 ([#1671](https://github.com/googleapis/java-bigquerystorage/issues/1671)) ([2018ede](https://github.com/googleapis/java-bigquerystorage/commit/2018ede764ebf02e658f685922dd16438c70f69b))
+
+## [2.14.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.14.0...v2.14.1) (2022-06-01)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.12.0 ([#1660](https://github.com/googleapis/java-bigquerystorage/issues/1660)) ([9d97a98](https://github.com/googleapis/java-bigquerystorage/commit/9d97a9848e87a32c1c4201243feb717d91a060ec))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.13.0 ([#1665](https://github.com/googleapis/java-bigquerystorage/issues/1665)) ([9c3a609](https://github.com/googleapis/java-bigquerystorage/commit/9c3a6099a2b622a08a4f94dd21846fa46c0fdde8))
+
+## [2.14.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.13.0...v2.14.0) (2022-05-19)
+
+
+### Features
+
+* add build scripts for native image testing in Java 17 ([#1440](https://github.com/googleapis/java-bigquerystorage/issues/1440)) ([#1655](https://github.com/googleapis/java-bigquerystorage/issues/1655)) ([ac2dfaf](https://github.com/googleapis/java-bigquerystorage/commit/ac2dfafa921fe489861e9767c360be413e5a2ec1))
+
+
+### Bug Fixes
+
+* Add a throwException behavior when the StreamWriter inflight queue is full ([#1642](https://github.com/googleapis/java-bigquerystorage/issues/1642)) ([4dcf0d5](https://github.com/googleapis/java-bigquerystorage/commit/4dcf0d5e161cd2530a5468c1e3b327db63c45185))
+* add extra JsonWriterTest to show that the LimitBehavior addition is not breaking ([#1643](https://github.com/googleapis/java-bigquerystorage/issues/1643)) ([320f5fc](https://github.com/googleapis/java-bigquerystorage/commit/320f5fc6a2a180e361f1a5a375095a65ec62003f))
+* ints/longs are numerics ([#1596](https://github.com/googleapis/java-bigquerystorage/issues/1596)) ([d046c8d](https://github.com/googleapis/java-bigquerystorage/commit/d046c8d5ff9943cd4731ac6fccc77956554820e1)), closes [#1516](https://github.com/googleapis/java-bigquerystorage/issues/1516)
+
+
+### Dependencies
+
+* update arrow.version to v8 ([#1645](https://github.com/googleapis/java-bigquerystorage/issues/1645)) ([06e3c34](https://github.com/googleapis/java-bigquerystorage/commit/06e3c3407cd94db1c9ded667d1f25153dc281ba5))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.12.0 ([#1654](https://github.com/googleapis/java-bigquerystorage/issues/1654)) ([ec4f60b](https://github.com/googleapis/java-bigquerystorage/commit/ec4f60bd5c00846f1061f2cc1a79518d6afebdc5))
+
+## [2.13.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.12.2...v2.13.0) (2022-05-05)
+
+
+### Features
+
+* add support to a few more specific StorageErrors for the Write API ([#1563](https://github.com/googleapis/java-bigquerystorage/issues/1563)) ([c26091e](https://github.com/googleapis/java-bigquerystorage/commit/c26091e48b6542cf2078d46e2dbfe3220ab031f6))
+* next release from main branch is 2.12.2 ([#1624](https://github.com/googleapis/java-bigquerystorage/issues/1624)) ([b2aa2a4](https://github.com/googleapis/java-bigquerystorage/commit/b2aa2a43752e5a8a71f7bc434397b73d77d8eb58))
+
+
+### Bug Fixes
+
+* A stuck when the client fail to get DoneCallback ([#1637](https://github.com/googleapis/java-bigquerystorage/issues/1637)) ([3baa84e](https://github.com/googleapis/java-bigquerystorage/commit/3baa84e96671a14936d1667d0e036a1565fa5b7a))
+* Fix a possible NULL PTR after introduced timeout on waitForDone ([#1638](https://github.com/googleapis/java-bigquerystorage/issues/1638)) ([e1c6ded](https://github.com/googleapis/java-bigquerystorage/commit/e1c6ded336effbe302eee56df056a56a9dbb6b2f))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.10 ([#1623](https://github.com/googleapis/java-bigquerystorage/issues/1623)) ([54b74b8](https://github.com/googleapis/java-bigquerystorage/commit/54b74b80368252b93fb445c481731e0edfe3f5c3))
+* update dependency org.apache.avro:avro to v1.11.0 ([#1632](https://github.com/googleapis/java-bigquerystorage/issues/1632)) ([b47eea0](https://github.com/googleapis/java-bigquerystorage/commit/b47eea05d4db5acaa7337dc4e1faa018d8b4e40d))
+
+
+### Documentation
+
+* **samples:** update WriteComittedStream sample code to match best practices ([#1628](https://github.com/googleapis/java-bigquerystorage/issues/1628)) ([5d4c7e1](https://github.com/googleapis/java-bigquerystorage/commit/5d4c7e18b82ab85f7498e34a29920e9af765f918))
+* **sample:** update WriteToDefaultStream sample to match best practices ([#1631](https://github.com/googleapis/java-bigquerystorage/issues/1631)) ([73ddd7b](https://github.com/googleapis/java-bigquerystorage/commit/73ddd7b4fd44dce4be434726df57ecd84e6e3e6a))
+
+### [2.12.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.12.1...v2.12.2) (2022-04-18)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.7 ([#1614](https://github.com/googleapis/java-bigquerystorage/issues/1614)) ([ccdac87](https://github.com/googleapis/java-bigquerystorage/commit/ccdac87cc439b5f765d35af6d247b83122c1f40b))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.8 ([#1618](https://github.com/googleapis/java-bigquerystorage/issues/1618)) ([b9c50f1](https://github.com/googleapis/java-bigquerystorage/commit/b9c50f169d6092647becef5d99174be61b095ca8))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.9 ([#1620](https://github.com/googleapis/java-bigquerystorage/issues/1620)) ([7e1ae93](https://github.com/googleapis/java-bigquerystorage/commit/7e1ae93a1ee54a83d93a7421b438a53455dc89c2))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.10.0 ([#1619](https://github.com/googleapis/java-bigquerystorage/issues/1619)) ([55c4134](https://github.com/googleapis/java-bigquerystorage/commit/55c413459d029bf521eadf59f3c9fba9a7e876a1))
+
+### [2.12.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.12.0...v2.12.1) (2022-04-08)
+
+
+### Bug Fixes
+
+* even better ISO compilance ([#1607](https://github.com/googleapis/java-bigquerystorage/issues/1607)) ([5701597](https://github.com/googleapis/java-bigquerystorage/commit/570159799d8d464fbdb5bd617cc2a51f4f276f98))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.6 ([#1610](https://github.com/googleapis/java-bigquerystorage/issues/1610)) ([20e4225](https://github.com/googleapis/java-bigquerystorage/commit/20e4225734358bfce7c872e19c823ac6958d7905))
+
+## [2.12.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.11.1...v2.12.0) (2022-04-01)
+
+
+### Features
+
+* Deprecate format specific `row_count` field in Read API ([#1599](https://github.com/googleapis/java-bigquerystorage/issues/1599)) ([6f415f6](https://github.com/googleapis/java-bigquerystorage/commit/6f415f62685549f50f7382bc7d896e5f60c5285e))
+
+
+### Bug Fixes
+
+* better ISO8601 compliance ([#1589](https://github.com/googleapis/java-bigquerystorage/issues/1589)) ([29fa8b7](https://github.com/googleapis/java-bigquerystorage/commit/29fa8b73bc092a7ebe8e3951daf2026057d1d040))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.5 ([#1602](https://github.com/googleapis/java-bigquerystorage/issues/1602)) ([8787b5d](https://github.com/googleapis/java-bigquerystorage/commit/8787b5d36849981f9497ac2b0ddf8c5291b07fc8))
+
+### [2.11.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.11.0...v2.11.1) (2022-03-29)
+
+
+### Bug Fixes
+
+* Numerics cast from strings ([#1588](https://github.com/googleapis/java-bigquerystorage/issues/1588)) ([085768b](https://github.com/googleapis/java-bigquerystorage/commit/085768b41943237f50d5e47fa4ba5f22abff9fc6))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.0 ([#1578](https://github.com/googleapis/java-bigquerystorage/issues/1578)) ([adca54e](https://github.com/googleapis/java-bigquerystorage/commit/adca54eb0348d2ba02d3c272e180beebd9feb6c6))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.1 ([#1583](https://github.com/googleapis/java-bigquerystorage/issues/1583)) ([cc33d0e](https://github.com/googleapis/java-bigquerystorage/commit/cc33d0e539cc2ed53bf0ab265c5ebe55a0ac6c6e))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.2 ([#1587](https://github.com/googleapis/java-bigquerystorage/issues/1587)) ([d4ab7f6](https://github.com/googleapis/java-bigquerystorage/commit/d4ab7f64e32e4be8d1047d93b34cdadeccd98d90))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.3 ([#1591](https://github.com/googleapis/java-bigquerystorage/issues/1591)) ([0c62c85](https://github.com/googleapis/java-bigquerystorage/commit/0c62c85cf5fead39c04512c49db79d8e95fd44e6))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.10.4 ([#1594](https://github.com/googleapis/java-bigquerystorage/issues/1594)) ([05e9062](https://github.com/googleapis/java-bigquerystorage/commit/05e90620192747096854e60047cbca1fa6d81ea5))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.9.0 ([#1593](https://github.com/googleapis/java-bigquerystorage/issues/1593)) ([5234809](https://github.com/googleapis/java-bigquerystorage/commit/5234809e0482b05e40cbb6cecbb1154699255a59))
+
+## [2.11.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.10.1...v2.11.0) (2022-03-14)
+
+
+### Features
+
+* add JsonToProtoMessage support for TIMESTAMP ([#1574](https://github.com/googleapis/java-bigquerystorage/issues/1574)) ([6412fb2](https://github.com/googleapis/java-bigquerystorage/commit/6412fb2c03fc6b2c6d220d72bbd89e47922bf970)), closes [#1515](https://github.com/googleapis/java-bigquerystorage/issues/1515)
+
+
+### Bug Fixes
+
+* a possible race condition that we used table schema out of the lock. ([#1575](https://github.com/googleapis/java-bigquerystorage/issues/1575)) ([b587638](https://github.com/googleapis/java-bigquerystorage/commit/b58763833ad4bd51515c055bbcb8e29d9fea05a9))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.9.1 ([#1562](https://github.com/googleapis/java-bigquerystorage/issues/1562)) ([7efdbf0](https://github.com/googleapis/java-bigquerystorage/commit/7efdbf0df14ccc84409d09b5c93ac1058c95d50e))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.9.3 ([#1570](https://github.com/googleapis/java-bigquerystorage/issues/1570)) ([3d281d2](https://github.com/googleapis/java-bigquerystorage/commit/3d281d2e01f9170eac92ac51757fbd434d9b6b73))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.9.4 ([#1572](https://github.com/googleapis/java-bigquerystorage/issues/1572)) ([d3935cd](https://github.com/googleapis/java-bigquerystorage/commit/d3935cd3120f49aaae4c4e6839782bfa05836e90))
+
+### [2.10.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.10.0...v2.10.1) (2022-03-03)
+
+
+### Bug Fixes
+
+* change customer StorageException from RuntimeException to StatusRuntimeException ([#1559](https://github.com/googleapis/java-bigquerystorage/issues/1559)) ([523377e](https://github.com/googleapis/java-bigquerystorage/commit/523377e0bbfbae33165258b8eeed812c81cfeb82))
+
+
+### Dependencies
+
+* update actions/checkout action to v3 ([#1554](https://github.com/googleapis/java-bigquerystorage/issues/1554)) ([1371ac9](https://github.com/googleapis/java-bigquerystorage/commit/1371ac91bad55711b66e08ddeed6302598329a46))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.8.0 ([#1555](https://github.com/googleapis/java-bigquerystorage/issues/1555)) ([cc25162](https://github.com/googleapis/java-bigquerystorage/commit/cc25162021a2b05e68fd3dd1f98e252a10626f6b))
+
+
+### Documentation
+
+* improve documentation for write client ([#1560](https://github.com/googleapis/java-bigquerystorage/issues/1560)) ([fbb5321](https://github.com/googleapis/java-bigquerystorage/commit/fbb5321bd35bdd7ba81bcb95278d6cdd9abd3dee))
+
+## [2.10.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.9.1...v2.10.0) (2022-02-28)
+
+
+### Features
+
+* add trace_id for Read API ([#1544](https://github.com/googleapis/java-bigquerystorage/issues/1544)) ([5a92ade](https://github.com/googleapis/java-bigquerystorage/commit/5a92ade809d16e2770c07bd5287fbccb75645b21))
+
+
+### Bug Fixes
+
+* Add a e2e test on byte string array and remove a impossible case for byte array conversion ([#1546](https://github.com/googleapis/java-bigquerystorage/issues/1546)) ([adcb9bb](https://github.com/googleapis/java-bigquerystorage/commit/adcb9bb699e54d93da320e6a458caff79faa2f9f))
+* add more idiomatic way to insert ARRAY data ([#1550](https://github.com/googleapis/java-bigquerystorage/issues/1550)) ([3ae4038](https://github.com/googleapis/java-bigquerystorage/commit/3ae40381aeacd21676f2c896216faa26eb1ef960))
+* remove bigquery.readonly auth scope ([#1543](https://github.com/googleapis/java-bigquerystorage/issues/1543)) ([a70ae45](https://github.com/googleapis/java-bigquerystorage/commit/a70ae45c013a311aaeccd6885a9b9752bbcf57cc))
+
+
+### Dependencies
+
+* update actions/github-script action to v6 ([#1533](https://github.com/googleapis/java-bigquerystorage/issues/1533)) ([370c3b5](https://github.com/googleapis/java-bigquerystorage/commit/370c3b5bf236ab7853c4cc6d32393f93f5a165e4))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.9.0 ([#1538](https://github.com/googleapis/java-bigquerystorage/issues/1538)) ([43446b2](https://github.com/googleapis/java-bigquerystorage/commit/43446b24438526cc31542a0181fbed610df4b3c0))
+
+
+### Documentation
+
+* **tutorials:** Add STRUCT column to tutorial ([#1534](https://github.com/googleapis/java-bigquerystorage/issues/1534)) ([9595dab](https://github.com/googleapis/java-bigquerystorage/commit/9595dab89144cb13e812f4a277bb424d98c6591c))
+* **tutorials:** Call append asynchronously instead of blocking ([#1542](https://github.com/googleapis/java-bigquerystorage/issues/1542)) ([c777e23](https://github.com/googleapis/java-bigquerystorage/commit/c777e236c21204300231c3d3cbfaa3760da643b8))
+
+### [2.9.1](https://github.com/googleapis/java-bigquerystorage/compare/v2.9.0...v2.9.1) (2022-02-11)
+
+
+### Bug Fixes
+
+* rollback the reconnect after 10MB behavior after the fix for omg… ([#1530](https://github.com/googleapis/java-bigquerystorage/issues/1530)) ([737bd0e](https://github.com/googleapis/java-bigquerystorage/commit/737bd0e2c21332fd1c0c82a12e31ce5749a078fd))
+
+
+### Dependencies
+
+* update arrow.version to v7 (major) ([#1526](https://github.com/googleapis/java-bigquerystorage/issues/1526)) ([b6a4479](https://github.com/googleapis/java-bigquerystorage/commit/b6a4479e023c6c05bccd3451e929105a1f7b8b9d))
+* update dependency org.apache.arrow:arrow-memory-netty to v7 ([#1527](https://github.com/googleapis/java-bigquerystorage/issues/1527)) ([06e927f](https://github.com/googleapis/java-bigquerystorage/commit/06e927f071271c12d7c1904b2d2c3f7f9e8338c7))
+* update dependency org.apache.arrow:arrow-vector to v7 ([#1528](https://github.com/googleapis/java-bigquerystorage/issues/1528)) ([70297cc](https://github.com/googleapis/java-bigquerystorage/commit/70297ccd4828fc08bdf3b021af103aa01975ccb3))
+
+## [2.9.0](https://github.com/googleapis/java-bigquerystorage/compare/v2.8.4...v2.9.0) (2022-02-08)
+
+
+### Features
+
+* add a indicator of how much time a request is waiting for inflight limit ([#1514](https://github.com/googleapis/java-bigquerystorage/issues/1514)) ([54874be](https://github.com/googleapis/java-bigquerystorage/commit/54874be945c2b88be6be03ae654277445c17741d))
+* temp workaround for omg/48020 ([#1521](https://github.com/googleapis/java-bigquerystorage/issues/1521)) ([ff28f65](https://github.com/googleapis/java-bigquerystorage/commit/ff28f65328fbd433117a314cdff7510a28160591))
+
+
+### Bug Fixes
+
+* add a DATE type e2e test ([#1511](https://github.com/googleapis/java-bigquerystorage/issues/1511)) ([5eaf38e](https://github.com/googleapis/java-bigquerystorage/commit/5eaf38ee7fb9f84c454e0e9da5fe9092ff4c456a))
+
+
+### Documentation
+
+* **tutorials:** Add IT to JsonWriteDefaultStream tutorial ([#1522](https://github.com/googleapis/java-bigquerystorage/issues/1522)) ([9fd7aca](https://github.com/googleapis/java-bigquerystorage/commit/9fd7aca8b6032a2c02d0ea91dd063c9ac9e151aa))
+
+### [2.8.4](https://github.com/googleapis/java-bigquerystorage/compare/v2.8.3...v2.8.4) (2022-02-03)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.7.1 ([#1505](https://github.com/googleapis/java-bigquerystorage/issues/1505)) ([a700d92](https://github.com/googleapis/java-bigquerystorage/commit/a700d92c9f591f2b653aad6d79b2f61c4c44df98))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.8.0 ([#1508](https://github.com/googleapis/java-bigquerystorage/issues/1508)) ([b9ab6aa](https://github.com/googleapis/java-bigquerystorage/commit/b9ab6aac2f360f9ab541d83ad1f2d921657a56bf))
+
+
+### Documentation
+
+* **tutorials:** add integration test file structure for tutorials ([#1507](https://github.com/googleapis/java-bigquerystorage/issues/1507)) ([ecb1fbb](https://github.com/googleapis/java-bigquerystorage/commit/ecb1fbb1186a2bb22a2c27ba85ff6ecfab883011))
+* **tutorials:** Add README, other small fixes to JsonWriterDefaultStream tutorial ([#1504](https://github.com/googleapis/java-bigquerystorage/issues/1504)) ([691eae5](https://github.com/googleapis/java-bigquerystorage/commit/691eae56f80a6751f25ef0db4f1d7b4bd6db2f66))
+
+### [2.8.3](https://github.com/googleapis/java-bigquerystorage/compare/v2.8.2...v2.8.3) (2022-01-28)
+
+
+### Dependencies
+
+* **java:** update actions/github-script action to v5 ([#1339](https://github.com/googleapis/java-bigquerystorage/issues/1339)) ([#1491](https://github.com/googleapis/java-bigquerystorage/issues/1491)) ([7eea012](https://github.com/googleapis/java-bigquerystorage/commit/7eea012ee49ebba9c97273abd6331a63868bf72e))
+* update actions/github-script action to v5 ([#1492](https://github.com/googleapis/java-bigquerystorage/issues/1492)) ([580c033](https://github.com/googleapis/java-bigquerystorage/commit/580c03363e5f3b8231e8ef491164badf0b126ca8))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.7.0 ([#1499](https://github.com/googleapis/java-bigquerystorage/issues/1499)) ([0d414f8](https://github.com/googleapis/java-bigquerystorage/commit/0d414f8eaca6daf89b3f981f2c727b217a59e658))
+* upgrade google-cloud-shared-dependencies to v2.7.0 ([#1501](https://github.com/googleapis/java-bigquerystorage/issues/1501)) ([3f75e83](https://github.com/googleapis/java-bigquerystorage/commit/3f75e83cb5140f633204374a315831ccd09dfae3))
+
+
+### Documentation
+
+* **tutorials:** add a README.md ([#1500](https://github.com/googleapis/java-bigquerystorage/issues/1500)) ([c50c6a0](https://github.com/googleapis/java-bigquerystorage/commit/c50c6a039a47cc6e0a1e56966142b21e476074c8))
+* **tutorials:** add new tutorials directory and JsonWriterDefaultStream tutorial ([#1498](https://github.com/googleapis/java-bigquerystorage/issues/1498)) ([fd1ecf2](https://github.com/googleapis/java-bigquerystorage/commit/fd1ecf2a8e7b96b7edbf5c9b6d12dedee8c9ba49))
+
+### [2.8.2](https://github.com/googleapis/java-bigquerystorage/compare/v2.8.1...v2.8.2) (2022-01-25)
+
+
+### Bug Fixes
+
+* **java:** add reflection configuration for native-image testing ([#1488](https://github.com/googleapis/java-bigquerystorage/issues/1488)) ([d87fe28](https://github.com/googleapis/java-bigquerystorage/commit/d87fe282800b4ef4a9c5ecf918278a84eb20ce5d))
+
+
+### Documentation
+
+* **samples:** add finalize call to our samples ([#1471](https://github.com/googleapis/java-bigquerystorage/issues/1471)) ([47e3654](https://github.com/googleapis/java-bigquerystorage/commit/47e36543480bf495f4caea63419bb3b31ac7638c))
+* **samples:** update to v1 in doc URls ([#1489](https://github.com/googleapis/java-bigquerystorage/issues/1489)) ([7efe427](https://github.com/googleapis/java-bigquerystorage/commit/7efe4273d9afebac6f67ed46763d5896b4b1bbcd))
+
+
+### Dependencies
+
+* exclude un-used runtime dependencies brought in by gax-grpc ([#1490](https://github.com/googleapis/java-bigquerystorage/issues/1490)) ([3e7833e](https://github.com/googleapis/java-bigquerystorage/commit/3e7833ea33ceac5f3e7cb9696a6e7ef6e914469b))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.6.1 ([#1473](https://github.com/googleapis/java-bigquerystorage/issues/1473)) ([f996cdb](https://github.com/googleapis/java-bigquerystorage/commit/f996cdbbc6cc9ad7c6a649ebb649ae005054f36e))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.6.2 ([#1475](https://github.com/googleapis/java-bigquerystorage/issues/1475)) ([37c1fd8](https://github.com/googleapis/java-bigquerystorage/commit/37c1fd887acfc5676ebb55e085b6e3514b6e5ca4))
+* update dependency kr.motd.maven:os-maven-plugin to v1.7.0 ([#1476](https://github.com/googleapis/java-bigquerystorage/issues/1476)) ([e038151](https://github.com/googleapis/java-bigquerystorage/commit/e038151442c4fd86e94ab7f3d02989c73a23ee91))
+
+### [2.8.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.8.0...v2.8.1) (2022-01-07)
+
+
+### Bug Fixes
+
+* **java:** run Maven in plain console-friendly mode ([#1301](https://www.github.com/googleapis/java-bigquerystorage/issues/1301)) ([#1461](https://www.github.com/googleapis/java-bigquerystorage/issues/1461)) ([6b9e08c](https://www.github.com/googleapis/java-bigquerystorage/commit/6b9e08c4736cfdb4d98bf3c8f782a87ab68580ce))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.6.0 ([#1459](https://www.github.com/googleapis/java-bigquerystorage/issues/1459)) ([323813c](https://www.github.com/googleapis/java-bigquerystorage/commit/323813c88cd673bbf3f8631f03ac1732f7d3ac53))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.6.0 ([#1467](https://www.github.com/googleapis/java-bigquerystorage/issues/1467)) ([8ebb448](https://www.github.com/googleapis/java-bigquerystorage/commit/8ebb448ff0a1188124c1deeebe4bddbfe277e35b))
+
+## [2.8.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.7.0...v2.8.0) (2021-12-30)
+
+
+### Features
+
+* Add ignoreUnknownField support in JsonWriter ([#1455](https://www.github.com/googleapis/java-bigquerystorage/issues/1455)) ([4616adb](https://www.github.com/googleapis/java-bigquerystorage/commit/4616adb30d07d7be522b74837adae080eca103a6))
+* Add reconnect support to v1 client lib. ([#1446](https://www.github.com/googleapis/java-bigquerystorage/issues/1446)) ([a5157fa](https://www.github.com/googleapis/java-bigquerystorage/commit/a5157faf37354ee48a0af930a68edf4823b5be6f))
+* add schema update support in JsonStreamWriter ([#1447](https://www.github.com/googleapis/java-bigquerystorage/issues/1447)) ([973afcc](https://www.github.com/googleapis/java-bigquerystorage/commit/973afccc22507b8109b3920d3fc183692dcc66c2))
+* support `append()` without offset in `StreamWriter` ([#1452](https://www.github.com/googleapis/java-bigquerystorage/issues/1452)) ([cb8b0ad](https://www.github.com/googleapis/java-bigquerystorage/commit/cb8b0ad25fbf07c3509b3d94244a999b9cb90e54))
+
+
+### Bug Fixes
+
+* allow all fields to be null values ([#1450](https://www.github.com/googleapis/java-bigquerystorage/issues/1450)) ([e47ac79](https://www.github.com/googleapis/java-bigquerystorage/commit/e47ac791765486f02f027d3c440645ef2a379ba9))
+* finish BIGNUMERIC support ([#1449](https://www.github.com/googleapis/java-bigquerystorage/issues/1449)) ([d9d51cd](https://www.github.com/googleapis/java-bigquerystorage/commit/d9d51cd203733a972c80e312e9e279b50fb260fa))
+* fix a NullPtr when user closes a writer without connection being ever established ([#1454](https://www.github.com/googleapis/java-bigquerystorage/issues/1454)) ([b774f5d](https://www.github.com/googleapis/java-bigquerystorage/commit/b774f5d0d00275278708d1299b4912b455be4bed))
+* update storageError support due to server side enhancement ([#1456](https://www.github.com/googleapis/java-bigquerystorage/issues/1456)) ([6243ad5](https://www.github.com/googleapis/java-bigquerystorage/commit/6243ad5cba61d4dae7f4ceb60b09c625e7589215))
+
+## [2.7.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.6.5...v2.7.0) (2021-12-07)
+
+
+### Features
+
+* add write_mode support for BigQuery Storage Write API v1 ([#1441](https://www.github.com/googleapis/java-bigquerystorage/issues/1441)) ([ffe0670](https://www.github.com/googleapis/java-bigquerystorage/commit/ffe067011a79eb96e36f12cb738c34e2763e7c59))
+
+
+### Bug Fixes
+
+* **java:** add -ntp flag to native image testing command ([#1299](https://www.github.com/googleapis/java-bigquerystorage/issues/1299)) ([#1439](https://www.github.com/googleapis/java-bigquerystorage/issues/1439)) ([b6a880c](https://www.github.com/googleapis/java-bigquerystorage/commit/b6a880c90acd195d5f4294de343d81cffe8c359a))
+
+### [2.6.5](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.6.4...v2.6.5) (2021-12-05)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.5.1 ([#1435](https://www.github.com/googleapis/java-bigquerystorage/issues/1435)) ([9116ecf](https://www.github.com/googleapis/java-bigquerystorage/commit/9116ecfc7257265ed575888c4cdc27d8fa4e7692))
+
+### [2.6.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.6.3...v2.6.4) (2021-12-03)
+
+
+### Reverts
+
+* "chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.24" ([#1431](https://www.github.com/googleapis/java-bigquerystorage/issues/1431)) ([b4fab5f](https://www.github.com/googleapis/java-bigquerystorage/commit/b4fab5f00b8d6a58b9768d32f16fb3a013265690))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.5.0 ([#1427](https://www.github.com/googleapis/java-bigquerystorage/issues/1427)) ([bc69fee](https://www.github.com/googleapis/java-bigquerystorage/commit/bc69fee6cfa1ef152ed1a6da61fb4728f1639aa8))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.5.1 ([#1429](https://www.github.com/googleapis/java-bigquerystorage/issues/1429)) ([543c63e](https://www.github.com/googleapis/java-bigquerystorage/commit/543c63e6c00da9a177994b4292ae5cda2ceeab65))
+
+### [2.6.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.6.2...v2.6.3) (2021-11-19)
+
+
+### Dependencies
+
+* update arrow.version to v6.0.1 ([#1417](https://www.github.com/googleapis/java-bigquerystorage/issues/1417)) ([e545cd2](https://www.github.com/googleapis/java-bigquerystorage/commit/e545cd242b5fb12a469a1e3cf389403d889e49cc))
+
+### [2.6.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.6.1...v2.6.2) (2021-11-17)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.4.1 ([#1412](https://www.github.com/googleapis/java-bigquerystorage/issues/1412)) ([e862027](https://www.github.com/googleapis/java-bigquerystorage/commit/e862027ad85c337b352a99fcd669cceb14ceed8c))
+
+### [2.6.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.6.0...v2.6.1) (2021-11-17)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.4.0 ([#1408](https://www.github.com/googleapis/java-bigquerystorage/issues/1408)) ([0ad6ce7](https://www.github.com/googleapis/java-bigquerystorage/commit/0ad6ce7311b9402fd0b4539833f3cf42e485873c))
+
+## [2.6.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.5.1...v2.6.0) (2021-11-15)
+
+
+### Features
+
+* add support for StorageError ([#1391](https://www.github.com/googleapis/java-bigquerystorage/issues/1391)) ([176dc8b](https://www.github.com/googleapis/java-bigquerystorage/commit/176dc8b1fa30cf9a9a98628bd83c9ab487ddb094))
+* DATE and DOUBLE support more input formats ([#1397](https://www.github.com/googleapis/java-bigquerystorage/issues/1397)) ([9c8dc0a](https://www.github.com/googleapis/java-bigquerystorage/commit/9c8dc0aabb471fdb8580f434cc5a66bad585e8f2))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.5.0 ([#1406](https://www.github.com/googleapis/java-bigquerystorage/issues/1406)) ([38f5eb9](https://www.github.com/googleapis/java-bigquerystorage/commit/38f5eb9788e1f090c0034a789a512dcec2384fdb))
+
+### [2.5.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.5.0...v2.5.1) (2021-11-03)
+
+
+### Dependencies
+
+* update dependency org.apache.avro:avro to v1.11.0 ([#1387](https://www.github.com/googleapis/java-bigquerystorage/issues/1387)) ([117ad11](https://www.github.com/googleapis/java-bigquerystorage/commit/117ad11c91850c67c6b99bdecf729e48728bfbbe))
+
+## [2.5.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.4.2...v2.5.0) (2021-10-26)
+
+
+### Features
+
+* next release from main branch is 2.4.1 ([#1376](https://www.github.com/googleapis/java-bigquerystorage/issues/1376)) ([ca21447](https://www.github.com/googleapis/java-bigquerystorage/commit/ca21447e56dacbe2cec4722f037d441479ec2a8f))
+
+
+### Bug Fixes
+
+* BQ/proto schema names should be compared lowercase ([#1369](https://www.github.com/googleapis/java-bigquerystorage/issues/1369)) ([a0da90e](https://www.github.com/googleapis/java-bigquerystorage/commit/a0da90e8de89c5b9ef77183fee86e1e1a7389e00))
+
+
+### Dependencies
+
+* update arrow.version to v6 ([#1383](https://www.github.com/googleapis/java-bigquerystorage/issues/1383)) ([f2e3562](https://www.github.com/googleapis/java-bigquerystorage/commit/f2e3562fc1ed0a1a1e71c077dc6d37ae3fe6b3be))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.3.2 ([#1378](https://www.github.com/googleapis/java-bigquerystorage/issues/1378)) ([5983419](https://www.github.com/googleapis/java-bigquerystorage/commit/5983419a0d71849787876ecb5715c919f6ce04f9))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.3.3 ([#1382](https://www.github.com/googleapis/java-bigquerystorage/issues/1382)) ([8705af7](https://www.github.com/googleapis/java-bigquerystorage/commit/8705af7a11aa6a8f8182193011fc8bc7c4a28a4f))
+
+### [2.4.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.4.1...v2.4.2) (2021-10-20)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.3.1 ([#1370](https://www.github.com/googleapis/java-bigquerystorage/issues/1370)) ([ba1a1ad](https://www.github.com/googleapis/java-bigquerystorage/commit/ba1a1ad1d9ce6d87ec8bdcfd3412792180c58742))
+
+### [2.4.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.4.0...v2.4.1) (2021-10-19)
+
+
+### Bug Fixes
+
+* remove excessive StreamWriter info logging ([#1359](https://www.github.com/googleapis/java-bigquerystorage/issues/1359)) ([0d27d5a](https://www.github.com/googleapis/java-bigquerystorage/commit/0d27d5a10ad62d506a646dcbf0a196e1d57740b0))
+
+
+### Documentation
+
+* **samples:** Update samples to v1 ([#1364](https://www.github.com/googleapis/java-bigquerystorage/issues/1364)) ([b705783](https://www.github.com/googleapis/java-bigquerystorage/commit/b705783d5939c1df96dc565cb763365e1989adb6))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.3.0 ([#1361](https://www.github.com/googleapis/java-bigquerystorage/issues/1361)) ([c8f0051](https://www.github.com/googleapis/java-bigquerystorage/commit/c8f00517a385461a2816afe7b95f8d5347e2fc10))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.4.0 ([#1365](https://www.github.com/googleapis/java-bigquerystorage/issues/1365)) ([69e96aa](https://www.github.com/googleapis/java-bigquerystorage/commit/69e96aaf8f13bd4887ec34af8db2bb5bf740282f))
+
+## [2.4.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.3.3...v2.4.0) (2021-10-12)
+
+
+### Features
+
+* Add INTERVAL and JSON type support to JsonStreamWriter ([#1351](https://www.github.com/googleapis/java-bigquerystorage/issues/1351)) ([f2121a7](https://www.github.com/googleapis/java-bigquerystorage/commit/f2121a796fa04d153124d87bd0d1041a401c0a42))
+
+### [2.3.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.3.2...v2.3.3) (2021-10-05)
+
+
+### Bug Fixes
+
+* add string to DATETIME, TIME, NUMERIC, BIGNUMERIC support in JsonStreamWriter v1 ([#1345](https://www.github.com/googleapis/java-bigquerystorage/issues/1345)) ([9d272dd](https://www.github.com/googleapis/java-bigquerystorage/commit/9d272dd711dfe8909a7b421dabdcdef30f1dc689))
+* JsonWriter accepts string input for DATETIME, TIME, NUMERIC, BIGNUMERIC field ([#1339](https://www.github.com/googleapis/java-bigquerystorage/issues/1339)) ([691f078](https://www.github.com/googleapis/java-bigquerystorage/commit/691f078f09e32fa7784d4afeeee0e8071f78d6fd))
+* Sample should show sending multiple rows in one request ([#1335](https://www.github.com/googleapis/java-bigquerystorage/issues/1335)) ([3f85a68](https://www.github.com/googleapis/java-bigquerystorage/commit/3f85a68d6812aac94ca8a266d76be2aa94cd0b32))
+
+
+### Documentation
+
+* **samples:** Add WriteAPI BUFFERED mode sample ([#1338](https://www.github.com/googleapis/java-bigquerystorage/issues/1338)) ([5dfd523](https://www.github.com/googleapis/java-bigquerystorage/commit/5dfd5231c1ffa68a1b92ba01a9608d8cee2c0596))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.2.0 ([#1346](https://www.github.com/googleapis/java-bigquerystorage/issues/1346)) ([9370eb8](https://www.github.com/googleapis/java-bigquerystorage/commit/9370eb8ea74547792f9597d20707546836c417b6))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.2.1 ([#1347](https://www.github.com/googleapis/java-bigquerystorage/issues/1347)) ([406f5d3](https://www.github.com/googleapis/java-bigquerystorage/commit/406f5d3d446d3a9639b2c95590b3c6c38118d741))
+
+### [2.3.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.3.1...v2.3.2) (2021-10-01)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.13 ([#1336](https://www.github.com/googleapis/java-bigquerystorage/issues/1336)) ([8b2e46f](https://www.github.com/googleapis/java-bigquerystorage/commit/8b2e46f680d95b4e59734cc7793b8d9b69e718a8))
+
+### [2.3.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.3.0...v2.3.1) (2021-09-27)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.12 ([#1327](https://www.github.com/googleapis/java-bigquerystorage/issues/1327)) ([67e694c](https://www.github.com/googleapis/java-bigquerystorage/commit/67e694c447bdea65baefb89dbe738239107f32d9))
+
+## [2.3.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.2.1...v2.3.0) (2021-09-24)
+
+
+### Features
+
+* writeapi v1 manual client lib ([#1323](https://www.github.com/googleapis/java-bigquerystorage/issues/1323)) ([baf8fb3](https://www.github.com/googleapis/java-bigquerystorage/commit/baf8fb3adc2e5135b71dd918ab30b619493a1b83))
+
+### [2.2.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.2.0...v2.2.1) (2021-09-23)
+
+
+### Bug Fixes
+
+* add missing read api retry setting on SplitReadStream ([#1315](https://www.github.com/googleapis/java-bigquerystorage/issues/1315)) ([015d6f4](https://www.github.com/googleapis/java-bigquerystorage/commit/015d6f4bbae4d7a4e8351e8173b25086372cfd8d))
+
+
+### Documentation
+
+* Align session length with public documentation feat: Expose estimated bytes that a session will scan. ([#1310](https://www.github.com/googleapis/java-bigquerystorage/issues/1310)) ([fff5c89](https://www.github.com/googleapis/java-bigquerystorage/commit/fff5c89738187bc4a34ce649ccf9c725a76282f7))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.10 ([#1318](https://www.github.com/googleapis/java-bigquerystorage/issues/1318)) ([f5d8b2d](https://www.github.com/googleapis/java-bigquerystorage/commit/f5d8b2d3fc3036de3b3e1167cd59bd826e451e45))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.11 ([#1320](https://www.github.com/googleapis/java-bigquerystorage/issues/1320)) ([12a2b03](https://www.github.com/googleapis/java-bigquerystorage/commit/12a2b03f0146173249c5b7c4e906e995e2fa6212))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.8 ([#1311](https://www.github.com/googleapis/java-bigquerystorage/issues/1311)) ([e5aa8fd](https://www.github.com/googleapis/java-bigquerystorage/commit/e5aa8fdcb4e1ba111f5eb23b82161b88a2012e31))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.9 ([#1317](https://www.github.com/googleapis/java-bigquerystorage/issues/1317)) ([600531d](https://www.github.com/googleapis/java-bigquerystorage/commit/600531d39f1642dcc4fda44790edc5dbb54d04f7))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.2.1 ([#1308](https://www.github.com/googleapis/java-bigquerystorage/issues/1308)) ([7be798d](https://www.github.com/googleapis/java-bigquerystorage/commit/7be798d3a1aa00bd7a4329b7539bf72cb301c844))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.3.0 ([#1319](https://www.github.com/googleapis/java-bigquerystorage/issues/1319)) ([2f2a44c](https://www.github.com/googleapis/java-bigquerystorage/commit/2f2a44cf649e29dce52ac36ffda91777158caf9a))
+
+## [2.2.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.1.2...v2.2.0) (2021-09-10)
+
+
+### Features
+
+* add trace id support to JsonWriter and add default trace id to help identify json writer users. ([#1302](https://www.github.com/googleapis/java-bigquerystorage/issues/1302)) ([0e749d9](https://www.github.com/googleapis/java-bigquerystorage/commit/0e749d9ee0201bc4653735ac34638452502a1c26))
+
+
+### Bug Fixes
+
+* Accept null json values in JsonToProtoMessage converter ([#1288](https://www.github.com/googleapis/java-bigquerystorage/issues/1288)) ([fb515ab](https://www.github.com/googleapis/java-bigquerystorage/commit/fb515ab0d8681bb7e559e3788f0ec8c0852b6e64))
+* beta cleanup: remove deprecated classes and unused functionalities ([#1300](https://www.github.com/googleapis/java-bigquerystorage/issues/1300)) ([7d08d7b](https://www.github.com/googleapis/java-bigquerystorage/commit/7d08d7b96bc13b6bc72e795b0b975a77d7712882))
+* Cannot share client between appendRows and other function becaus… ([#1290](https://www.github.com/googleapis/java-bigquerystorage/issues/1290)) ([c2dcf6f](https://www.github.com/googleapis/java-bigquerystorage/commit/c2dcf6fea0e6c5ed8085269fbec884deb5f32ad0))
+* remove dependency on google-cloud-bigquery (cyclic dep) ([#1295](https://www.github.com/googleapis/java-bigquerystorage/issues/1295)) ([7ac47de](https://www.github.com/googleapis/java-bigquerystorage/commit/7ac47de0ad5a37fcc7bbb6ea7ce0f5b7e59d276c)), closes [#1249](https://www.github.com/googleapis/java-bigquerystorage/issues/1249)
+* the request limit should be 10MB instead of 8MB ([#1289](https://www.github.com/googleapis/java-bigquerystorage/issues/1289)) ([ed1ea00](https://www.github.com/googleapis/java-bigquerystorage/commit/ed1ea00e25da1501d300f3c80ce0a17cc1f3d883))
+* update comment to be consistent with code ([#1292](https://www.github.com/googleapis/java-bigquerystorage/issues/1292)) ([5669420](https://www.github.com/googleapis/java-bigquerystorage/commit/56694206740ded2edc115a88c0bf4bf4229b4fdf))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.7 ([#1298](https://www.github.com/googleapis/java-bigquerystorage/issues/1298)) ([c156410](https://www.github.com/googleapis/java-bigquerystorage/commit/c1564102147ceaf0bd77b9c86a9e5209dbc73174))
+
+
+### Documentation
+
+* Align session length with public documentation feat: Align ReadRows timeout with other versions of the API. ([#1281](https://www.github.com/googleapis/java-bigquerystorage/issues/1281)) ([b920cd5](https://www.github.com/googleapis/java-bigquerystorage/commit/b920cd59756b9db60026035605447236d4a0adf0))
+* **samples:** update WriteToDefaultStream.java sample ([#1305](https://www.github.com/googleapis/java-bigquerystorage/issues/1305)) ([83c8e23](https://www.github.com/googleapis/java-bigquerystorage/commit/83c8e23b45ad233d82af89df1b61cc39b22ffe1c))
+
+### [2.1.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.1.1...v2.1.2) (2021-09-02)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.5 ([#1279](https://www.github.com/googleapis/java-bigquerystorage/issues/1279)) ([59d031e](https://www.github.com/googleapis/java-bigquerystorage/commit/59d031ee1f4ab1f06bcc7b2d856bc11d29f13f53))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.6 ([#1284](https://www.github.com/googleapis/java-bigquerystorage/issues/1284)) ([8d62b9c](https://www.github.com/googleapis/java-bigquerystorage/commit/8d62b9c31db3077be62650873b81fe3a12110879))
+
+### [2.1.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.1.0...v2.1.1) (2021-08-31)
+
+
+### Dependencies
+
+* update dependency com.google.apis:google-api-services-bigquery to v2-rev20210819-1.32.1 ([#1273](https://www.github.com/googleapis/java-bigquerystorage/issues/1273)) ([0ab4bbb](https://www.github.com/googleapis/java-bigquerystorage/commit/0ab4bbbb1203f0dda49be721df7e2cee3838ec0b))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.3 ([#1266](https://www.github.com/googleapis/java-bigquerystorage/issues/1266)) ([e72d50f](https://www.github.com/googleapis/java-bigquerystorage/commit/e72d50f2d11c629c1bf51b99d6156b3c2004c669))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.4 ([#1269](https://www.github.com/googleapis/java-bigquerystorage/issues/1269)) ([c09c987](https://www.github.com/googleapis/java-bigquerystorage/commit/c09c9877008a2279878edf4e35b0a60e8a59c107))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.2.0 ([#1276](https://www.github.com/googleapis/java-bigquerystorage/issues/1276)) ([7254177](https://www.github.com/googleapis/java-bigquerystorage/commit/725417743876a766e8cd17b1f557540984c5d49b))
+
+## [2.1.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.0.4...v2.1.0) (2021-08-24)
+
+
+### Features
+
+* retry certain RESOURCE_EXHAUSTED errors observed during ReadRows and report retry attempts ([#1257](https://www.github.com/googleapis/java-bigquerystorage/issues/1257)) ([d56e1ca](https://www.github.com/googleapis/java-bigquerystorage/commit/d56e1caf91297d7c2e1e4a9ce1463c04e44619c0))
+
+
+### Documentation
+
+* **sample:** Remove `client` from `JsonStreamWriter` in `WriteCommittedStream` ([#1248](https://www.github.com/googleapis/java-bigquerystorage/issues/1248)) ([6d38bd5](https://www.github.com/googleapis/java-bigquerystorage/commit/6d38bd5e3ff383e55e852081bbea5807796f59dd))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.1.0 ([#1261](https://www.github.com/googleapis/java-bigquerystorage/issues/1261)) ([0edb25d](https://www.github.com/googleapis/java-bigquerystorage/commit/0edb25d4a55f5480d5717672f30b09e6433483b9))
+
+### [2.0.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.0.3...v2.0.4) (2021-08-19)
+
+
+### Dependencies
+
+* update dependency com.google.apis:google-api-services-bigquery to v2-rev20210813-1.32.1 ([#1253](https://www.github.com/googleapis/java-bigquerystorage/issues/1253)) ([b25c960](https://www.github.com/googleapis/java-bigquerystorage/commit/b25c96083b7a2910b5e3cfc92b5d77408e53ee66))
+
+### [2.0.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.0.2...v2.0.3) (2021-08-19)
+
+
+### Dependencies
+
+* update dependency com.google.apis:google-api-services-bigquery to v2-rev20210727-1.32.1 ([#1237](https://www.github.com/googleapis/java-bigquerystorage/issues/1237)) ([29e5204](https://www.github.com/googleapis/java-bigquerystorage/commit/29e52041a4d47cefbd92f51e4bf13cb160bd76da))
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.2 ([#1239](https://www.github.com/googleapis/java-bigquerystorage/issues/1239)) ([5934277](https://www.github.com/googleapis/java-bigquerystorage/commit/593427798a13c6375db26f5656e7956e3dc10164))
+
+### [2.0.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.0.1...v2.0.2) (2021-08-12)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v2.1.0 ([#1232](https://www.github.com/googleapis/java-bigquerystorage/issues/1232)) ([cef4fcb](https://www.github.com/googleapis/java-bigquerystorage/commit/cef4fcb6297dc94252ccb323205c34da7435a778))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.0.1 ([#1233](https://www.github.com/googleapis/java-bigquerystorage/issues/1233)) ([27169f0](https://www.github.com/googleapis/java-bigquerystorage/commit/27169f016ac8302b465a24e92995a54831197064))
+
+### [2.0.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v2.0.0...v2.0.1) (2021-08-10)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.137.2 ([#1224](https://www.github.com/googleapis/java-bigquerystorage/issues/1224)) ([d8a312a](https://www.github.com/googleapis/java-bigquerystorage/commit/d8a312afdba4e2f81e25f9263d27e0c97f725f75))
+* update dependency com.google.cloud:google-cloud-bigquery to v2 ([#1226](https://www.github.com/googleapis/java-bigquerystorage/issues/1226)) ([11c811e](https://www.github.com/googleapis/java-bigquerystorage/commit/11c811ecd44e375e4414578b666dc56d571e0502))
+
+## [2.0.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.23.2...v2.0.0) (2021-08-05)
+
+
+### âš BREAKING CHANGES
+
+* Java 8 breaking generator changes (#1222)
+
+### Features
+
+* Java 8 breaking generator changes ([#1222](https://www.github.com/googleapis/java-bigquerystorage/issues/1222)) ([ac9103c](https://www.github.com/googleapis/java-bigquerystorage/commit/ac9103c18b96933cb724ae9c96a46005bae8160d))
+
+
+### Dependencies
+
+* update dependency com.google.apis:google-api-services-bigquery to v2-rev20210726-1.32.1 ([#1217](https://www.github.com/googleapis/java-bigquerystorage/issues/1217)) ([2ae3d90](https://www.github.com/googleapis/java-bigquerystorage/commit/2ae3d90d25674e8520bf02c84b16efc7f40bfa83))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v2 ([#1219](https://www.github.com/googleapis/java-bigquerystorage/issues/1219)) ([a83da41](https://www.github.com/googleapis/java-bigquerystorage/commit/a83da417b1260ab5086243905603152e5f8e0b97))
+
+### [1.23.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.23.1...v1.23.2) (2021-07-29)
+
+
+### Dependencies
+
+* update arrow.version to v5 ([#1203](https://www.github.com/googleapis/java-bigquerystorage/issues/1203)) ([d56906e](https://www.github.com/googleapis/java-bigquerystorage/commit/d56906e10cc8109987358bcd18d26ac41a0cbdd9))
+
+### [1.23.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.23.0...v1.23.1) (2021-07-22)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.137.1 ([#1190](https://www.github.com/googleapis/java-bigquerystorage/issues/1190)) ([116460f](https://www.github.com/googleapis/java-bigquerystorage/commit/116460f722674bbc4b654da179885194dbe37e1b))
+
+## [1.23.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.8...v1.23.0) (2021-07-14)
+
+
+### Features
+
+* Expand bytes field type handling ([#1180](https://www.github.com/googleapis/java-bigquerystorage/issues/1180)) ([aab33a5](https://www.github.com/googleapis/java-bigquerystorage/commit/aab33a55f3cb91003363ada1395f07868bc17ee5))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.136.0 ([#1176](https://www.github.com/googleapis/java-bigquerystorage/issues/1176)) ([95c77e2](https://www.github.com/googleapis/java-bigquerystorage/commit/95c77e24f2ed8319b0e08194f331a59e975369cc))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.137.0 ([#1184](https://www.github.com/googleapis/java-bigquerystorage/issues/1184)) ([8bf328c](https://www.github.com/googleapis/java-bigquerystorage/commit/8bf328c1e939b46b297c65359433bed8fbda03b2))
+
+### [1.22.8](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.7...v1.22.8) (2021-07-07)
+
+
+### Dependencies
+
+* update dependency com.google.apis:google-api-services-bigquery to v2-rev20210617-1.32.1 ([#1168](https://www.github.com/googleapis/java-bigquerystorage/issues/1168)) ([61d52f0](https://www.github.com/googleapis/java-bigquerystorage/commit/61d52f02a91b698e2996b491f2da7eeba1dd7484))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.135.3 ([#1167](https://www.github.com/googleapis/java-bigquerystorage/issues/1167)) ([14bdcc4](https://www.github.com/googleapis/java-bigquerystorage/commit/14bdcc4809cb5cb39cc063fd8196e1c8a141c7fb))
+
+### [1.22.7](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.6...v1.22.7) (2021-07-01)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.135.2 ([#1163](https://www.github.com/googleapis/java-bigquerystorage/issues/1163)) ([9c11919](https://www.github.com/googleapis/java-bigquerystorage/commit/9c119195a4f64f8d737f71b47d7d2579d014dfd7))
+
+### [1.22.6](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.5...v1.22.6) (2021-06-30)
+
+
+### Documentation
+
+* **sample:** add IT for WriteToDefaultStream ([#1158](https://www.github.com/googleapis/java-bigquerystorage/issues/1158)) ([3280d7a](https://www.github.com/googleapis/java-bigquerystorage/commit/3280d7a0495a25f2509c9d4719439253e0fbaa5d)), closes [#1156](https://www.github.com/googleapis/java-bigquerystorage/issues/1156)
+* user-provided streamOrTableName for default write streams ([#1155](https://www.github.com/googleapis/java-bigquerystorage/issues/1155)) ([fc4a5c0](https://www.github.com/googleapis/java-bigquerystorage/commit/fc4a5c061f51d83e41109ebf04f4202276410e30))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.135.1 ([#1154](https://www.github.com/googleapis/java-bigquerystorage/issues/1154)) ([99f8ebb](https://www.github.com/googleapis/java-bigquerystorage/commit/99f8ebb2fde1fd86315a03dea5719e7a7744d081))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v1.4.0 ([#1159](https://www.github.com/googleapis/java-bigquerystorage/issues/1159)) ([7e1b206](https://www.github.com/googleapis/java-bigquerystorage/commit/7e1b2062f8cb13c05270d86c9ff6863934e7478d))
+
+### [1.22.5](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.4...v1.22.5) (2021-06-28)
+
+
+### Dependencies
+
+* update dependency com.google.apis:google-api-services-bigquery to v2-rev20210617-1.31.5 ([#1147](https://www.github.com/googleapis/java-bigquerystorage/issues/1147)) ([0f4605f](https://www.github.com/googleapis/java-bigquerystorage/commit/0f4605ff5a5cb2cf8f2b961109c5a03a80508993))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.134.0 ([#1146](https://www.github.com/googleapis/java-bigquerystorage/issues/1146)) ([c7b3ca1](https://www.github.com/googleapis/java-bigquerystorage/commit/c7b3ca1894c7a6a9920887d05e6134cb7a9a0cfb))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.135.0 ([#1149](https://www.github.com/googleapis/java-bigquerystorage/issues/1149)) ([f220560](https://www.github.com/googleapis/java-bigquerystorage/commit/f220560a8c967ff2e09d044e377420d18b504be7))
+
+### [1.22.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.3...v1.22.4) (2021-06-24)
+
+
+### Bug Fixes
+
+* Add `shopt -s nullglob` to dependencies script ([#1139](https://www.github.com/googleapis/java-bigquerystorage/issues/1139)) ([fef0aca](https://www.github.com/googleapis/java-bigquerystorage/commit/fef0acac23548ab521fcd98cde19ca1d022fad2b))
+* Add google-api-services-bigquery to google-cloud-bigquerystorage-bom ([#1142](https://www.github.com/googleapis/java-bigquerystorage/issues/1142)) ([4e97130](https://www.github.com/googleapis/java-bigquerystorage/commit/4e97130dd1f703d0f710f27fceb577cef1b06b93))
+* Update dependencies.sh to not break on mac ([#1134](https://www.github.com/googleapis/java-bigquerystorage/issues/1134)) ([85f8c9a](https://www.github.com/googleapis/java-bigquerystorage/commit/85f8c9af7928325fa3c32ec3896b8e3f87279901))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.133.1 ([#1136](https://www.github.com/googleapis/java-bigquerystorage/issues/1136)) ([7248e45](https://www.github.com/googleapis/java-bigquerystorage/commit/7248e459b7c9cdeac573f4bd03cb618d138a7618))
+
+### [1.22.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.2...v1.22.3) (2021-06-11)
+
+
+### Bug Fixes
+
+* Make EOS Matching more robust ([#1128](https://www.github.com/googleapis/java-bigquerystorage/issues/1128)) ([3b5cdbe](https://www.github.com/googleapis/java-bigquerystorage/commit/3b5cdbe769fcebeebc571922c84c129066e76aaf))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.133.0 ([#1124](https://www.github.com/googleapis/java-bigquerystorage/issues/1124)) ([aea80e9](https://www.github.com/googleapis/java-bigquerystorage/commit/aea80e930ac5a9cb5fa8f751c977166d45f1341f))
+
+### [1.22.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.1...v1.22.2) (2021-06-08)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.132.1 ([#1114](https://www.github.com/googleapis/java-bigquerystorage/issues/1114)) ([845078e](https://www.github.com/googleapis/java-bigquerystorage/commit/845078e3f4e8cb273b893a11aaeb61f98120e10e))
+
+### [1.22.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.22.0...v1.22.1) (2021-06-05)
+
+
+### Bug Fixes
+
+* call awaitTermination when close the stream writer ([#1111](https://www.github.com/googleapis/java-bigquerystorage/issues/1111)) ([0f7db50](https://www.github.com/googleapis/java-bigquerystorage/commit/0f7db50bdd8f653f8087550cb2d1eeb47975eadf))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.132.0 ([#1109](https://www.github.com/googleapis/java-bigquerystorage/issues/1109)) ([fc91b02](https://www.github.com/googleapis/java-bigquerystorage/commit/fc91b02a5361b7d80191489405967182445e3b44))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v1.3.0 ([#1108](https://www.github.com/googleapis/java-bigquerystorage/issues/1108)) ([05a936a](https://www.github.com/googleapis/java-bigquerystorage/commit/05a936a7c34c495010d18c2038d08d2662420958))
+
+## [1.22.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.21.1...v1.22.0) (2021-05-31)
+
+
+### âš BREAKING CHANGES
+
+* remove default deadline for AppendRows API (#1101)
+
+### Features
+
+* add `gcf-owl-bot[bot]` to `ignoreAuthors` ([#1092](https://www.github.com/googleapis/java-bigquerystorage/issues/1092)) ([9fe34d1](https://www.github.com/googleapis/java-bigquerystorage/commit/9fe34d1a7ea2b4c1f750fd8805251811a4b0111d))
+
+
+### Bug Fixes
+
+* More robust STREAM_RST logic ([#1102](https://www.github.com/googleapis/java-bigquerystorage/issues/1102)) ([dd67534](https://www.github.com/googleapis/java-bigquerystorage/commit/dd675343b20d614eaf715306f1151532a3a2c33f))
+* remove default deadline for AppendRows API ([#1101](https://www.github.com/googleapis/java-bigquerystorage/issues/1101)) ([87cadf0](https://www.github.com/googleapis/java-bigquerystorage/commit/87cadf01edbdaf876699e98f027835d6594f8072))
+
+
+### Dependencies
+
+* update arrow.version to v4.0.1 ([#1103](https://www.github.com/googleapis/java-bigquerystorage/issues/1103)) ([b2e3489](https://www.github.com/googleapis/java-bigquerystorage/commit/b2e34894f443075ce375b822babcfc329b34c76c))
+* update dependency com.google.truth:truth to v1.1.3 ([#1100](https://www.github.com/googleapis/java-bigquerystorage/issues/1100)) ([12c401f](https://www.github.com/googleapis/java-bigquerystorage/commit/12c401feec1fb7fbaf39ea7ccffee4a02faffeb3))
+
+### [1.21.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.21.0...v1.21.1) (2021-05-19)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.131.1 ([#1087](https://www.github.com/googleapis/java-bigquerystorage/issues/1087)) ([fd418bd](https://www.github.com/googleapis/java-bigquerystorage/commit/fd418bd525e929bb75b340137a95f06ea0977134))
+
+## [1.21.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.6...v1.21.0) (2021-05-19)
+
+
+### Features
+
+* Add ZSTD compression as an option for Arrow proto changes ([d910a89](https://www.github.com/googleapis/java-bigquerystorage/commit/d910a8903d0eed6e8a8a4b7183dc7a0f401f66da))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.131.0 ([#1083](https://www.github.com/googleapis/java-bigquerystorage/issues/1083)) ([70ff6d5](https://www.github.com/googleapis/java-bigquerystorage/commit/70ff6d5ffaaa3ab3a2d6c940403b96ab6f711312))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v1.2.0 ([#1084](https://www.github.com/googleapis/java-bigquerystorage/issues/1084)) ([99fae33](https://www.github.com/googleapis/java-bigquerystorage/commit/99fae331b2d97ff63b61750d7284cd04f6abc2e6))
+
+### [1.20.6](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.5...v1.20.6) (2021-05-18)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.130.0 ([#1075](https://www.github.com/googleapis/java-bigquerystorage/issues/1075)) ([4cf3901](https://www.github.com/googleapis/java-bigquerystorage/commit/4cf39012afef9b2211aabbda891ffacba4344fb7))
+
+### [1.20.5](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.4...v1.20.5) (2021-05-13)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.129.0 ([#1065](https://www.github.com/googleapis/java-bigquerystorage/issues/1065)) ([b94e01f](https://www.github.com/googleapis/java-bigquerystorage/commit/b94e01f473dd99c34cc942a2f649973ba6325cb2))
+
+### [1.20.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.3...v1.20.4) (2021-05-11)
+
+
+### Bug Fixes
+
+* migrate json writer to use StreamWriterV2 ([#1058](https://www.github.com/googleapis/java-bigquerystorage/issues/1058)) ([586777f](https://www.github.com/googleapis/java-bigquerystorage/commit/586777f289f3dc84d2d6237463f128d278d2465f))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v1.1.0 ([#1061](https://www.github.com/googleapis/java-bigquerystorage/issues/1061)) ([d6c3146](https://www.github.com/googleapis/java-bigquerystorage/commit/d6c3146d21282d1e0724583f68a31184d2d7167b))
+
+### [1.20.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.2...v1.20.3) (2021-05-04)
+
+
+### Bug Fixes
+
+* remove schema update capability from jsonwriter and delete related tests ([#1047](https://www.github.com/googleapis/java-bigquerystorage/issues/1047)) ([21e399b](https://www.github.com/googleapis/java-bigquerystorage/commit/21e399bf4fca9b3ef84443ae1d32a6bfe393b61b))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.128.3 ([#1045](https://www.github.com/googleapis/java-bigquerystorage/issues/1045)) ([68beb48](https://www.github.com/googleapis/java-bigquerystorage/commit/68beb4896e5246389c216841dec519a9915362c3))
+
+### [1.20.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.1...v1.20.2) (2021-04-27)
+
+
+### Dependencies
+
+* update arrow.version to v4 ([#1035](https://www.github.com/googleapis/java-bigquerystorage/issues/1035)) ([8e2225c](https://www.github.com/googleapis/java-bigquerystorage/commit/8e2225cf791a17deb674b12586e3ea041358d49c))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.128.1 ([#1033](https://www.github.com/googleapis/java-bigquerystorage/issues/1033)) ([776c670](https://www.github.com/googleapis/java-bigquerystorage/commit/776c670267d2c9bbc730c41f8187ac853b8525d3))
+
+### [1.20.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.20.0...v1.20.1) (2021-04-24)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v1 ([#1030](https://www.github.com/googleapis/java-bigquerystorage/issues/1030)) ([7a00340](https://www.github.com/googleapis/java-bigquerystorage/commit/7a003405cfe301f3729cb373fe7f02da12506369))
+
+## [1.20.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.19.0...v1.20.0) (2021-04-20)
+
+
+### Features
+
+* new JSON type through BigQuery Write ([#1013](https://www.github.com/googleapis/java-bigquerystorage/issues/1013)) ([357e811](https://www.github.com/googleapis/java-bigquerystorage/commit/357e811f5d429cacfce597be9a3e739e659f604a))
+
+
+### Bug Fixes
+
+* It seems GAPIC is not generated expected headers for bidi streaming client lib, apply a temp fix to unblock customers ([#1017](https://www.github.com/googleapis/java-bigquerystorage/issues/1017)) ([9c1ed55](https://www.github.com/googleapis/java-bigquerystorage/commit/9c1ed556c7e3a545932ec8ceff7b3c466e72d84f))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.21.1 ([#1018](https://www.github.com/googleapis/java-bigquerystorage/issues/1018)) ([827764e](https://www.github.com/googleapis/java-bigquerystorage/commit/827764ef215bdb73ccff0a2b9329c2295e5eef1f))
+
+## [1.19.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.18.1...v1.19.0) (2021-04-15)
+
+
+### âš BREAKING CHANGES
+
+* remove v1alpha2 library (#1003)
+
+### Bug Fixes
+
+* release scripts from issuing overlapping phases ([#1006](https://www.github.com/googleapis/java-bigquerystorage/issues/1006)) ([f338201](https://www.github.com/googleapis/java-bigquerystorage/commit/f3382013fa4e14eba89ecbc32bdad813b2880254))
+
+
+### Code Refactoring
+
+* remove v1alpha2 library ([#1003](https://www.github.com/googleapis/java-bigquerystorage/issues/1003)) ([98cd924](https://www.github.com/googleapis/java-bigquerystorage/commit/98cd924e335441f633ad87a0aed118de6951260c))
+
+### [1.18.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.18.0...v1.18.1) (2021-04-10)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.128.0 ([#993](https://www.github.com/googleapis/java-bigquerystorage/issues/993)) ([42989b5](https://www.github.com/googleapis/java-bigquerystorage/commit/42989b55b2fa9e2f2ce0a41092c9c151fb529ed6))
+
+## [1.18.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.17.0...v1.18.0) (2021-04-09)
+
+
+### Features
+
+* add deprecated annotation and tag to bq storage alpha api ([#978](https://www.github.com/googleapis/java-bigquerystorage/issues/978)) ([c7da342](https://www.github.com/googleapis/java-bigquerystorage/commit/c7da34252ee8c243be3ce737d03e1e12f10a5eba))
+* re-generated to pick up changes from googleapis. ([#982](https://www.github.com/googleapis/java-bigquerystorage/issues/982)) ([17bfbd8](https://www.github.com/googleapis/java-bigquerystorage/commit/17bfbd8dffd854356ea503adf3a6e065f1e1a4ee))
+
+
+### Bug Fixes
+
+* Cleanup JsonWriter bytes conversion code and add some test coverage ([#984](https://www.github.com/googleapis/java-bigquerystorage/issues/984)) ([e43df34](https://www.github.com/googleapis/java-bigquerystorage/commit/e43df3403c4d7644032cef6e1f1cf59e6ec1b5eb))
+
+
+### Documentation
+
+* update region tag for the storage quickstart ([#985](https://www.github.com/googleapis/java-bigquerystorage/issues/985)) ([1d0d6c3](https://www.github.com/googleapis/java-bigquerystorage/commit/1d0d6c3a877943b83775430d5a2bf7fcd24a1f21))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.12 ([#986](https://www.github.com/googleapis/java-bigquerystorage/issues/986)) ([d39bd79](https://www.github.com/googleapis/java-bigquerystorage/commit/d39bd79a69e987baa7721b907cdccb59d1ea4a74))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.21.0 ([#987](https://www.github.com/googleapis/java-bigquerystorage/issues/987)) ([4fa3dbb](https://www.github.com/googleapis/java-bigquerystorage/commit/4fa3dbba64586f6bf943ba67f225fad1b994e5a7))
+
+## [1.17.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.16.1...v1.17.0) (2021-03-30)
+
+
+### Features
+
+* add a Arrow compression options (Only LZ4 for now) ([#972](https://www.github.com/googleapis/java-bigquerystorage/issues/972)) ([de0c0d2](https://www.github.com/googleapis/java-bigquerystorage/commit/de0c0d2c0a5e8b85a0f2aa5679a22fb8846a5fd0))
+* BigDecimal and ByteString encoding ([#971](https://www.github.com/googleapis/java-bigquerystorage/issues/971)) ([82b556e](https://www.github.com/googleapis/java-bigquerystorage/commit/82b556e08d19a4dd969bda53409276c6408a4126))
+
+### [1.16.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.16.0...v1.16.1) (2021-03-26)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.11 ([#962](https://www.github.com/googleapis/java-bigquerystorage/issues/962)) ([87a821e](https://www.github.com/googleapis/java-bigquerystorage/commit/87a821ec7a6d6cf4fd2a214c1bbdc3691351ba61))
+
+## [1.16.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.15.1...v1.16.0) (2021-03-25)
+
+
+### Features
+
+* Add CivilTimeEncoder to encode and decode DateTime/Time as numerics ([#937](https://www.github.com/googleapis/java-bigquerystorage/issues/937)) ([969b429](https://www.github.com/googleapis/java-bigquerystorage/commit/969b4290b9934b94b1a0113e04e37ff44b2a536e))
+
+
+### Bug Fixes
+
+* add a deprecation message on StreamWriter ([#922](https://www.github.com/googleapis/java-bigquerystorage/issues/922)) ([fce5289](https://www.github.com/googleapis/java-bigquerystorage/commit/fce52890c6948a9b78a62d2fe0e4f9768d10d401))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.10 ([#955](https://www.github.com/googleapis/java-bigquerystorage/issues/955)) ([c810c72](https://www.github.com/googleapis/java-bigquerystorage/commit/c810c7279bfbad31cb0f94f5ad5d4a74342d4481))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.9 ([#947](https://www.github.com/googleapis/java-bigquerystorage/issues/947)) ([d781dc5](https://www.github.com/googleapis/java-bigquerystorage/commit/d781dc5479602fee01eb971033978317e5669694))
+
+
+### Documentation
+
+* **samples:** Check for error from BatchCommitWriteStreams ([#940](https://www.github.com/googleapis/java-bigquerystorage/issues/940)) ([ab3c145](https://www.github.com/googleapis/java-bigquerystorage/commit/ab3c1453d3c1fb627e773d0e7ca4ec991f8d38b7))
+
+### [1.15.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.15.0...v1.15.1) (2021-03-17)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.8 ([#934](https://www.github.com/googleapis/java-bigquerystorage/issues/934)) ([626ae23](https://www.github.com/googleapis/java-bigquerystorage/commit/626ae2338a08aa9933badcd32d926cd51515e1e5))
+* update dependency org.apache.avro:avro to v1.10.2 ([#942](https://www.github.com/googleapis/java-bigquerystorage/issues/942)) ([1554247](https://www.github.com/googleapis/java-bigquerystorage/commit/1554247cf55aa56281a530c721ab1650699a3efc))
+
+## [1.15.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.14.0...v1.15.0) (2021-03-09)
+
+
+### âš BREAKING CHANGES
+
+* remove deprecated append method in StreamWriterV2 (#924)
+
+### Features
+
+* remove deprecated append method in StreamWriterV2 ([#924](https://www.github.com/googleapis/java-bigquerystorage/issues/924)) ([f278775](https://www.github.com/googleapis/java-bigquerystorage/commit/f2787751bf03d91d1575ee6e007f407f91d97157))
+
+
+### Bug Fixes
+
+* Revive schema update e2e test and adjust some test names ([#921](https://www.github.com/googleapis/java-bigquerystorage/issues/921)) ([dd392e5](https://www.github.com/googleapis/java-bigquerystorage/commit/dd392e54953e0b75e780532a4dab2d143b8d8665))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.20.1 ([#931](https://www.github.com/googleapis/java-bigquerystorage/issues/931)) ([8c716c5](https://www.github.com/googleapis/java-bigquerystorage/commit/8c716c5d26420ef03f76a302c76892894045d4ad))
+
+## [1.14.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.13.0...v1.14.0) (2021-03-04)
+
+
+### Features
+
+* update StreamWriterV2 to support trace id ([#895](https://www.github.com/googleapis/java-bigquerystorage/issues/895)) ([2e49ce8](https://www.github.com/googleapis/java-bigquerystorage/commit/2e49ce8c79cb059840c3307898ba16980f6892fa))
+
+
+### Bug Fixes
+
+* add schema update back to json writer ([#905](https://www.github.com/googleapis/java-bigquerystorage/issues/905)) ([a2adbf8](https://www.github.com/googleapis/java-bigquerystorage/commit/a2adbf80753161cbddd23d5a7db75e9250db58fa))
+* Add unit test for concurrent issues we worried about, and fix some locking issues ([#854](https://www.github.com/googleapis/java-bigquerystorage/issues/854)) ([0870797](https://www.github.com/googleapis/java-bigquerystorage/commit/087079728195e20f93701e8d5e1e59ba29a7d21b))
+* test failure testAppendWhileShutdownSuccess ([#904](https://www.github.com/googleapis/java-bigquerystorage/issues/904)) ([b80183e](https://www.github.com/googleapis/java-bigquerystorage/commit/b80183ea23c8b78611a42d22d8c62a4ba4904a80))
+* testAppendWhileShutdownSuccess race ([#907](https://www.github.com/googleapis/java-bigquerystorage/issues/907)) ([d39443d](https://www.github.com/googleapis/java-bigquerystorage/commit/d39443d51d2625e4b3aee59d1e593229e9e449d3))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.6 ([#909](https://www.github.com/googleapis/java-bigquerystorage/issues/909)) ([505938b](https://www.github.com/googleapis/java-bigquerystorage/commit/505938bcba5a4a7af9e618572bbc41f365702f47))
+
+## [1.13.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.12.0...v1.13.0) (2021-03-01)
+
+
+### Features
+
+* **generator:** update protoc to v3.15.3 ([#898](https://www.github.com/googleapis/java-bigquerystorage/issues/898)) ([2f277d6](https://www.github.com/googleapis/java-bigquerystorage/commit/2f277d650e8f617c6253843baf73d5d220713a61))
+* in StreamWriterV2, supports new append, which takes rows and offset ([#894](https://www.github.com/googleapis/java-bigquerystorage/issues/894)) ([f3865b0](https://www.github.com/googleapis/java-bigquerystorage/commit/f3865b06ea7c61e95d3ee9bc7b46857d9d3080cc))
+* StreamWriterV2 will handle schema/streamName attachment ([#877](https://www.github.com/googleapis/java-bigquerystorage/issues/877)) ([c54bcfe](https://www.github.com/googleapis/java-bigquerystorage/commit/c54bcfec1706eef58eaf9dad8b49dc79fc8da133))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.5 ([#896](https://www.github.com/googleapis/java-bigquerystorage/issues/896)) ([d211c76](https://www.github.com/googleapis/java-bigquerystorage/commit/d211c76dff747121d4560b55818c10bf595ef1c3))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.20.0 ([#892](https://www.github.com/googleapis/java-bigquerystorage/issues/892)) ([438f1c3](https://www.github.com/googleapis/java-bigquerystorage/commit/438f1c3b551e6b97a3241c69f2006a5a6be78c4f))
+
+## [1.12.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.11.0...v1.12.0) (2021-02-25)
+
+
+### Features
+
+* StreamWriterV2 sets exception for response with error ([#884](https://www.github.com/googleapis/java-bigquerystorage/issues/884)) ([4677d7b](https://www.github.com/googleapis/java-bigquerystorage/commit/4677d7bd56db6c76106daeb7be38fa65f1c9c745))
+
+
+### Documentation
+
+* **sample:** Update parallel append sample to use StreamWriterV2 ([#883](https://www.github.com/googleapis/java-bigquerystorage/issues/883)) ([5c5c690](https://www.github.com/googleapis/java-bigquerystorage/commit/5c5c690fe39b3055596712dbd39064aed0b023da))
+
+## [1.11.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.10.0...v1.11.0) (2021-02-24)
+
+
+### Features
+
+* Add max size check to StreamWriterV2 ([#873](https://www.github.com/googleapis/java-bigquerystorage/issues/873)) ([0261af4](https://www.github.com/googleapis/java-bigquerystorage/commit/0261af4e2dff5fd8515109c6336796815acb6c3c))
+* Support building a BigQueryWriteClient within the StreamWriterV2 ([#876](https://www.github.com/googleapis/java-bigquerystorage/issues/876)) ([237c827](https://www.github.com/googleapis/java-bigquerystorage/commit/237c82711649672de1ce2e7382b909b74c0cd709))
+* Support inflight control in StreamWriterV2 ([#875](https://www.github.com/googleapis/java-bigquerystorage/issues/875)) ([854c81e](https://www.github.com/googleapis/java-bigquerystorage/commit/854c81e20c3651295fd2dd5c9e87f48c67a9eeff))
+
+
+### Documentation
+
+* **samples:** add a new sample for parallel append ([#863](https://www.github.com/googleapis/java-bigquerystorage/issues/863)) ([ed1c265](https://www.github.com/googleapis/java-bigquerystorage/commit/ed1c26588ceb3e0d852fabefe8b3a89b8c74e6dd))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.4 ([#869](https://www.github.com/googleapis/java-bigquerystorage/issues/869)) ([de747ec](https://www.github.com/googleapis/java-bigquerystorage/commit/de747ec971f28919438b14c9f77ec7a2fa3a5628))
+
+## [1.10.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.9.1...v1.10.0) (2021-02-23)
+
+
+### Features
+
+* Create Stream writer v2 - starting with core logics ([#867](https://www.github.com/googleapis/java-bigquerystorage/issues/867)) ([7c01f45](https://www.github.com/googleapis/java-bigquerystorage/commit/7c01f45ded1c516c23954b88103ca80b2132ecfc))
+
+
+### Bug Fixes
+
+* Remove flushAll method ([#850](https://www.github.com/googleapis/java-bigquerystorage/issues/850)) ([33a4502](https://www.github.com/googleapis/java-bigquerystorage/commit/33a450286b999c41459f92dd0177239f2a1b1f9a))
+* temporally disable refreshAppend ([#853](https://www.github.com/googleapis/java-bigquerystorage/issues/853)) ([baf973d](https://www.github.com/googleapis/java-bigquerystorage/commit/baf973d84577cd490e275f6eebf91e25d5c34ccc))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.3 ([#861](https://www.github.com/googleapis/java-bigquerystorage/issues/861)) ([da95d18](https://www.github.com/googleapis/java-bigquerystorage/commit/da95d18a265950de437386870e5f1dba3be75743))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.19.0 ([#862](https://www.github.com/googleapis/java-bigquerystorage/issues/862)) ([4e390d7](https://www.github.com/googleapis/java-bigquerystorage/commit/4e390d7f5ca80ce87bfc0be3ce4ef4a33f9735ab))
+
+### [1.9.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.9.0...v1.9.1) (2021-02-18)
+
+
+### Bug Fixes
+
+* remove reconnection feature from client library ([#849](https://www.github.com/googleapis/java-bigquerystorage/issues/849)) ([86dfc3a](https://www.github.com/googleapis/java-bigquerystorage/commit/86dfc3a1b1e3429a1e0932919a300a3bbbcb1ceb))
+
+## [1.9.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.8.5...v1.9.0) (2021-02-17)
+
+
+### Features
+
+* generate sample code in the Java microgenerator ([#821](https://www.github.com/googleapis/java-bigquerystorage/issues/821)) ([3ab9a30](https://www.github.com/googleapis/java-bigquerystorage/commit/3ab9a309441a681e8adec88f8b8af1298a89cd74))
+
+
+### Bug Fixes
+
+* add dataflow trace id support ([#827](https://www.github.com/googleapis/java-bigquerystorage/issues/827)) ([8d22c58](https://www.github.com/googleapis/java-bigquerystorage/commit/8d22c586ed8a265558b84619297f5bd5b5ec4cb4))
+* shutdown stuck when there is error on the flush path ([#831](https://www.github.com/googleapis/java-bigquerystorage/issues/831)) ([c2fd750](https://www.github.com/googleapis/java-bigquerystorage/commit/c2fd750e1309fb7b6eb862dea1ad8546dcd78bef))
+* update repo name ([#818](https://www.github.com/googleapis/java-bigquerystorage/issues/818)) ([ba4b1a2](https://www.github.com/googleapis/java-bigquerystorage/commit/ba4b1a2d8eaa8f5408e476a3b570cb508aa94f57))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.0 ([#825](https://www.github.com/googleapis/java-bigquerystorage/issues/825)) ([36322fb](https://www.github.com/googleapis/java-bigquerystorage/commit/36322fb1f3d3d286cf8fc6b66f5aa1b97e754d72))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.1 ([#828](https://www.github.com/googleapis/java-bigquerystorage/issues/828)) ([c24a6ae](https://www.github.com/googleapis/java-bigquerystorage/commit/c24a6ae3d5a091b5276036d1d7f01e2777bbfd82))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.127.2 ([#830](https://www.github.com/googleapis/java-bigquerystorage/issues/830)) ([94c7848](https://www.github.com/googleapis/java-bigquerystorage/commit/94c78485baa383cd41ee7001206d5bc19f7746bf))
+* update dependency junit:junit to v4.13.2 ([#829](https://www.github.com/googleapis/java-bigquerystorage/issues/829)) ([c2e429a](https://www.github.com/googleapis/java-bigquerystorage/commit/c2e429a591131cd2c89982c746f860a8fd0c7aef))
+
+### [1.8.5](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.8.4...v1.8.5) (2021-01-17)
+
+
+### Bug Fixes
+
+* StreamWriter hang when we reach the inflight limit control and is doing a retry ([#799](https://www.github.com/googleapis/java-bigquerystorage/issues/799)) ([f8f9770](https://www.github.com/googleapis/java-bigquerystorage/commit/f8f97701e5ca698a170a1d3b6ecb3886e186f9d5))
+
+### [1.8.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.8.3...v1.8.4) (2021-01-14)
+
+
+### Bug Fixes
+
+* default stream integration test failures due to production expected change ([#791](https://www.github.com/googleapis/java-bigquerystorage/issues/791)) ([1c2b5c1](https://www.github.com/googleapis/java-bigquerystorage/commit/1c2b5c1ef478305fe7f3d9f1843750cec18ba9f8))
+
+
+### Documentation
+
+* **samples:** jsonstreamwriter samples ([#756](https://www.github.com/googleapis/java-bigquerystorage/issues/756)) ([929b2ce](https://www.github.com/googleapis/java-bigquerystorage/commit/929b2cea1951bbe45eea596163f9a7a74d0ab041))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.126.6 ([#794](https://www.github.com/googleapis/java-bigquerystorage/issues/794)) ([8e68546](https://www.github.com/googleapis/java-bigquerystorage/commit/8e68546f1e86553919766f9333ad911ba7da8442))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.18.0 ([#795](https://www.github.com/googleapis/java-bigquerystorage/issues/795)) ([86036bb](https://www.github.com/googleapis/java-bigquerystorage/commit/86036bb5caca125b38a64bd63acc5486a87b8e35))
+* update protobuf ([#790](https://www.github.com/googleapis/java-bigquerystorage/issues/790)) ([792e925](https://www.github.com/googleapis/java-bigquerystorage/commit/792e925840e99033a1f194b2bfb372dae79d3d0d))
+
+### [1.8.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.8.2...v1.8.3) (2021-01-12)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.126.4 ([#782](https://www.github.com/googleapis/java-bigquerystorage/issues/782)) ([ced40d0](https://www.github.com/googleapis/java-bigquerystorage/commit/ced40d09ed6f84ab86f83bec009b6d29f8d65358))
+
+### [1.8.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.8.1...v1.8.2) (2021-01-12)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.17.1 ([#778](https://www.github.com/googleapis/java-bigquerystorage/issues/778)) ([b4099d0](https://www.github.com/googleapis/java-bigquerystorage/commit/b4099d0bcd80a650d491996b3dc3def81bdd97ef))
+
+### [1.8.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.8.0...v1.8.1) (2021-01-11)
+
+
+### Dependencies
+
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.12.1 ([#770](https://www.github.com/googleapis/java-bigquerystorage/issues/770)) ([2f276bd](https://www.github.com/googleapis/java-bigquerystorage/commit/2f276bdf254a06f38a87d9ab93bd73334dd19927))
+
+## [1.8.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.7.2...v1.8.0) (2021-01-05)
+
+
+### Features
+
+* add default stream support for StreamWriter ([#744](https://www.github.com/googleapis/java-bigquerystorage/issues/744)) ([248ab73](https://www.github.com/googleapis/java-bigquerystorage/commit/248ab73eebb9feda94e7e29de591a70c91a064c1))
+* better default stream support in client library ([#750](https://www.github.com/googleapis/java-bigquerystorage/issues/750)) ([488f258](https://www.github.com/googleapis/java-bigquerystorage/commit/488f2589a793ef9efcab64a9bed9af05f5b1620d)), closes [#749](https://www.github.com/googleapis/java-bigquerystorage/issues/749) [#746](https://www.github.com/googleapis/java-bigquerystorage/issues/746)
+* remove IgnoreUnknownFields support on JsonStreamWriter ([#757](https://www.github.com/googleapis/java-bigquerystorage/issues/757)) ([0988105](https://www.github.com/googleapis/java-bigquerystorage/commit/09881051a98f7d1675c3ec0850ef36dbe2ffa481))
+* updates to Write API v1beta2 public interface, migrate to Java microgenerator ([#728](https://www.github.com/googleapis/java-bigquerystorage/issues/728)) ([2fc5968](https://www.github.com/googleapis/java-bigquerystorage/commit/2fc59689dfe64be6c23104493f690f476a0cda7f))
+
+
+### Bug Fixes
+
+* An extra test that is still calling old JsonStreamWriter append ([#760](https://www.github.com/googleapis/java-bigquerystorage/issues/760)) ([af72e6e](https://www.github.com/googleapis/java-bigquerystorage/commit/af72e6e9b4100e4f47fad4139437a04aa3ee7535))
+* enable tests that are disabled due to breaking change and stop ignoring ALREADY_EXISTED error ([#748](https://www.github.com/googleapis/java-bigquerystorage/issues/748)) ([8caf5a2](https://www.github.com/googleapis/java-bigquerystorage/commit/8caf5a26baf865c55405363f9d78756bce2d5219))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.126.3 ([#739](https://www.github.com/googleapis/java-bigquerystorage/issues/739)) ([29f2bac](https://www.github.com/googleapis/java-bigquerystorage/commit/29f2bacb49e977d2e2007123c0c935add264cbc0))
+
+### [1.7.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.7.1...v1.7.2) (2020-12-15)
+
+
+### Bug Fixes
+
+* Disable Breaking change related code site ([#731](https://www.github.com/googleapis/java-bigquerystorage/issues/731)) ([d180293](https://www.github.com/googleapis/java-bigquerystorage/commit/d180293b47484c6257ae065f7ea2a5a6be8a5383))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.17.0 ([#735](https://www.github.com/googleapis/java-bigquerystorage/issues/735)) ([131d7a7](https://www.github.com/googleapis/java-bigquerystorage/commit/131d7a7626adebf9a0c97ffb2b0183a55086b5f7))
+
+### [1.7.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.7.0...v1.7.1) (2020-12-14)
+
+
+### Bug Fixes
+
+* a build break caused by breaking change. ([#729](https://www.github.com/googleapis/java-bigquerystorage/issues/729)) ([a1b1c8e](https://www.github.com/googleapis/java-bigquerystorage/commit/a1b1c8edce87a8d33faf1067f617e3f47c4afc45))
+* A test race in JsonStreamWriterTest ([#722](https://www.github.com/googleapis/java-bigquerystorage/issues/722)) ([35fe606](https://www.github.com/googleapis/java-bigquerystorage/commit/35fe606e43a47dfe844666bf3e385f9c2e582977))
+* Add special type tests for Json writer and fix some type mapping issues ([#725](https://www.github.com/googleapis/java-bigquerystorage/issues/725)) ([ab6213c](https://www.github.com/googleapis/java-bigquerystorage/commit/ab6213c244162c74242d3aaf543bfcf9b2eb4405))
+* Temporally disable test/code where breaking change is used to help pushing out the breaking change in unreleased Beta ([#727](https://www.github.com/googleapis/java-bigquerystorage/issues/727)) ([38c95c2](https://www.github.com/googleapis/java-bigquerystorage/commit/38c95c23459eb9c4a7215b1a3cb5243165f79815))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.16.1 ([d70bc3e](https://www.github.com/googleapis/java-bigquerystorage/commit/d70bc3e211ec579129ba53679572b49187f6b6e5))
+
+## [1.7.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.7...v1.7.0) (2020-12-09)
+
+
+### Features
+
+* v1beta2 manual client library for BigQueryWrite ([#714](https://www.github.com/googleapis/java-bigquerystorage/issues/714)) ([53a9c3a](https://www.github.com/googleapis/java-bigquerystorage/commit/53a9c3aaf7e6a17d10ceecaf9cef5eb3e81a58ee))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.126.0 ([#708](https://www.github.com/googleapis/java-bigquerystorage/issues/708)) ([24a98c8](https://www.github.com/googleapis/java-bigquerystorage/commit/24a98c88b5531210efa8ba7b474f89d9b790df16))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.126.1 ([#716](https://www.github.com/googleapis/java-bigquerystorage/issues/716)) ([03aa545](https://www.github.com/googleapis/java-bigquerystorage/commit/03aa5455baf29e10b5938829f340ce865574453d))
+
+### [1.6.7](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.6...v1.6.7) (2020-12-03)
+
+
+### Dependencies
+
+* update dependency org.apache.avro:avro to v1.10.1 ([#703](https://www.github.com/googleapis/java-bigquerystorage/issues/703)) ([9b5480a](https://www.github.com/googleapis/java-bigquerystorage/commit/9b5480af03b104c8b3c76e88534e39644570296a))
+
+### [1.6.6](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.5...v1.6.6) (2020-12-02)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.16.0 ([#696](https://www.github.com/googleapis/java-bigquerystorage/issues/696)) ([dae7ee0](https://www.github.com/googleapis/java-bigquerystorage/commit/dae7ee00839c0f1fce728c19d8974d49a5f4805d))
+
+### [1.6.5](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.4...v1.6.5) (2020-12-02)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.125.0 ([#682](https://www.github.com/googleapis/java-bigquerystorage/issues/682)) ([978b304](https://www.github.com/googleapis/java-bigquerystorage/commit/978b30429bd7daa4f462f2bcc5a4feacb0a63c5a))
+
+### [1.6.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.3...v1.6.4) (2020-11-16)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.124.6 ([#676](https://www.github.com/googleapis/java-bigquerystorage/issues/676)) ([3f3d665](https://www.github.com/googleapis/java-bigquerystorage/commit/3f3d6651ecd8193580091ab51fc3aaa19e879dec))
+
+### [1.6.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.2...v1.6.3) (2020-11-12)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.124.5 ([#666](https://www.github.com/googleapis/java-bigquerystorage/issues/666)) ([eeccba7](https://www.github.com/googleapis/java-bigquerystorage/commit/eeccba734676aaa873e59b1ebf86726b04e48747))
+
+### [1.6.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.1...v1.6.2) (2020-11-11)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.124.4 ([#653](https://www.github.com/googleapis/java-bigquerystorage/issues/653)) ([48fb650](https://www.github.com/googleapis/java-bigquerystorage/commit/48fb6502884c0df6c962a7e2be841110e1b6c9ee))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.15.0 ([#662](https://www.github.com/googleapis/java-bigquerystorage/issues/662)) ([6cf80d8](https://www.github.com/googleapis/java-bigquerystorage/commit/6cf80d87f3766359eda172324249bbe6c0461111))
+
+### [1.6.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.6.0...v1.6.1) (2020-11-01)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.124.0 ([#644](https://www.github.com/googleapis/java-bigquerystorage/issues/644)) ([1f08141](https://www.github.com/googleapis/java-bigquerystorage/commit/1f08141e865322ea71c5cccfe459eb089d364ee8))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.124.1 ([#648](https://www.github.com/googleapis/java-bigquerystorage/issues/648)) ([8077e9f](https://www.github.com/googleapis/java-bigquerystorage/commit/8077e9f31385ad770585d7d611e4b42f21aa1673))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.14.1 ([#650](https://www.github.com/googleapis/java-bigquerystorage/issues/650)) ([8bc7210](https://www.github.com/googleapis/java-bigquerystorage/commit/8bc72109956c9b26d5ab53ea777d196c267b1681))
+
+## [1.6.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.6...v1.6.0) (2020-10-27)
+
+
+### Features
+
+* bigquery Write API V1Beta2 public interface. ([#637](https://www.github.com/googleapis/java-bigquerystorage/issues/637)) ([bb21e7b](https://www.github.com/googleapis/java-bigquerystorage/commit/bb21e7bc2b206e7720855d032889f4bc45121f9a))
+
+
+### Bug Fixes
+
+* remove stream ttl in client library, since there is no very clear TTL defined. ([#627](https://www.github.com/googleapis/java-bigquerystorage/issues/627)) ([2ae69b6](https://www.github.com/googleapis/java-bigquerystorage/commit/2ae69b640adc48b79f0aab71c215eb3ef055a34c))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.123.1 ([#632](https://www.github.com/googleapis/java-bigquerystorage/issues/632)) ([7b5fc9b](https://www.github.com/googleapis/java-bigquerystorage/commit/7b5fc9b917035ca3b419b71abb0f9d6a4ca59950))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.123.2 ([#633](https://www.github.com/googleapis/java-bigquerystorage/issues/633)) ([bf6260e](https://www.github.com/googleapis/java-bigquerystorage/commit/bf6260ebe01d040e42f3eb4b3b8262054f9316bf))
+
+### [1.5.6](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.5...v1.5.6) (2020-10-20)
+
+
+### Bug Fixes
+
+* Due to backend issues resolved, we no longer need to wait for 5 seconds between reconnection ([#610](https://www.github.com/googleapis/java-bigquerystorage/issues/610)) ([f536fc7](https://www.github.com/googleapis/java-bigquerystorage/commit/f536fc7c998ac7d6c54e7d8b3bb7f9a2d6b5626b))
+* test failure due to message start appending entity ([#609](https://www.github.com/googleapis/java-bigquerystorage/issues/609)) ([63b1762](https://www.github.com/googleapis/java-bigquerystorage/commit/63b17629c62bb06f2651e914ff2988def5107ae7))
+
+
+### Dependencies
+
+* update arrow.version to v2 ([#613](https://www.github.com/googleapis/java-bigquerystorage/issues/613)) ([4b07ee2](https://www.github.com/googleapis/java-bigquerystorage/commit/4b07ee26fea5b58fbf18f342c3e9d5220361d45e))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.123.0 ([#618](https://www.github.com/googleapis/java-bigquerystorage/issues/618)) ([d565550](https://www.github.com/googleapis/java-bigquerystorage/commit/d56555042f886b81eb74701f3ed87cf4fea2fc72))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.11.0 ([#601](https://www.github.com/googleapis/java-bigquerystorage/issues/601)) ([0527f44](https://www.github.com/googleapis/java-bigquerystorage/commit/0527f447826e2829801bbdfcd6db55b6e79acb32))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.12.1 ([#615](https://www.github.com/googleapis/java-bigquerystorage/issues/615)) ([dfc6436](https://www.github.com/googleapis/java-bigquerystorage/commit/dfc6436353ec2a00cd4ecb3c47503757177e33a9))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.13.0 ([#619](https://www.github.com/googleapis/java-bigquerystorage/issues/619)) ([4a24bf8](https://www.github.com/googleapis/java-bigquerystorage/commit/4a24bf881109d84318a3911a71cbff2657a61f7d))
+* update dependency com.google.truth:truth to v1.1 ([#617](https://www.github.com/googleapis/java-bigquerystorage/issues/617)) ([bcab936](https://www.github.com/googleapis/java-bigquerystorage/commit/bcab936673226f771dcfd77f07066d67b64e08dd))
+* update dependency junit:junit to v4.13.1 ([#598](https://www.github.com/googleapis/java-bigquerystorage/issues/598)) ([a732ae0](https://www.github.com/googleapis/java-bigquerystorage/commit/a732ae00dff2dde67478e0eb02308096ba6dc192))
+
+### [1.5.5](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.4...v1.5.5) (2020-10-09)
+
+
+### Bug Fixes
+
+* exception tests ([#586](https://www.github.com/googleapis/java-bigquerystorage/issues/586)) ([4e3ad9b](https://www.github.com/googleapis/java-bigquerystorage/commit/4e3ad9bf65190b7e68902e4e62ecfd5c3b80d795))
+* remove apache commons lang ([#585](https://www.github.com/googleapis/java-bigquerystorage/issues/585)) ([1c85e8f](https://www.github.com/googleapis/java-bigquerystorage/commit/1c85e8fbf5b2b4e2073c72a86efd83812cabac37))
+
+
+### Dependencies
+
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.11.3 ([#580](https://www.github.com/googleapis/java-bigquerystorage/issues/580)) ([8d800fa](https://www.github.com/googleapis/java-bigquerystorage/commit/8d800fac7c7dbf1d44cdfa350779be87970a10da))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.122.0 ([#579](https://www.github.com/googleapis/java-bigquerystorage/issues/579)) ([0bf5220](https://www.github.com/googleapis/java-bigquerystorage/commit/0bf5220009360ac7ccba6463d32b842bc9158c7b))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.122.1 ([#588](https://www.github.com/googleapis/java-bigquerystorage/issues/588)) ([496205e](https://www.github.com/googleapis/java-bigquerystorage/commit/496205e43e10b91fadbf958fcc9135210ff98ca4))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.122.2 ([#593](https://www.github.com/googleapis/java-bigquerystorage/issues/593)) ([abe21f0](https://www.github.com/googleapis/java-bigquerystorage/commit/abe21f02f811391259ebe921fff194a3a0394032))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.10.1 ([#589](https://www.github.com/googleapis/java-bigquerystorage/issues/589)) ([e89c92b](https://www.github.com/googleapis/java-bigquerystorage/commit/e89c92bf2b88d4020d31fba707ed69d78e9b74bc))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.10.2 ([#592](https://www.github.com/googleapis/java-bigquerystorage/issues/592)) ([33c460f](https://www.github.com/googleapis/java-bigquerystorage/commit/33c460fa0658307696dbdc7f381ede8df933b0cb))
+
+### [1.5.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.3...v1.5.4) (2020-09-24)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.10.0 ([#563](https://www.github.com/googleapis/java-bigquerystorage/issues/563)) ([d78ed84](https://www.github.com/googleapis/java-bigquerystorage/commit/d78ed84d72c4bb4ded5aa3f33a3e709aa5d88629))
+
+### [1.5.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.2...v1.5.3) (2020-09-22)
+
+
+### Documentation
+
+* changes without context ([#538](https://www.github.com/googleapis/java-bigquerystorage/issues/538)) ([50bb618](https://www.github.com/googleapis/java-bigquerystorage/commit/50bb618ca736a7a9a1262bbf2d2ad75b70d3cd53))
+
+
+### Dependencies
+
+* update arrow-vector to v1 ([#551](https://www.github.com/googleapis/java-bigquerystorage/issues/551)) ([5cdf42c](https://www.github.com/googleapis/java-bigquerystorage/commit/5cdf42cf8cad0a6d30b7072142a7698fafafa8d9))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.120.0 ([#549](https://www.github.com/googleapis/java-bigquerystorage/issues/549)) ([e8dea03](https://www.github.com/googleapis/java-bigquerystorage/commit/e8dea0362de56698a9c3072837e75b31026dd82c))
+
+### [1.5.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.1...v1.5.2) (2020-09-21)
+
+
+### Bug Fixes
+
+* geo type accepted change from bytes to string ([#523](https://www.github.com/googleapis/java-bigquerystorage/issues/523)) ([94e6394](https://www.github.com/googleapis/java-bigquerystorage/commit/94e63941e305c64d50829b520594a7e411b15e82))
+* update schema compat check with backend type changes ([#522](https://www.github.com/googleapis/java-bigquerystorage/issues/522)) ([2fcae4f](https://www.github.com/googleapis/java-bigquerystorage/commit/2fcae4fda0bb899efa84aba377073da556ec59d0))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.117.1 ([#514](https://www.github.com/googleapis/java-bigquerystorage/issues/514)) ([2689689](https://www.github.com/googleapis/java-bigquerystorage/commit/26896896fc3b3342363e191a2e7ffcca6ee291c1))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.117.2 ([#529](https://www.github.com/googleapis/java-bigquerystorage/issues/529)) ([74c1854](https://www.github.com/googleapis/java-bigquerystorage/commit/74c1854fbc5e7fea164b7945cb5770c2063032da))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.118.0 ([#530](https://www.github.com/googleapis/java-bigquerystorage/issues/530)) ([ffdbf2a](https://www.github.com/googleapis/java-bigquerystorage/commit/ffdbf2a4f763fe0cb9c47dcaafa44a497426bc11))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.119.0 ([#532](https://www.github.com/googleapis/java-bigquerystorage/issues/532)) ([f005d93](https://www.github.com/googleapis/java-bigquerystorage/commit/f005d93a14df16afff6b0ee6797d2b23da21ebcb))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.9.0 ([#517](https://www.github.com/googleapis/java-bigquerystorage/issues/517)) ([91899a9](https://www.github.com/googleapis/java-bigquerystorage/commit/91899a94617628a27437c72ce702aff91e101ecc))
+
+### [1.5.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.5.0...v1.5.1) (2020-08-31)
+
+
+### Bug Fixes
+
+* temporarily disable reporting to unblock releases ([#506](https://www.github.com/googleapis/java-bigquerystorage/issues/506)) ([042cb41](https://www.github.com/googleapis/java-bigquerystorage/commit/042cb414ab29cc4143a728e211f95fa5c0cfa1a0))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.117.0 ([#508](https://www.github.com/googleapis/java-bigquerystorage/issues/508)) ([15dea1b](https://www.github.com/googleapis/java-bigquerystorage/commit/15dea1b31a57bef6ebc2d7c306b06f186026c10a))
+
+## [1.5.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.4.1...v1.5.0) (2020-08-19)
+
+
+### Features
+
+* Add a flushAll() method that will flush all the inflight request and make sure all responses returned ([#492](https://www.github.com/googleapis/java-bigquerystorage/issues/492)) ([6134818](https://www.github.com/googleapis/java-bigquerystorage/commit/6134818f7bc5ada324a78d5c048bb2eeb83f8ca8))
+* add JsonWriterCache.java and added JsonWriterCache in DirectWriter to allow JsonWrites ([#489](https://www.github.com/googleapis/java-bigquerystorage/issues/489)) ([34193b8](https://www.github.com/googleapis/java-bigquerystorage/commit/34193b88bcf64b97dbcde2183e7587fa44923d4b))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.10 ([#483](https://www.github.com/googleapis/java-bigquerystorage/issues/483)) ([285b6f8](https://www.github.com/googleapis/java-bigquerystorage/commit/285b6f846753f387800d2787746ddb43de67a4b7))
+
+### [1.4.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.4.0...v1.4.1) (2020-08-10)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.6 ([#477](https://www.github.com/googleapis/java-bigquerystorage/issues/477)) ([f5faba6](https://www.github.com/googleapis/java-bigquerystorage/commit/f5faba6702ca76c102d15cacd72809cc10699eac))
+
+## [1.4.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.3.1...v1.4.0) (2020-08-07)
+
+
+### Features
+
+* add JsonStreamWriter ([#475](https://www.github.com/googleapis/java-bigquerystorage/issues/475)) ([341bf99](https://www.github.com/googleapis/java-bigquerystorage/commit/341bf99d47d788ebabaa1ce775d1a4f527ee46b0))
+
+
+### Bug Fixes
+
+* enum value conflict in generated ProtoSchema descriptor. ([#469](https://www.github.com/googleapis/java-bigquerystorage/issues/469)) ([3e1382f](https://www.github.com/googleapis/java-bigquerystorage/commit/3e1382f247de5e6ee8727130280e34fa01d3c088)), closes [#464](https://www.github.com/googleapis/java-bigquerystorage/issues/464)
+
+
+### Dependencies
+
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.11.2 ([#461](https://www.github.com/googleapis/java-bigquerystorage/issues/461)) ([36b368a](https://www.github.com/googleapis/java-bigquerystorage/commit/36b368a14bb7d45f92af23bc0dd6fe08ad79b085))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.9 ([#473](https://www.github.com/googleapis/java-bigquerystorage/issues/473)) ([b4ba055](https://www.github.com/googleapis/java-bigquerystorage/commit/b4ba055a809dbe414e8e19d377b8257d0b5446d6))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.5 ([#467](https://www.github.com/googleapis/java-bigquerystorage/issues/467)) ([35c65d4](https://www.github.com/googleapis/java-bigquerystorage/commit/35c65d466d44d01e6f7626ef7cf1aa0e9f3ff0f3))
+
+### [1.3.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.3.0...v1.3.1) (2020-07-31)
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.7 ([#441](https://www.github.com/googleapis/java-bigquerystorage/issues/441)) ([abc1971](https://www.github.com/googleapis/java-bigquerystorage/commit/abc197169b5f04e0eafb486db0d9038903cefe61))
+
+## [1.3.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.2.1...v1.3.0) (2020-07-21)
+
+
+### Features
+
+* Adding JsonToProtoMessage.java ([#400](https://www.github.com/googleapis/java-bigquerystorage/issues/400)) ([200da6d](https://www.github.com/googleapis/java-bigquerystorage/commit/200da6d66e82eaabceeae56e4ff3d1b8e112bd8d))
+* re-generated to pick up changes from googleapis. ([#435](https://www.github.com/googleapis/java-bigquerystorage/issues/435)) ([bdf35e0](https://www.github.com/googleapis/java-bigquerystorage/commit/bdf35e08987ffdf49f7545131cd0dba56ff72bd9)), closes [#436](https://www.github.com/googleapis/java-bigquerystorage/issues/436)
+
+### [1.2.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.2.0...v1.2.1) (2020-07-20)
+
+
+### Bug Fixes
+
+* ProtoSchemaConver's problem when converting fields reference same… ([#428](https://www.github.com/googleapis/java-bigquerystorage/issues/428)) ([1ce2621](https://www.github.com/googleapis/java-bigquerystorage/commit/1ce2621fe633f29c57bc4f4df84b2bcc2c57bdb8))
+
+## [1.2.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.1.1...v1.2.0) (2020-07-16)
+
+
+### Features
+
+* add 'Received Rst Stream' to automatic retry strings ([#419](https://www.github.com/googleapis/java-bigquerystorage/issues/419)) ([1584bdb](https://www.github.com/googleapis/java-bigquerystorage/commit/1584bdbf5820a378d844d333e8546b6a26b3c643))
+
+
+### Bug Fixes
+
+* BQTableSchemaToProtobufDescriptor will now only generate lower-cased fieldnames in the protobuf descriptor ([#415](https://www.github.com/googleapis/java-bigquerystorage/issues/415)) ([4672939](https://www.github.com/googleapis/java-bigquerystorage/commit/46729398eee0f728c3de731f803580342fbe787f))
+
+### [1.1.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.1.0...v1.1.1) (2020-07-14)
+
+
+### Bug Fixes
+
+* BQTableSchemaToProtoDescriptor change type mapping ([#402](https://www.github.com/googleapis/java-bigquerystorage/issues/402)) ([413d6f0](https://www.github.com/googleapis/java-bigquerystorage/commit/413d6f03f288fa21511daaa3442fc1fde9ca246f))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.6 ([#407](https://www.github.com/googleapis/java-bigquerystorage/issues/407)) ([d0aa73d](https://www.github.com/googleapis/java-bigquerystorage/commit/d0aa73d0fe6233878935ad510bb5d648764872cd))
+
+## [1.1.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v1.0.0...v1.1.0) (2020-07-10)
+
+
+### Features
+
+* add two new fields, ignoreUnknownFields in AppendRowsRequest and update_schema in AppendRowsResponse. ([#389](https://www.github.com/googleapis/java-bigquerystorage/issues/389)) ([3e9d4c8](https://www.github.com/googleapis/java-bigquerystorage/commit/3e9d4c8abae73b25894d330a99e4213057777bc8))
+* Added BQSchemaToProtoDescriptor.java ([#395](https://www.github.com/googleapis/java-bigquerystorage/issues/395)) ([c3a9542](https://www.github.com/googleapis/java-bigquerystorage/commit/c3a9542b146c2a95bd69e6bb940e02f72354141c))
+
+
+### Dependencies
+
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.11.1 ([#383](https://www.github.com/googleapis/java-bigquerystorage/issues/383)) ([004e78b](https://www.github.com/googleapis/java-bigquerystorage/commit/004e78be6e5de02ce83ef95e5a40c0f23f4b11a0))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.4 ([#404](https://www.github.com/googleapis/java-bigquerystorage/issues/404)) ([dd56e6c](https://www.github.com/googleapis/java-bigquerystorage/commit/dd56e6c2e9fca51d569a700b4d0bb9527b1e347c))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.2 ([#393](https://www.github.com/googleapis/java-bigquerystorage/issues/393)) ([4d3bce6](https://www.github.com/googleapis/java-bigquerystorage/commit/4d3bce618f39b44048ee20ed47b1cd61354117ad))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.3 ([#405](https://www.github.com/googleapis/java-bigquerystorage/issues/405)) ([01c59e2](https://www.github.com/googleapis/java-bigquerystorage/commit/01c59e26c6c5f8bc42112aa89a90da5786343efc))
+* update dependency org.apache.avro:avro to v1.10.0 ([#392](https://www.github.com/googleapis/java-bigquerystorage/issues/392)) ([25dd6d5](https://www.github.com/googleapis/java-bigquerystorage/commit/25dd6d54e129cfb4e0f87f9f05abe4314a01a0dd))
+
+## [1.0.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.134.1...v1.0.0) (2020-06-23)
+
+
+### Features
+
+* promote to GA ([#374](https://www.github.com/googleapis/java-bigquerystorage/issues/374)) ([9d2b891](https://www.github.com/googleapis/java-bigquerystorage/commit/9d2b8916315ae106a8b24c74f786bb2e5dea10e5))
+
+### [0.134.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.134.0...v0.134.1) (2020-06-22)
+
+
+### Bug Fixes
+
+* BQ Numeric is compatible with double and float protobuf types ([#367](https://www.github.com/googleapis/java-bigquerystorage/issues/367)) ([1b2f110](https://www.github.com/googleapis/java-bigquerystorage/commit/1b2f1103d83502836dbc2d6a0d5659e44cd9836d))
+* Renamed SchemaCompact.java to SchemaCompatibility.java ([#362](https://www.github.com/googleapis/java-bigquerystorage/issues/362)) ([d3f4787](https://www.github.com/googleapis/java-bigquerystorage/commit/d3f47877003d24aabe76c5ddf4c78a70a4d86a03))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.3 ([#361](https://www.github.com/googleapis/java-bigquerystorage/issues/361)) ([e88095f](https://www.github.com/googleapis/java-bigquerystorage/commit/e88095f45b48b781eca2ee572fcb841ef8a430ee))
+
+## [0.134.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.133.4...v0.134.0) (2020-06-18)
+
+
+### Features
+
+* Added schema compatibility check functionality (SchemaCompact.java) ([#339](https://www.github.com/googleapis/java-bigquerystorage/issues/339)) ([bc2d8cc](https://www.github.com/googleapis/java-bigquerystorage/commit/bc2d8cc82adeeddb21aeb9845e0883d369101513))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.1 ([#346](https://www.github.com/googleapis/java-bigquerystorage/issues/346)) ([9db4c47](https://www.github.com/googleapis/java-bigquerystorage/commit/9db4c475118b03b323b4dc502ec0634692e9dea3))
+
+### [0.133.4](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.133.3...v0.133.4) (2020-06-11)
+
+
+### Bug Fixes
+
+* make awaitTermination and shutdown protected, since we already have close() method, it is confusing to have 3 shutdown methods ([#330](https://www.github.com/googleapis/java-bigquerystorage/issues/330)) ([8856288](https://www.github.com/googleapis/java-bigquerystorage/commit/88562883051fa1d856818d4ff47fcc020e0452de))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.2 ([#334](https://www.github.com/googleapis/java-bigquerystorage/issues/334)) ([a611756](https://www.github.com/googleapis/java-bigquerystorage/commit/a611756faea308c7e6714d8eecdb6a295ccb3e6a))
+
+### [0.133.3](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.133.2...v0.133.3) (2020-06-04)
+
+
+### Bug Fixes
+
+* add retry logic for readrows v1beta1 ([#314](https://www.github.com/googleapis/java-bigquerystorage/issues/314)) ([5290cec](https://www.github.com/googleapis/java-bigquerystorage/commit/5290cec444eaf1a21bcea543ac002276b82957e8))
+* add retry logic for readrows v1beta2 ([#315](https://www.github.com/googleapis/java-bigquerystorage/issues/315)) ([cf1ab06](https://www.github.com/googleapis/java-bigquerystorage/commit/cf1ab06b4324219d2558bef6d30389dbf5d37ab7))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.1 ([#321](https://www.github.com/googleapis/java-bigquerystorage/issues/321)) ([c08116b](https://www.github.com/googleapis/java-bigquerystorage/commit/c08116b0fdabe256635bc8ba96b2c307f33a3998))
+* update libraries-bom version ([dd21613](https://www.github.com/googleapis/java-bigquerystorage/commit/dd216134b98816f4b3cc6bd036eab01ebf04df35))
+
+
+### Documentation
+
+* **samples:** add codeowners file ([#317](https://www.github.com/googleapis/java-bigquerystorage/issues/317)) ([fc351c7](https://www.github.com/googleapis/java-bigquerystorage/commit/fc351c702ab0674f668a396559e18898f4653fdb))
+* **samples:** add samples ([#309](https://www.github.com/googleapis/java-bigquerystorage/issues/309)) ([f142827](https://www.github.com/googleapis/java-bigquerystorage/commit/f142827253f7262f1d47d4c557c92076e1fa5fbe))
+
+### [0.133.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.133.1...v0.133.2) (2020-05-28)
+
+
+### Documentation
+
+* **samples:** migrate samples into client ([#308](https://www.github.com/googleapis/java-bigquerystorage/issues/308)) ([c2161fb](https://www.github.com/googleapis/java-bigquerystorage/commit/c2161fbccb6043b0fec7b25eb3de1a0f4f61e7a1))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.7.0 ([#302](https://www.github.com/googleapis/java-bigquerystorage/issues/302)) ([5d22cb0](https://www.github.com/googleapis/java-bigquerystorage/commit/5d22cb09c85c7f4f8cf4f999e23747ac636023ab))
+
+### [0.133.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.133.0...v0.133.1) (2020-05-27)
+
+
+### Bug Fixes
+
+* add retry logic for readrows ([#263](https://www.github.com/googleapis/java-bigquerystorage/issues/263)) ([50345b6](https://www.github.com/googleapis/java-bigquerystorage/commit/50345b653d59209b7912b56b76c6d41e289ecb30))
+
+
+### Dependencies
+
+* bump shared-deps version and add back certain test deps ([#300](https://www.github.com/googleapis/java-bigquerystorage/issues/300)) ([edfa26b](https://www.github.com/googleapis/java-bigquerystorage/commit/edfa26bb5bfa506004a6d3e39775f9f66b956db9))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.115.1 ([#294](https://www.github.com/googleapis/java-bigquerystorage/issues/294)) ([75a08c3](https://www.github.com/googleapis/java-bigquerystorage/commit/75a08c3683fde88264d310f965a0c973b54dfd9e))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.116.0 ([#296](https://www.github.com/googleapis/java-bigquerystorage/issues/296)) ([d243ece](https://www.github.com/googleapis/java-bigquerystorage/commit/d243ece29dd1494531f623b69e609fb833e970dc))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.4.0 ([#291](https://www.github.com/googleapis/java-bigquerystorage/issues/291)) ([20b2963](https://www.github.com/googleapis/java-bigquerystorage/commit/20b2963bbf315951d1607bee63a7aa083cdb6c86))
+
+## [0.133.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.132.0...v0.133.0) (2020-05-15)
+
+
+### Features
+
+* Add flush API to StreamWriter ([#278](https://www.github.com/googleapis/java-bigquerystorage/issues/278)) ([f617259](https://www.github.com/googleapis/java-bigquerystorage/commit/f61725995fdc905581dca1109f30afed54d2da8e))
+
+
+### Bug Fixes
+
+* try to make test run a bit faster, and update some logs. ([#279](https://www.github.com/googleapis/java-bigquerystorage/issues/279)) ([4749b85](https://www.github.com/googleapis/java-bigquerystorage/commit/4749b8516b8f5802091eb21fa349b1c5c58fb48a))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.115.0 ([#283](https://www.github.com/googleapis/java-bigquerystorage/issues/283)) ([873d787](https://www.github.com/googleapis/java-bigquerystorage/commit/873d78765eafed471f175d02450c4a107a801219))
+
+## [0.132.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.131.2...v0.132.0) (2020-05-13)
+
+
+### Features
+
+* add a Flush API to enable finer grained data commit needs for dataflow. ([#272](https://www.github.com/googleapis/java-bigquerystorage/issues/272)) ([b1c827f](https://www.github.com/googleapis/java-bigquerystorage/commit/b1c827f8d60f747ce71e2288935439b7c16c0076))
+
+
+### Documentation
+
+* update CONTRIBUTING.md to include code formatting ([#534](https://www.github.com/googleapis/java-bigquerystorage/issues/534)) ([#273](https://www.github.com/googleapis/java-bigquerystorage/issues/273)) ([9f071d0](https://www.github.com/googleapis/java-bigquerystorage/commit/9f071d006972f40992284fff1f39162d5b521c5e))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.114.0 ([#269](https://www.github.com/googleapis/java-bigquerystorage/issues/269)) ([d71e6b7](https://www.github.com/googleapis/java-bigquerystorage/commit/d71e6b7166bc17579c33400c443ef7c5eec7ee8c))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.3.1 ([#274](https://www.github.com/googleapis/java-bigquerystorage/issues/274)) ([9c9471a](https://www.github.com/googleapis/java-bigquerystorage/commit/9c9471a141db069b40e93d76d5632c5cf8ab6257))
+
+### [0.131.2](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.131.1...v0.131.2) (2020-05-08)
+
+
+### Bug Fixes
+
+* Avoid setting error on response future twice ([#261](https://www.github.com/googleapis/java-bigquerystorage/issues/261)) ([35ef0ed](https://www.github.com/googleapis/java-bigquerystorage/commit/35ef0ed80d55fd4ca015e3a9b6b631d3d893aa1a))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.3.0 ([#256](https://www.github.com/googleapis/java-bigquerystorage/issues/256)) ([252440a](https://www.github.com/googleapis/java-bigquerystorage/commit/252440a84d45d9c13e468e7b59fe4702499143a9))
+
+### [0.131.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.131.0...v0.131.1) (2020-05-04)
+
+
+### Bug Fixes
+
+* flaky writeapi manual client tests ([#238](https://www.github.com/googleapis/java-bigquerystorage/issues/238)) ([89c8623](https://www.github.com/googleapis/java-bigquerystorage/commit/89c8623e082cacdc8e0843bffb67da4dc8b79df3))
+* more writeapi manual client test issues ([#241](https://www.github.com/googleapis/java-bigquerystorage/issues/241)) ([65c5ec9](https://www.github.com/googleapis/java-bigquerystorage/commit/65c5ec9c27e901b1633402d5fbbbbb83f956ed97))
+
+## [0.131.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.130.0...v0.131.0) (2020-04-28)
+
+
+### Features
+
+* integrate gapic generator change in googleapis ([#220](https://www.github.com/googleapis/java-bigquerystorage/issues/220)) ([1565dc0](https://www.github.com/googleapis/java-bigquerystorage/commit/1565dc08515d4665b812d86223765f5cf9629b16))
+
+
+### Bug Fixes
+
+* several StreamWriter issues ([#213](https://www.github.com/googleapis/java-bigquerystorage/issues/213)) ([b803863](https://www.github.com/googleapis/java-bigquerystorage/commit/b80386394f3082e9695712343f37afc4d29df76f))
+
+
+### Dependencies
+
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.11.0 ([#224](https://www.github.com/googleapis/java-bigquerystorage/issues/224)) ([87d5248](https://www.github.com/googleapis/java-bigquerystorage/commit/87d52483b7bca906df16b4432a0d7bdde6c23726))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.111.1 ([#210](https://www.github.com/googleapis/java-bigquerystorage/issues/210)) ([d898a61](https://www.github.com/googleapis/java-bigquerystorage/commit/d898a61f1c48e763e37a234364ee1a590187e8ec))
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.2.0 ([#207](https://www.github.com/googleapis/java-bigquerystorage/issues/207)) ([ae29920](https://www.github.com/googleapis/java-bigquerystorage/commit/ae299204422ecb0b98747c96a2e9eac2fa1fbd14))
+* update dependency com.google.truth:truth to v1 ([#199](https://www.github.com/googleapis/java-bigquerystorage/issues/199)) ([440d85b](https://www.github.com/googleapis/java-bigquerystorage/commit/440d85bff1930835e1b4d0c13eeb2ce8209d658f))
+
+## [0.130.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.129.0...v0.130.0) (2020-04-20)
+
+
+### Features
+
+* use shared-dependencies bom and add flatten to grpc and proto modules ([#186](https://www.github.com/googleapis/java-bigquerystorage/issues/186)) ([532a698](https://www.github.com/googleapis/java-bigquerystorage/commit/532a698193542b0a5db03d2e29a415082f2de95b))
+
+## [0.129.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.128.1...v0.129.0) (2020-04-16)
+
+
+### Features
+
+* Direct writer ([#165](https://www.github.com/googleapis/java-bigquerystorage/issues/165)) ([ed718c1](https://www.github.com/googleapis/java-bigquerystorage/commit/ed718c14289a3ea41f6ef7cccd8b00d7c7c0ba6c))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-bigquery to v1.110.1 ([#155](https://www.github.com/googleapis/java-bigquerystorage/issues/155)) ([a0b0cfd](https://www.github.com/googleapis/java-bigquerystorage/commit/a0b0cfd69bd0e26c0ae3748dd9fe35431bf41b2d))
+* update dependency com.google.guava:guava-bom to v29 ([#166](https://www.github.com/googleapis/java-bigquerystorage/issues/166)) ([81c87d6](https://www.github.com/googleapis/java-bigquerystorage/commit/81c87d67332033da8f998dd281954fe362f590f2))
+
+### [0.128.1](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.128.0...v0.128.1) (2020-04-07)
+
+
+### Bug Fixes
+
+* waitForTermination in the manual client [#140](https://www.github.com/googleapis/java-bigquerystorage/issues/140) ([#141](https://www.github.com/googleapis/java-bigquerystorage/issues/141)) ([bdb8e0f](https://www.github.com/googleapis/java-bigquerystorage/commit/bdb8e0f6b0b8ab9b1e2e92d6e41ea3298964dd3e))
+
+
+### Dependencies
+
+* update core dependencies ([#149](https://www.github.com/googleapis/java-bigquerystorage/issues/149)) ([dbe270f](https://www.github.com/googleapis/java-bigquerystorage/commit/dbe270fb3b1ff28d231e5d401ce2b140bec4f68d))
+* update dependency org.threeten:threetenbp to v1.4.3 ([#144](https://www.github.com/googleapis/java-bigquerystorage/issues/144)) ([c1f2731](https://www.github.com/googleapis/java-bigquerystorage/commit/c1f27318ebb127980ff8ced2551610095dcfdf9e))
+
+## [0.128.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.127.0...v0.128.0) (2020-04-04)
+
+
+### Features
+
+* add flatten plugin ([#117](https://www.github.com/googleapis/java-bigquerystorage/issues/117)) ([c01bbc7](https://www.github.com/googleapis/java-bigquerystorage/commit/c01bbc7df8d89c6b0b5b3e7f53b541c4575ed119))
+* re-generated to pick up changes in the API or client library generator. ([#134](https://www.github.com/googleapis/java-bigquerystorage/issues/134)) ([0541775](https://www.github.com/googleapis/java-bigquerystorage/commit/054177514fc63f5c84bcca8d71b953f06b1807ca)), closes [#112](https://www.github.com/googleapis/java-bigquerystorage/issues/112) [#112](https://www.github.com/googleapis/java-bigquerystorage/issues/112) [#132](https://www.github.com/googleapis/java-bigquerystorage/issues/132) [#132](https://www.github.com/googleapis/java-bigquerystorage/issues/132) [#122](https://www.github.com/googleapis/java-bigquerystorage/issues/122) [#122](https://www.github.com/googleapis/java-bigquerystorage/issues/122)
+
+## [0.127.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.126.0...v0.127.0) (2020-04-03)
+
+
+### Features
+
+* create manual client for Write API ([#112](https://www.github.com/googleapis/java-bigquerystorage/issues/112)) ([98851e9](https://www.github.com/googleapis/java-bigquerystorage/commit/98851e96f7c20228cf888e4a847ac98f3da2e4b7))
+* proto converter library ([#100](https://www.github.com/googleapis/java-bigquerystorage/issues/100)) ([8fbb80e](https://www.github.com/googleapis/java-bigquerystorage/commit/8fbb80eccdfafe8ffd5ff24fe04132878d09d9ae))
+
+
+### Dependencies
+
+* update core dependencies ([#98](https://www.github.com/googleapis/java-bigquerystorage/issues/98)) ([0983575](https://www.github.com/googleapis/java-bigquerystorage/commit/09835752000a99f1cef113cc0808b0c7c907c190))
+* update core dependencies to v1.55.0 ([#127](https://www.github.com/googleapis/java-bigquerystorage/issues/127)) ([99cedf9](https://www.github.com/googleapis/java-bigquerystorage/commit/99cedf926a7b51f58dbec6539ecba350a5e5b845))
+* update dependency com.google.api:api-common to v1.9.0 ([#126](https://www.github.com/googleapis/java-bigquerystorage/issues/126)) ([27db090](https://www.github.com/googleapis/java-bigquerystorage/commit/27db090caf065c68f724f0457df47b83a186e91c))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.109.0 ([#114](https://www.github.com/googleapis/java-bigquerystorage/issues/114)) ([f5b48d8](https://www.github.com/googleapis/java-bigquerystorage/commit/f5b48d85f4561e31b01b614d4395c4c3b1d65ed4))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.110.0 ([#115](https://www.github.com/googleapis/java-bigquerystorage/issues/115)) ([9b20371](https://www.github.com/googleapis/java-bigquerystorage/commit/9b20371be163ed69cdb2260023afb9512102d4d5))
+* update dependency com.google.cloud:google-cloud-core to v1.93.3 ([#104](https://www.github.com/googleapis/java-bigquerystorage/issues/104)) ([519bd1e](https://www.github.com/googleapis/java-bigquerystorage/commit/519bd1ed7cfa7ba4bd4f370cf05b50e85256ac2a))
+* update dependency com.google.cloud.samples:shared-configuration to v1.0.13 ([#123](https://www.github.com/googleapis/java-bigquerystorage/issues/123)) ([819dc70](https://www.github.com/googleapis/java-bigquerystorage/commit/819dc70ac8cc6688cea5276a2ec2af323b26d55d))
+* update dependency io.grpc:grpc-bom to v1.28.1 ([#132](https://www.github.com/googleapis/java-bigquerystorage/issues/132)) ([711c5c7](https://www.github.com/googleapis/java-bigquerystorage/commit/711c5c793e992098f96f7683f4e9643ee7424d81))
+* update dependency org.threeten:threetenbp to v1.4.2 ([#113](https://www.github.com/googleapis/java-bigquerystorage/issues/113)) ([09451c1](https://www.github.com/googleapis/java-bigquerystorage/commit/09451c11fbdc9ab1bb32f41a90970cab3c9589ab))
+
+
+### Documentation
+
+* **regen:** fix closing backtick in docs ([#109](https://www.github.com/googleapis/java-bigquerystorage/issues/109)) ([98f3cb2](https://www.github.com/googleapis/java-bigquerystorage/commit/98f3cb2065e8fdb3de263fa8288278e37d6160b3))
+
+## [0.126.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.125.0...v0.126.0) (2020-03-09)
+
+
+### Features
+
+* re-generated to pick up changes in the API or client library generator. ([#85](https://www.github.com/googleapis/java-bigquerystorage/issues/85)) ([e3f4087](https://www.github.com/googleapis/java-bigquerystorage/commit/e3f40879dfda7c2dac1cf16b23605912174e2601))
+* re-generated to pick up changes in the API or client library generator. ([#95](https://www.github.com/googleapis/java-bigquerystorage/issues/95)) ([7e760a4](https://www.github.com/googleapis/java-bigquerystorage/commit/7e760a4d2782ec1674b0d3da72ba2eeed4d101a1))
+* re-generated to pick up changes in the API or client library generator. ([#97](https://www.github.com/googleapis/java-bigquerystorage/issues/97)) ([c1f1854](https://www.github.com/googleapis/java-bigquerystorage/commit/c1f1854bbe4362449b0afd427e88ab9414cd8fac))
+
+
+### Dependencies
+
+* update core dependencies ([#89](https://www.github.com/googleapis/java-bigquerystorage/issues/89)) ([bdf1385](https://www.github.com/googleapis/java-bigquerystorage/commit/bdf13853a8abd791c4a376284a5afeed1d2afbd8))
+* update dependency com.fasterxml.jackson.core:jackson-core to v2.10.3 ([#92](https://www.github.com/googleapis/java-bigquerystorage/issues/92)) ([551d024](https://www.github.com/googleapis/java-bigquerystorage/commit/551d02482c8694d32e465acccbf8de6ae515d3c8))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.107.0 ([#82](https://www.github.com/googleapis/java-bigquerystorage/issues/82)) ([96e55ee](https://www.github.com/googleapis/java-bigquerystorage/commit/96e55ee322a9fcb0b05f3a942eefc48e5f1233d0))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.108.0 ([#91](https://www.github.com/googleapis/java-bigquerystorage/issues/91)) ([aa7b8b8](https://www.github.com/googleapis/java-bigquerystorage/commit/aa7b8b84236261b1c88367851cbffe3126d81a50))
+* update dependency com.google.cloud:google-cloud-bigquery to v1.108.1 ([#96](https://www.github.com/googleapis/java-bigquerystorage/issues/96)) ([11b4418](https://www.github.com/googleapis/java-bigquerystorage/commit/11b44186007dd7eb15f3daf5d559c705003e8709))
+* update dependency com.google.cloud:google-cloud-core to v1.93.1 ([#93](https://www.github.com/googleapis/java-bigquerystorage/issues/93)) ([aa10c59](https://www.github.com/googleapis/java-bigquerystorage/commit/aa10c59ea155eec8de8433dbb8ef924327bf60a2))
+* update dependency io.grpc:grpc-bom to v1.27.2 ([#88](https://www.github.com/googleapis/java-bigquerystorage/issues/88)) ([cdba693](https://www.github.com/googleapis/java-bigquerystorage/commit/cdba693add40b7571a43b4b0c5ca8a772e0333c5))
+
+## [0.125.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.124.0...v0.125.0) (2020-02-18)
+
+
+### Features
+
+* add ArrowSerializationOptions to TableReadOptions ([#76](https://www.github.com/googleapis/java-bigquerystorage/issues/76)) ([df5d4cb](https://www.github.com/googleapis/java-bigquerystorage/commit/df5d4cba8f599ad60abc1266f75f63ffaa1d03e1))
+* re-generated to pick up changes in the API or client library generator. ([#70](https://www.github.com/googleapis/java-bigquerystorage/issues/70)) ([3631965](https://www.github.com/googleapis/java-bigquerystorage/commit/363196550f5d5a7381ec88e3404d334475fe430e))
+* re-generated to pick up changes in the API or client library generator. ([#74](https://www.github.com/googleapis/java-bigquerystorage/issues/74)) ([a41f1a7](https://www.github.com/googleapis/java-bigquerystorage/commit/a41f1a7bcffc1d2076ecbf4647eb2e128ba595be))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-core to v1.92.5 ([#73](https://www.github.com/googleapis/java-bigquerystorage/issues/73)) ([a822658](https://www.github.com/googleapis/java-bigquerystorage/commit/a822658649c1c306933ea97d466f254b391622eb))
+* update dependency com.google.protobuf:protobuf-java to v3.11.4 ([#79](https://www.github.com/googleapis/java-bigquerystorage/issues/79)) ([2c1c640](https://www.github.com/googleapis/java-bigquerystorage/commit/2c1c64074d0012b9b3c9d729278f643e5fde1658))
+* update dependency io.grpc:grpc-bom to v1.27.1 ([#78](https://www.github.com/googleapis/java-bigquerystorage/issues/78)) ([c4814dc](https://www.github.com/googleapis/java-bigquerystorage/commit/c4814dc0900e95828ae296ff44e4fa4b40daa6cd))
+* update dependency org.apache.avro:avro to v1.9.2 ([#77](https://www.github.com/googleapis/java-bigquerystorage/issues/77)) ([8f8fa6a](https://www.github.com/googleapis/java-bigquerystorage/commit/8f8fa6ae7163a295c3586c575751a6481341dc6b))
+
+## [0.124.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.123.0...v0.124.0) (2020-02-07)
+
+
+### Features
+
+* add an enhanced layer for BigQuery Storage v1 client ([#66](https://www.github.com/googleapis/java-bigquerystorage/issues/66)) ([43fc284](https://www.github.com/googleapis/java-bigquerystorage/commit/43fc284e00ddbc9a018d734e3f6f09c82ebd92d4))
+* add v1 integration tests ([#68](https://www.github.com/googleapis/java-bigquerystorage/issues/68)) ([8e7ac15](https://www.github.com/googleapis/java-bigquerystorage/commit/8e7ac1511b9f9eaea417e6761848e4735039a831))
+
+## [0.123.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.122.0...v0.123.0) (2020-02-06)
+
+
+### Features
+
+* v1 client generation ([#64](https://www.github.com/googleapis/java-bigquerystorage/issues/64)) ([902156d](https://www.github.com/googleapis/java-bigquerystorage/commit/902156d576845499e3eeedeff44c47d67e228098))
+
+## [0.122.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.121.0...v0.122.0) (2020-02-05)
+
+
+### Features
+
+* re-generated to pick up changes in the API or client library generator. ([#49](https://www.github.com/googleapis/java-bigquerystorage/issues/49)) ([00d8ccb](https://www.github.com/googleapis/java-bigquerystorage/commit/00d8ccbfd26effcb2e5e3be3cd242202a65e43b8))
+* re-generated to pick up changes in the API or client library generator. ([#59](https://www.github.com/googleapis/java-bigquerystorage/issues/59)) ([f63b305](https://www.github.com/googleapis/java-bigquerystorage/commit/f63b3051fbd8defb4f7be7c00fd504f137a67897))
+
+
+### Bug Fixes
+
+* track v1alpha2 versions ([#58](https://www.github.com/googleapis/java-bigquerystorage/issues/58)) ([4271524](https://www.github.com/googleapis/java-bigquerystorage/commit/4271524956faea6ccc888d750afba4160e1fd453))
+
+
+### Documentation
+
+* update libraries-bom ([#54](https://www.github.com/googleapis/java-bigquerystorage/issues/54)) ([abf05eb](https://www.github.com/googleapis/java-bigquerystorage/commit/abf05ebe09ac8f71f3b59e5f8473fe3d56f4242e))
+
+## [0.121.0](https://www.github.com/googleapis/java-bigquerystorage/compare/v0.120.1...v0.121.0) (2020-02-03)
+
+
+### Features
+
+* add an enhanced layer for BigQuery Storage v1beta2 client ([#48](https://www.github.com/googleapis/java-bigquerystorage/issues/48)) ([9496158](https://www.github.com/googleapis/java-bigquerystorage/commit/949615823c5bb12ef749639d7337f6341973ddbf))
+* add integration tests for v1beta2 BigQuery Storage API ([#50](https://www.github.com/googleapis/java-bigquerystorage/issues/50)) ([bd37cf3](https://www.github.com/googleapis/java-bigquerystorage/commit/bd37cf385fe666702224d20aed1ad087d7346d57))
+* add v1beta2, v1alpha2 clients ([#44](https://www.github.com/googleapis/java-bigquerystorage/issues/44)) ([8c124a2](https://www.github.com/googleapis/java-bigquerystorage/commit/8c124a2fb4d73808b8e0f9267d5422658807a9d2))
+
+
+### Dependencies
+
+* bump dependency versions ([#53](https://www.github.com/googleapis/java-bigquerystorage/issues/53)) ([b6418b4](https://www.github.com/googleapis/java-bigquerystorage/commit/b6418b45771fb8861a0743b0bf5bb55a5a5b4e78))
+* update core dependencies ([#17](https://www.github.com/googleapis/java-bigquerystorage/issues/17)) ([c17786e](https://www.github.com/googleapis/java-bigquerystorage/commit/c17786ef94ffb05818d2d7ebb7958bf661f93896))
+* update dependency com.google.guava:guava-bom to v28.2-android ([#20](https://www.github.com/googleapis/java-bigquerystorage/issues/20)) ([24bf682](https://www.github.com/googleapis/java-bigquerystorage/commit/24bf682c2fcacc8245800ed55881d4c88e1d748e))
+* update dependency org.threeten:threetenbp to v1.4.1 ([617db50](https://www.github.com/googleapis/java-bigquerystorage/commit/617db50f70095fa574e2fb5316dfa7b5e609bd5e))
+
+## [0.120.0](https://www.github.com/googleapis/java-bigquerystorage/compare/0.120.0-beta...v0.120.0) (2020-01-07)
+
+
+### Dependencies
+
+* update dependency junit:junit to v4.13 ([#21](https://www.github.com/googleapis/java-bigquerystorage/issues/21)) ([190ad2a](https://www.github.com/googleapis/java-bigquerystorage/commit/190ad2ab6996603a8b022ddc54dbb3195907e564))
+
+
+### Documentation
+
+* **regen:** javadoc proto class changes from protoc update ([#9](https://www.github.com/googleapis/java-bigquerystorage/issues/9)) ([d371b4a](https://www.github.com/googleapis/java-bigquerystorage/commit/d371b4a5b4d1cb343cb00d645e263fe62b5ecbd2))
diff --git a/java-bigquerystorage/README.md b/java-bigquerystorage/README.md
new file mode 100644
index 000000000000..ec75b0ca59d5
--- /dev/null
+++ b/java-bigquerystorage/README.md
@@ -0,0 +1,266 @@
+# Google BigQuery Storage Client for Java
+
+Java idiomatic client for [BigQuery Storage][product-docs].
+
+[![Maven][maven-version-image]][maven-version-link]
+![Stability][stability-image]
+
+- [Product Documentation][product-docs]
+- [Client Library Documentation][javadocs]
+
+
+## Quickstart
+
+If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
+
+```xml
+
+
+
+ com.google.cloud
+ libraries-bom
+ 26.70.0
+ pom
+ import
+
+
+ io.opentelemetry
+ opentelemetry-bom
+ 1.52.0
+ pom
+ import
+
+
+
+
+
+
+ com.google.cloud
+ google-cloud-bigquerystorage
+
+
+```
+
+If you are using Maven without the BOM, add this to your dependencies:
+
+
+```xml
+
+ com.google.cloud
+ google-cloud-bigquerystorage
+ 3.17.2
+
+
+```
+
+If you are using Gradle 5.x or later, add this to your dependencies:
+
+```Groovy
+implementation platform('com.google.cloud:libraries-bom:26.73.0')
+
+implementation 'com.google.cloud:google-cloud-bigquerystorage'
+```
+If you are using Gradle without BOM, add this to your dependencies:
+
+```Groovy
+implementation 'com.google.cloud:google-cloud-bigquerystorage:3.19.1'
+```
+
+If you are using SBT, add this to your dependencies:
+
+```Scala
+libraryDependencies += "com.google.cloud" % "google-cloud-bigquerystorage" % "3.19.1"
+```
+
+## Authentication
+
+See the [Authentication][authentication] section in the base directory's README.
+
+## Authorization
+
+The client application making API calls must be granted [authorization scopes][auth-scopes] required for the desired BigQuery Storage APIs, and the authenticated principal must have the [IAM role(s)][predefined-iam-roles] required to access GCP resources using the BigQuery Storage API calls.
+
+## Getting Started
+
+### Prerequisites
+
+You will need a [Google Cloud Platform Console][developer-console] project with the BigQuery Storage [API enabled][enable-api].
+You will need to [enable billing][enable-billing] to use Google BigQuery Storage.
+[Follow these instructions][create-project] to get your project set up. You will also need to set up the local development environment by
+[installing the Google Cloud Command Line Interface][cloud-cli] and running the following commands in command line:
+`gcloud auth login` and `gcloud config set project [YOUR PROJECT ID]`.
+
+### Installation and setup
+
+You'll need to obtain the `google-cloud-bigquerystorage` library. See the [Quickstart](#quickstart) section
+to add `google-cloud-bigquerystorage` as a dependency in your code.
+
+## About BigQuery Storage
+
+
+[BigQuery Storage][product-docs] is an API for reading data stored in BigQuery. This API provides direct, high-throughput read access to existing BigQuery tables, supports parallel access with automatic liquid sharding, and allows fine-grained control over what data is returned.
+
+See the [BigQuery Storage client library docs][javadocs] to learn how to
+use this BigQuery Storage Client Library.
+
+
+## OpenTelemetry support
+The client supports emitting metrics to OpenTelemetry. This is disabled by default. It can be enabled by calling
+```
+JsonStreamWriter.Builder.setEnableOpenTelemetry(true)
+```
+The following metric attributes are supported.
+| Key | Value |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------|
+| `error_code` | Specifies error code in the event an append request fails, or a connection ends. |
+| `is_retry` | Indicates this was a retry operation. This can be set for either ack’ed requests or connection retry attempts. |
+| `table_id` | Holds fully qualified name of destination table |
+| `trace_field_1` | If a colon-separated traceId is provided, this holds the first portion. Must be non-empty. Currently populated only for Dataflow. |
+| `trace_field_2` | If a colon-separated traceId is provided, this holds the second portion. Must be non-empty. Currently populated only for Dataflow. |
+| `trace_field_3` | If a colon-separated traceId is provided, this holds the third portion. Must be non-empty. Currently populated only for Dataflow. |
+| `writer_id` | Specifies writer instance id. |
+The following metrics are supported.
+| Name | Kind | Description |
+|------------------------------|---------------------|------------------------------------------------------------------------------------------------------------------|
+| `active_connection_count` | Asynchronous gauge | Reports number of active connections |
+| `append_requests_acked` | Synchronous counter | Counts number of requests acked by the server |
+| `append_request_bytes_acked` | Synchronous counter | Counts byte size of requests acked by the server |
+| `append_rows_acked` | Synchronous counter | Counts number of rows in requests acked by the server |
+| `connection_end_count` | Synchronous counter | Counts number of connection end events. This is decorated with the error code. |
+| `connection_start_count` | Synchronous counter | Counts number of connection attempts made, regardless of whether these are initial or retry. |
+| `inflight_queue_length` | Asynchronous gauge | Reports length of inflight queue. This queue contains sent append requests waiting for response from the server. |
+| `network_response_latency` | Histogram | Reports time taken in milliseconds for a response to arrive once a message has been sent over the network. |
+### Exporting OpenTelemetry metrics
+An exporter or collector must be installed by the application in order for [OpenTelemetry metrics to be captured](https://opentelemetry.io/docs/concepts/components/#exporters).
+The [sample application](https://github.com/googleapis/java-bigquerystorage/blob/main/samples/snippets/src/test/java/com/example/bigquerystorage/ExportOpenTelemetryIT.java) uses [Google Monitoring Metrics Exporter](https://github.com/GoogleCloudPlatform/opentelemetry-operations-java/tree/main/exporters/metrics) to export metrics to a Google Cloud project.
+
+
+
+
+## Samples
+
+Samples are in the [`samples/`](https://github.com/googleapis/google-cloud-java/tree/main/samples) directory.
+
+| Sample | Source Code | Try it |
+| --------------------------- | --------------------------------- | ------ |
+| Export Open Telemetry | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/ExportOpenTelemetry.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/ExportOpenTelemetry.java) |
+| Json Writer Stream Cdc | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/JsonWriterStreamCdc.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/JsonWriterStreamCdc.java) |
+| Parallel Write Committed Stream | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/ParallelWriteCommittedStream.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/ParallelWriteCommittedStream.java) |
+| Read Timestamp Arrow | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/ReadTimestampArrow.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/ReadTimestampArrow.java) |
+| Read Timestamp Avro | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/ReadTimestampAvro.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/ReadTimestampAvro.java) |
+| Storage Arrow Sample | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/StorageArrowSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/StorageArrowSample.java) |
+| Storage Sample | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/StorageSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/StorageSample.java) |
+| Write Buffered Stream | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteBufferedStream.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteBufferedStream.java) |
+| Write Committed Stream | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteCommittedStream.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteCommittedStream.java) |
+| Write Nested Proto | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteNestedProto.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteNestedProto.java) |
+| Write Pending Stream | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WritePendingStream.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WritePendingStream.java) |
+| Write To Default Stream | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStream.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStream.java) |
+| Write To Default Stream Timestamp Json | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStreamTimestampJson.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStreamTimestampJson.java) |
+| Write To Default Stream Timestamp With Arrow | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStreamTimestampWithArrow.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStreamTimestampWithArrow.java) |
+| Write To Default Stream With Arrow | [source code](https://github.com/googleapis/google-cloud-java/blob/main/samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStreamWithArrow.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/google-cloud-java&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/bigquerystorage/WriteToDefaultStreamWithArrow.java) |
+
+
+
+## Troubleshooting
+
+To get help, follow the instructions in the [shared Troubleshooting document][troubleshooting].
+
+## Transport
+
+BigQuery Storage uses gRPC for the transport layer.
+
+## Supported Java Versions
+
+Java 8 or above is required for using this client.
+
+Google's Java client libraries,
+[Google Cloud Client Libraries][cloudlibs]
+and
+[Google Cloud API Libraries][apilibs],
+follow the
+[Oracle Java SE support roadmap][oracle]
+(see the Oracle Java SE Product Releases section).
+
+### For new development
+
+In general, new feature development occurs with support for the lowest Java
+LTS version covered by Oracle's Premier Support (which typically lasts 5 years
+from initial General Availability). If the minimum required JVM for a given
+library is changed, it is accompanied by a [semver][semver] major release.
+
+Java 11 and (in September 2021) Java 17 are the best choices for new
+development.
+
+### Keeping production systems current
+
+Google tests its client libraries with all current LTS versions covered by
+Oracle's Extended Support (which typically lasts 8 years from initial
+General Availability).
+
+#### Legacy support
+
+Google's client libraries support legacy versions of Java runtimes with long
+term stable libraries that don't receive feature updates on a best efforts basis
+as it may not be possible to backport all patches.
+
+Google provides updates on a best efforts basis to apps that continue to use
+Java 7, though apps might need to upgrade to current versions of the library
+that supports their JVM.
+
+#### Where to find specific information
+
+The latest versions and the supported Java versions are identified on
+the individual GitHub repository `github.com/GoogleAPIs/java-SERVICENAME`
+and on [google-cloud-java][g-c-j].
+
+## Versioning
+
+
+This library follows [Semantic Versioning](http://semver.org/).
+
+
+
+## Contributing
+
+
+Contributions to this library are always welcome and highly encouraged.
+
+See [CONTRIBUTING][contributing] for more information how to get started.
+
+Please note that this project is released with a Contributor Code of Conduct. By participating in
+this project you agree to abide by its terms. See [Code of Conduct][code-of-conduct] for more
+information.
+
+
+## License
+
+Apache 2.0 - See [LICENSE][license] for more information.
+
+Java is a registered trademark of Oracle and/or its affiliates.
+
+[product-docs]: https://cloud.google.com/bigquery/docs/reference/storage/
+[javadocs]: https://cloud.google.com/java/docs/reference/google-cloud-bigquerystorage/latest/history
+[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-bigquerystorage.svg
+[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-bigquerystorage/3.19.1
+[authentication]: https://github.com/googleapis/google-cloud-java#authentication
+[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
+[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles
+[iam-policy]: https://cloud.google.com/iam/docs/overview#cloud-iam-policy
+[developer-console]: https://console.developers.google.com/
+[create-project]: https://cloud.google.com/resource-manager/docs/creating-managing-projects
+[cloud-cli]: https://cloud.google.com/cli
+[troubleshooting]: https://github.com/googleapis/google-cloud-java/blob/main/TROUBLESHOOTING.md
+[contributing]: https://github.com/googleapis/google-cloud-java/blob/main/CONTRIBUTING.md
+[code-of-conduct]: https://github.com/googleapis/google-cloud-java/blob/main/CODE_OF_CONDUCT.md#contributor-code-of-conduct
+[license]: https://github.com/googleapis/google-cloud-java/blob/main/LICENSE
+[enable-billing]: https://cloud.google.com/apis/docs/getting-started#enabling_billing
+[enable-api]: https://console.cloud.google.com/flows/enableapi?apiid=bigquerystorage.googleapis.com
+[libraries-bom]: https://github.com/GoogleCloudPlatform/cloud-opensource-java/wiki/The-Google-Cloud-Platform-Libraries-BOM
+[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
+
+[semver]: https://semver.org/
+[cloudlibs]: https://cloud.google.com/apis/docs/client-libraries-explained
+[apilibs]: https://cloud.google.com/apis/docs/client-libraries-explained#google_api_client_libraries
+[oracle]: https://www.oracle.com/java/technologies/java-se-support-roadmap.html
+[g-c-j]: http://github.com/googleapis/google-cloud-java
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage-bom/pom.xml b/java-bigquerystorage/google-cloud-bigquerystorage-bom/pom.xml
new file mode 100644
index 000000000000..2244f1174c14
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage-bom/pom.xml
@@ -0,0 +1,128 @@
+
+
+ 4.0.0
+ com.google.cloud
+ google-cloud-bigquerystorage-bom
+ 3.19.1
+ pom
+
+ com.google.cloud
+ sdk-platform-java-config
+ 3.55.1
+
+
+ Google Cloud bigquerystorage BOM
+ https://github.com/googleapis/java-bigquerystorage
+
+ BOM for BigQuery Storage
+
+
+
+ Google LLC
+
+
+
+
+ chingor13
+ Jeff Ching
+ chingor@google.com
+ Google LLC
+
+ Developer
+
+
+
+
+
+ scm:git:https://github.com/googleapis/java-bigquerystorage.git
+ scm:git:git@github.com:googleapis/java-bigquerystorage.git
+ https://github.com/googleapis/java-bigquerystorage
+
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+
+
+ com.google.cloud
+ google-cloud-bigquerystorage
+ 3.19.1
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta1
+ 0.191.1
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta2
+ 0.191.1
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1
+ 3.19.1
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1alpha
+ 3.19.1
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta
+ 3.19.1
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta1
+ 0.191.1
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta2
+ 0.191.1
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1
+ 3.19.1
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1alpha
+ 3.19.1
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta
+ 3.19.1
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+
+ true
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+ true
+
+
+
+
+
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/EnableAutoValue.txt b/java-bigquerystorage/google-cloud-bigquerystorage/EnableAutoValue.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/clirr-ignored-differences.xml b/java-bigquerystorage/google-cloud-bigquerystorage/clirr-ignored-differences.xml
new file mode 100644
index 000000000000..cc4806cc7b8b
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/clirr-ignored-differences.xml
@@ -0,0 +1,232 @@
+
+
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/Exceptions$SchemaMismatchedException
+ Exceptions$SchemaMismatchedException(io.grpc.Status, io.grpc.Metadata, java.lang.String)
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/Exceptions$StreamFinalizedException
+ Exceptions$StreamFinalizedException(io.grpc.Status, io.grpc.Metadata, java.lang.String)
+
+
+ 8001
+ com/google/cloud/bigquery/storage/v1/Exceptions$WriterClosedException
+
+
+ 5001
+ com/google/cloud/bigquery/storage/v1/Exceptions$StreamWriterClosedException
+ com/google/cloud/bigquery/storage/v1/Exceptions$StorageException
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/Exceptions$StreamWriterClosedException
+ Exceptions$StreamWriterClosedException(io.grpc.Status, java.lang.String)
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ com.google.api.core.ApiFuture append(com.google.cloud.bigquery.storage.v1.ProtoRows, long)
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ com.google.api.core.ApiFuture append(com.google.cloud.bigquery.storage.v1.ProtoRows, long)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ com.google.api.core.ApiFuture append(com.google.cloud.bigquery.storage.v1.ProtoRows)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool$Settings$Builder
+ com.google.cloud.bigquery.storage.v1.ConnectionWorkerPool$Settings$Builder setMaxConnectionsPerPool(int)
+
+
+ 7013
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool$Settings$Builder
+ com.google.cloud.bigquery.storage.v1.ConnectionWorkerPool$Settings$Builder setMaxConnectionsPerRegion(int)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool$Settings$Builder
+ com.google.cloud.bigquery.storage.v1.ConnectionWorkerPool$Settings$Builder setMinConnectionsPerPool(int)
+
+
+ 7013
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool$Settings$Builder
+ com.google.cloud.bigquery.storage.v1.ConnectionWorkerPool$Settings$Builder setMinConnectionsPerRegion(int)
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/Exceptions$AppendSerializtionError
+ Exceptions$AppendSerializtionError(java.lang.String, java.util.Map)
+
+
+ 7006
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ com.google.cloud.bigquery.storage.v1.TableSchema getUpdatedSchema()
+ com.google.cloud.bigquery.storage.v1.ConnectionWorker$TableSchemaAndTimestamp
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ com.google.cloud.bigquery.storage.v1.TableSchema getUpdatedSchema()
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ ConnectionWorker(java.lang.String, com.google.cloud.bigquery.storage.v1.ProtoSchema, long, long, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteClient, boolean)
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ ConnectionWorkerPool(long, long, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteClient, boolean)
+
+
+ 7005
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ ConnectionWorker(java.lang.String, com.google.cloud.bigquery.storage.v1.ProtoSchema, long, long, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteClient, boolean)
+ ConnectionWorker(java.lang.String, com.google.cloud.bigquery.storage.v1.ProtoSchema, long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings)
+
+
+ 7005
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ ConnectionWorkerPool(long, long, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteClient, boolean)
+ ConnectionWorkerPool(long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings)
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+ ConnectionWorker(java.lang.String, com.google.cloud.bigquery.storage.v1.ProtoSchema, long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteClient, boolean)
+
+
+ 7004
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ ConnectionWorkerPool(long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteClient, boolean)
+
+
+ 1001
+ com/google/cloud/bigquery/storage/v1/ConnectionWorker
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ ConnectionWorkerPool(long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings)
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ com.google.api.core.ApiFuture append(com.google.cloud.bigquery.storage.v1.StreamWriter, com.google.cloud.bigquery.storage.v1.ProtoRows)
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ com.google.api.core.ApiFuture append(com.google.cloud.bigquery.storage.v1.StreamWriter, com.google.cloud.bigquery.storage.v1.ProtoRows, long)
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ void close(com.google.cloud.bigquery.storage.v1.StreamWriter)
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ void enableTestingLogic()
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ long getInflightWaitSeconds(com.google.cloud.bigquery.storage.v1.StreamWriter)
+
+
+ 7009
+ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool
+ ConnectionWorkerPool(long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/StreamWriter
+ boolean isDone()
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/JsonStreamWriter
+ boolean isDone()
+
+
+ 7006
+ com/google/cloud/bigquery/storage/v1/ToProtoConverter
+ com.google.protobuf.DynamicMessage convertToProtoMessage(com.google.protobuf.Descriptors$Descriptor, com.google.cloud.bigquery.storage.v1.TableSchema, java.lang.Object, boolean)
+ java.util.List
+
+
+ 7005
+ com/google/cloud/bigquery/storage/v1/ToProtoConverter
+ com.google.protobuf.DynamicMessage convertToProtoMessage(com.google.protobuf.Descriptors$Descriptor, com.google.cloud.bigquery.storage.v1.TableSchema, java.lang.Object, boolean)
+ com.google.protobuf.DynamicMessage convertToProtoMessage(com.google.protobuf.Descriptors$Descriptor, com.google.cloud.bigquery.storage.v1.TableSchema, java.lang.Iterable, boolean)
+
+
+ 1001
+ com/google/cloud/bigquery/storage/v1/StreamConnection
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/StreamWriter$Builder
+ com.google.cloud.bigquery.storage.v1.StreamWriter$Builder setMaxRetryNumAttempts(int)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/StreamWriter$Builder
+ com.google.cloud.bigquery.storage.v1.StreamWriter$Builder setRetryMultiplier(double)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/StreamWriter$Builder
+ com.google.cloud.bigquery.storage.v1.StreamWriter$Builder setRetryFirstDelay(org.threeten.bp.Duration)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter$Builder
+ com.google.cloud.bigquery.storage.v1.SchemaAwareStreamWriter$Builder setTraceIdBase(java.lang.String)
+
+
+ 1001
+ com/google/cloud/bigquery/storage/v1/StreamWriter$SingleConnectionOrConnectionPool
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/JsonStreamWriter
+ void setMissingValueInterpretationMap(java.util.Map)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter
+ void setMissingValueInterpretationMap(java.util.Map)
+
+
+ 7002
+ com/google/cloud/bigquery/storage/v1/StreamWriter
+ void setMissingValueInterpretationMap(java.util.Map)
+
+
+
+ 6004
+ com/google/cloud/bigquery/storage/*/stub/readrows/ApiResultRetryAlgorithm
+ DEADLINE_SLEEP_DURATION
+ org.threeten.bp.Duration
+ java.time.Duration
+
+
+
+ 6004
+ com/google/cloud/bigquery/storage/util/Errors$IsRetryableStatusResult
+ retryDelay
+ org.threeten.bp.Duration
+ java.time.Duration
+
+
+
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml b/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml
new file mode 100644
index 000000000000..089b48d3e85f
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/pom.xml
@@ -0,0 +1,445 @@
+
+
+ 4.0.0
+ com.google.cloud
+ google-cloud-bigquerystorage
+ 3.19.1
+ jar
+ BigQuery Storage
+ https://github.com/googleapis/java-bigquerystorage
+ BigQuery Storage
+
+ com.google.cloud
+ google-cloud-bigquerystorage-parent
+ 3.19.1
+
+
+ google-cloud-bigquerystorage
+
+
+
+
+ org.apache.arrow
+ arrow-vector
+ 17.0.0
+
+
+ org.apache.arrow
+ arrow-memory-core
+ 17.0.0
+
+
+
+
+
+
+ kr.motd.maven
+ os-maven-plugin
+ 1.7.1
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 3.5.2
+
+
+ org.apache.maven.surefire
+ surefire-junit-platform
+ ${surefire.version}
+
+
+
+
+ org.xolstice.maven.plugins
+ protobuf-maven-plugin
+ 0.6.1
+
+ com.google.protobuf:protoc:${project.protobuf-java.version}:exe:${os.detected.classifier}
+
+
+
+
+ test-compile
+
+
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+
+
+
+
+
+ io.grpc
+ grpc-api
+
+
+ io.grpc
+ grpc-stub
+
+
+ io.grpc
+ grpc-protobuf
+
+
+ com.google.api
+ api-common
+
+
+ com.google.auto.value
+ auto-value-annotations
+
+
+ com.google.protobuf
+ protobuf-java
+
+
+ com.google.api.grpc
+ proto-google-common-protos
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1alpha
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta1
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1beta2
+
+
+ com.google.api.grpc
+ proto-google-cloud-bigquerystorage-v1
+
+
+ com.google.code.gson
+ gson
+
+
+ com.google.guava
+ guava
+
+
+ com.google.api
+ gax
+
+
+ com.google.api
+ gax-grpc
+
+
+ io.grpc
+ grpc-xds
+
+
+ io.grpc
+ grpc-services
+
+
+ com.google.re2j
+ re2j
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+
+
+ io.opencensus
+ opencensus-proto
+
+
+
+
+ org.threeten
+ threetenbp
+
+
+ org.json
+ json
+
+
+ com.google.auth
+ google-auth-library-credentials
+
+
+ io.opentelemetry
+ opentelemetry-api
+
+
+ io.opentelemetry
+ opentelemetry-context
+
+
+ org.apache.arrow
+ arrow-vector
+
+
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+ test
+
+
+ io.opentelemetry
+ opentelemetry-sdk-common
+ test
+
+
+ io.opentelemetry
+ opentelemetry-sdk-trace
+ test
+
+
+ junit
+ junit
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ test
+
+
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ test
+
+
+ com.google.http-client
+ google-http-client
+ 1.47.1
+ test
+
+
+ com.google.truth
+ truth
+ 1.4.4
+ test
+
+
+ org.checkerframework
+ checker-qual
+
+
+
+
+ org.mockito
+ mockito-core
+ 3.12.4
+ test
+
+
+ org.apache.avro
+ avro
+ 1.11.4
+ test
+
+
+ org.apache.arrow
+ arrow-memory-core
+ test
+
+
+ com.google.protobuf
+ protobuf-java-util
+ test
+
+
+ com.google.cloud
+ google-cloud-bigquery
+ test
+
+
+ com.google.auth
+ google-auth-library-oauth2-http
+ test
+
+
+ com.google.code.findbugs
+ jsr305
+
+
+ com.google.errorprone
+ error_prone_annotations
+
+
+ com.google.cloud
+ google-cloud-core
+ runtime
+
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta1
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta
+ test
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1alpha
+ test
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1beta2
+
+
+ com.google.api.grpc
+ grpc-google-cloud-bigquerystorage-v1
+
+
+
+
+ com.google.api
+ gax-grpc
+ testlib
+ test
+
+
+
+
+
+ arrow-config
+
+ [9,)
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ UTF-8
+ true
+
+ -J--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED
+ -J--add-opens=java.base/java.nio=java-base,ALL-UNNAMED
+
+
+
+
+
+
+
+
+ customNative
+
+
+
+ org.opentest4j
+ opentest4j
+ ${opentest4j.version}
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ ${junit-vintage-engine.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${surefire.version}
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit-vintage-engine.version}
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ ${junit-vintage-engine.version}
+
+
+
+
+
+ **/ITBigQueryWrite*RetryTest.java
+
+
+ **/IT*.java
+
+ **/*ClientTest.java
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native-maven-plugin.version}
+ true
+
+
+ test-native
+
+ test
+
+ test
+
+
+
+
+ --no-fallback
+ --no-server
+
+
+
+
+
+
+
+ java17
+
+ [17,)
+
+
+ !jvm
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ --add-opens=java.base/java.nio=ALL-UNNAMED
+
+
+
+
+
+
+
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util/Errors.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util/Errors.java
new file mode 100644
index 000000000000..85da2e3b5b2b
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util/Errors.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2026 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.util;
+
+import com.google.rpc.RetryInfo;
+import io.grpc.Metadata;
+import io.grpc.Status;
+import io.grpc.protobuf.ProtoUtils;
+import java.time.Duration;
+
+/** Static utility methods for working with Errors returned from the service. */
+public class Errors {
+ private Errors() {}
+
+ public static class IsRetryableStatusResult {
+ public boolean isRetryable = false;
+ public Duration retryDelay = null;
+ }
+
+ private static final Metadata.Key KEY_RETRY_INFO =
+ ProtoUtils.keyForProto(RetryInfo.getDefaultInstance());
+
+ /**
+ * Returns true iff the Status indicates an error that is retryable.
+ *
+ *
Generally, internal errors are not considered retryable, however there are certain transient
+ * network issues that appear as internal but are in fact retryable.
+ *
+ *
Resource exhausted errors are only considered retryable if metadata contains a serialized
+ * RetryInfo object.
+ */
+ public static IsRetryableStatusResult isRetryableStatus(Status status, Metadata metadata) {
+ IsRetryableStatusResult result = new IsRetryableStatusResult();
+
+ result.isRetryable = isRetryableInternalStatus(status);
+ if (!result.isRetryable
+ && status.getCode() == Status.Code.RESOURCE_EXHAUSTED
+ && metadata != null
+ && metadata.containsKey(KEY_RETRY_INFO)) {
+ RetryInfo retryInfo = metadata.get(KEY_RETRY_INFO);
+ if (retryInfo.hasRetryDelay()) {
+ result.isRetryable = true;
+ result.retryDelay =
+ Duration.ofSeconds(
+ retryInfo.getRetryDelay().getSeconds(), retryInfo.getRetryDelay().getNanos());
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns true iff the Status indicates and internal error that is retryable.
+ *
+ *
Generally, internal errors are not considered retryable, however there are certain transient
+ * network issues that appear as internal but are in fact retryable.
+ */
+ public static boolean isRetryableInternalStatus(Status status) {
+ String description = status.getDescription();
+ return status.getCode() == Status.Code.INTERNAL
+ && description != null
+ && (description.contains("Received unexpected EOS ")
+ || description.contains(" Rst ")
+ || description.contains("Rst Stream")
+ || description.contains("RST_STREAM")
+ || description.contains(
+ "INTERNAL: A retriable error could not be retried due to Extensible Stubs memory"
+ + " limits for streams")
+ || description.contains("Connection closed with unknown cause")
+ || description.contains("HTTP/2 error code: INTERNAL_ERROR"));
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util/TimeConversionUtils.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util/TimeConversionUtils.java
new file mode 100644
index 000000000000..56f719cc4309
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/util/TimeConversionUtils.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2026 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.util;
+
+import com.google.api.core.InternalApi;
+
+/**
+ * Convenience methods for conversions between {@link java.time} and {@link org.threeten.bp}
+ * objects. This will be kept until this issue is solved.
+ */
+@InternalApi("https://github.com/googleapis/sdk-platform-java/issues/3412")
+public class TimeConversionUtils {
+ public static java.time.LocalDateTime toJavaTimeLocalDateTime(
+ org.threeten.bp.LocalDateTime result) {
+ return java.time.LocalDateTime.of(
+ result.getYear(),
+ java.time.Month.of(result.getMonth().getValue()),
+ result.getDayOfMonth(),
+ result.getHour(),
+ result.getMinute(),
+ result.getSecond(),
+ result.getNano());
+ }
+
+ public static org.threeten.bp.LocalDateTime toThreetenLocalDateTime(
+ java.time.LocalDateTime result) {
+ return org.threeten.bp.LocalDateTime.of(
+ result.getYear(),
+ org.threeten.bp.Month.of(result.getMonth().getValue()),
+ result.getDayOfMonth(),
+ result.getHour(),
+ result.getMinute(),
+ result.getSecond(),
+ result.getNano());
+ }
+
+ public static java.time.LocalTime toJavaTimeLocalTime(org.threeten.bp.LocalTime result) {
+ return java.time.LocalTime.of(
+ result.getHour(), result.getMinute(), result.getSecond(), result.getNano());
+ }
+
+ public static org.threeten.bp.LocalTime toThreetenLocalTime(java.time.LocalTime result) {
+ return org.threeten.bp.LocalTime.of(
+ result.getHour(), result.getMinute(), result.getSecond(), result.getNano());
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java
new file mode 100644
index 000000000000..3a415875f517
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/AppendFormats.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2026 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() {}
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BQTableSchemaToProtoDescriptor.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BQTableSchemaToProtoDescriptor.java
new file mode 100644
index 000000000000..6a62f454e373
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BQTableSchemaToProtoDescriptor.java
@@ -0,0 +1,263 @@
+/*
+ * Copyright 2026 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.cloud.bigquery.storage.v1.TableFieldSchema.Mode;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.protobuf.DescriptorProtos.DescriptorProto;
+import com.google.protobuf.DescriptorProtos.FieldDescriptorProto;
+import com.google.protobuf.DescriptorProtos.FieldOptions;
+import com.google.protobuf.DescriptorProtos.FileDescriptorProto;
+import com.google.protobuf.Descriptors;
+import com.google.protobuf.Descriptors.Descriptor;
+import com.google.protobuf.Descriptors.FileDescriptor;
+import com.google.protobuf.Message;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+/**
+ * Converts a BQ table schema to protobuf descriptor. All field names will be converted to lowercase
+ * when constructing the protobuf descriptor. The mapping between field types and field modes are
+ * shown in the ImmutableMaps below.
+ */
+public class BQTableSchemaToProtoDescriptor {
+
+ private static final Logger LOG =
+ Logger.getLogger(BQTableSchemaToProtoDescriptor.class.getName());
+
+ private static Map DEFAULT_BQ_TABLE_SCHEMA_MODE_MAP =
+ ImmutableMap.of(
+ TableFieldSchema.Mode.NULLABLE, FieldDescriptorProto.Label.LABEL_OPTIONAL,
+ TableFieldSchema.Mode.REPEATED, FieldDescriptorProto.Label.LABEL_REPEATED,
+ TableFieldSchema.Mode.REQUIRED, FieldDescriptorProto.Label.LABEL_REQUIRED);
+
+ private static Map
+ DEFAULT_BQ_TABLE_SCHEMA_TYPE_MAP =
+ new ImmutableMap.Builder()
+ .put(TableFieldSchema.Type.BOOL, FieldDescriptorProto.Type.TYPE_BOOL)
+ .put(TableFieldSchema.Type.BYTES, FieldDescriptorProto.Type.TYPE_BYTES)
+ .put(TableFieldSchema.Type.DATE, FieldDescriptorProto.Type.TYPE_INT32)
+ .put(TableFieldSchema.Type.DATETIME, FieldDescriptorProto.Type.TYPE_INT64)
+ .put(TableFieldSchema.Type.DOUBLE, FieldDescriptorProto.Type.TYPE_DOUBLE)
+ .put(TableFieldSchema.Type.GEOGRAPHY, FieldDescriptorProto.Type.TYPE_STRING)
+ .put(TableFieldSchema.Type.INT64, FieldDescriptorProto.Type.TYPE_INT64)
+ .put(TableFieldSchema.Type.NUMERIC, FieldDescriptorProto.Type.TYPE_BYTES)
+ .put(TableFieldSchema.Type.BIGNUMERIC, FieldDescriptorProto.Type.TYPE_BYTES)
+ .put(TableFieldSchema.Type.STRING, FieldDescriptorProto.Type.TYPE_STRING)
+ .put(TableFieldSchema.Type.STRUCT, FieldDescriptorProto.Type.TYPE_MESSAGE)
+ .put(TableFieldSchema.Type.TIME, FieldDescriptorProto.Type.TYPE_INT64)
+ .put(TableFieldSchema.Type.TIMESTAMP, FieldDescriptorProto.Type.TYPE_INT64)
+ .put(TableFieldSchema.Type.JSON, FieldDescriptorProto.Type.TYPE_STRING)
+ .put(TableFieldSchema.Type.INTERVAL, FieldDescriptorProto.Type.TYPE_STRING)
+ .put(TableFieldSchema.Type.RANGE, FieldDescriptorProto.Type.TYPE_MESSAGE)
+ .build();
+
+ /**
+ * Converts TableFieldSchema to a Descriptors.Descriptor object.
+ *
+ * @param BQTableSchema
+ * @throws Descriptors.DescriptorValidationException
+ */
+ public static Descriptor convertBQTableSchemaToProtoDescriptor(TableSchema BQTableSchema)
+ throws Descriptors.DescriptorValidationException {
+ Preconditions.checkNotNull(BQTableSchema, "BQTableSchema is null.");
+ return convertBQTableSchemaToProtoDescriptorImpl(
+ BQTableSchema, "root", new HashMap, Descriptor>());
+ }
+
+ /**
+ * Converts a TableFieldSchema to a Descriptors.Descriptor object.
+ *
+ * @param BQTableSchema
+ * @param scope Keeps track of current scope to prevent repeated naming while constructing
+ * descriptor.
+ * @param dependencyMap Stores already constructed descriptors to prevent reconstruction
+ * @throws Descriptors.DescriptorValidationException
+ */
+ private static Descriptor convertBQTableSchemaToProtoDescriptorImpl(
+ TableSchema BQTableSchema,
+ String scope,
+ HashMap, Descriptor> dependencyMap)
+ throws Descriptors.DescriptorValidationException, IllegalArgumentException {
+ List dependenciesList = new ArrayList();
+ List fields = new ArrayList();
+ int index = 1;
+ for (TableFieldSchema BQTableField : BQTableSchema.getFieldsList()) {
+ String scopeName =
+ BigQuerySchemaUtil.isProtoCompatible(BQTableField.getName())
+ ? BQTableField.getName()
+ : BigQuerySchemaUtil.generatePlaceholderFieldName(BQTableField.getName());
+ String currentScope = scope + "__" + scopeName;
+ switch (BQTableField.getType()) {
+ case STRUCT:
+ ImmutableList fieldList =
+ ImmutableList.copyOf(BQTableField.getFieldsList());
+ if (dependencyMap.containsKey(fieldList)) {
+ Descriptor descriptor = dependencyMap.get(fieldList);
+ dependenciesList.add(descriptor.getFile());
+ fields.add(
+ convertBQTableFieldToProtoField(BQTableField, index++, descriptor.getName()));
+ } else {
+ Descriptor descriptor =
+ convertBQTableSchemaToProtoDescriptorImpl(
+ TableSchema.newBuilder().addAllFields(fieldList).build(),
+ currentScope,
+ dependencyMap);
+ dependenciesList.add(descriptor.getFile());
+ dependencyMap.put(fieldList, descriptor);
+ fields.add(convertBQTableFieldToProtoField(BQTableField, index++, currentScope));
+ }
+ break;
+ case RANGE:
+ switch (BQTableField.getRangeElementType().getType()) {
+ case DATE:
+ case DATETIME:
+ case TIMESTAMP:
+ break;
+ default:
+ throw new IllegalArgumentException(
+ String.format(
+ "Error: %s of type RANGE requires range element type (DATE, DATETIME,"
+ + " TIMESTAMP)",
+ currentScope));
+ }
+ // For RANGE type, expliclitly add the fields start and end of the same FieldElementType
+ // as it is not expliclity defined in the TableSchema.
+ ImmutableList rangeFields =
+ ImmutableList.of(
+ TableFieldSchema.newBuilder()
+ .setType(BQTableField.getRangeElementType().getType())
+ .setName("start")
+ .setMode(Mode.NULLABLE)
+ .setTimestampPrecision(BQTableField.getTimestampPrecision())
+ .build(),
+ TableFieldSchema.newBuilder()
+ .setType(BQTableField.getRangeElementType().getType())
+ .setName("end")
+ .setMode(Mode.NULLABLE)
+ .setTimestampPrecision(BQTableField.getTimestampPrecision())
+ .build());
+
+ if (dependencyMap.containsKey(rangeFields)) {
+ Descriptor descriptor = dependencyMap.get(rangeFields);
+ dependenciesList.add(descriptor.getFile());
+ fields.add(
+ convertBQTableFieldToProtoField(BQTableField, index++, descriptor.getName()));
+ } else {
+ Descriptor descriptor =
+ convertBQTableSchemaToProtoDescriptorImpl(
+ TableSchema.newBuilder().addAllFields(rangeFields).build(),
+ currentScope,
+ dependencyMap);
+ dependenciesList.add(descriptor.getFile());
+ dependencyMap.put(rangeFields, descriptor);
+ fields.add(convertBQTableFieldToProtoField(BQTableField, index++, currentScope));
+ }
+ break;
+ default:
+ fields.add(convertBQTableFieldToProtoField(BQTableField, index++, currentScope));
+ break;
+ }
+ }
+ FileDescriptor[] dependenciesArray = new FileDescriptor[dependenciesList.size()];
+ dependenciesArray = dependenciesList.toArray(dependenciesArray);
+ DescriptorProto descriptorProto =
+ DescriptorProto.newBuilder().setName(scope).addAllField(fields).build();
+ FileDescriptorProto fileDescriptorProto =
+ FileDescriptorProto.newBuilder().addMessageType(descriptorProto).build();
+ FileDescriptor fileDescriptor =
+ FileDescriptor.buildFrom(fileDescriptorProto, dependenciesArray);
+ Descriptor descriptor = fileDescriptor.findMessageTypeByName(scope);
+ return descriptor;
+ }
+
+ /**
+ * Converts a BQTableField to ProtoField
+ *
+ * @param BQTableField BQ Field used to construct a FieldDescriptorProto
+ * @param index Index for protobuf fields.
+ * @param scope used to name descriptors
+ */
+ static FieldDescriptorProto convertBQTableFieldToProtoField(
+ TableFieldSchema BQTableField, int index, String scope) {
+ TableFieldSchema.Mode mode = BQTableField.getMode();
+ String fieldName = BQTableField.getName().toLowerCase();
+
+ FieldDescriptorProto.Builder fieldDescriptor =
+ FieldDescriptorProto.newBuilder()
+ .setName(fieldName)
+ .setNumber(index)
+ .setLabel((FieldDescriptorProto.Label) DEFAULT_BQ_TABLE_SCHEMA_MODE_MAP.get(mode));
+
+ switch (BQTableField.getType()) {
+ case STRUCT:
+ fieldDescriptor.setTypeName(scope);
+ break;
+ case RANGE:
+ fieldDescriptor.setType(
+ (FieldDescriptorProto.Type)
+ DEFAULT_BQ_TABLE_SCHEMA_TYPE_MAP.get(BQTableField.getType()));
+ fieldDescriptor.setTypeName(scope);
+ break;
+ case TIMESTAMP:
+ // Can map to either int64 or string based on the BQ Field's timestamp precision
+ // Default: microsecond (6) maps to int64 and picosecond (12) maps to string.
+ long timestampPrecision = BQTableField.getTimestampPrecision().getValue();
+ if (timestampPrecision == 12L) {
+ fieldDescriptor.setType(
+ (FieldDescriptorProto.Type) FieldDescriptorProto.Type.TYPE_STRING);
+ break;
+ }
+ // This should never happen as this is a server response issue. If this is the case,
+ // warn the user and use INT64 as the default is microsecond precision.
+ if (timestampPrecision != 6L && timestampPrecision != 0L) {
+ LOG.warning(
+ "BigQuery Timestamp field "
+ + BQTableField.getName()
+ + " has timestamp precision that is not 6 or 12. Defaulting to microsecond"
+ + " precision and mapping to INT64 protobuf type.");
+ }
+ // If the timestampPrecision value comes back as a null result from the server,
+ // timestampPrecision has a value of 0L. Use the INT64 to map to the type used
+ // for the default precision (microsecond).
+ fieldDescriptor.setType((FieldDescriptorProto.Type) FieldDescriptorProto.Type.TYPE_INT64);
+ break;
+ default:
+ fieldDescriptor.setType(
+ (FieldDescriptorProto.Type)
+ DEFAULT_BQ_TABLE_SCHEMA_TYPE_MAP.get(BQTableField.getType()));
+ break;
+ }
+
+ // Sets columnName annotation when field name is not proto comptaible.
+ if (!BigQuerySchemaUtil.isProtoCompatible(fieldName)) {
+ fieldDescriptor.setName(BigQuerySchemaUtil.generatePlaceholderFieldName(fieldName));
+
+ // The following work around (instead of setting FieldOptions directly) for when
+ // FieldOptions.Builder changes from GeneratedMessageV3 in 3.25 to GeneratedMessage in 4.28 as
+ // it no longer depends on FieldOptions.
+ Message.Builder fieldOptionBuilder = FieldOptions.newBuilder();
+ fieldOptionBuilder.setField(AnnotationsProto.columnName.getDescriptor(), fieldName);
+ fieldDescriptor.setOptions((FieldOptions) fieldOptionBuilder.build());
+ }
+ return fieldDescriptor.build();
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BaseBigQueryReadClient.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BaseBigQueryReadClient.java
new file mode 100644
index 000000000000..05f482e8bb48
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BaseBigQueryReadClient.java
@@ -0,0 +1,558 @@
+/*
+ * Copyright 2026 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.api.gax.core.BackgroundResource;
+import com.google.api.gax.rpc.ServerStreamingCallable;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.bigquery.storage.v1.stub.BigQueryReadStub;
+import com.google.cloud.bigquery.storage.v1.stub.BigQueryReadStubSettings;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Generated;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * Service Description: BigQuery Read API.
+ *
+ *
The Read API can be used to read data from BigQuery.
+ *
+ *
This class provides the ability to make remote calls to the backing service through method
+ * calls that map to API methods. Sample code to get started:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * ProjectName parent = ProjectName.of("[PROJECT]");
+ * ReadSession readSession = ReadSession.newBuilder().build();
+ * int maxStreamCount = 940837515;
+ * ReadSession response =
+ * baseBigQueryReadClient.createReadSession(parent, readSession, maxStreamCount);
+ * }
+ * }
+ *
+ *
Note: close() needs to be called on the BaseBigQueryReadClient object to clean up resources
+ * such as threads. In the example above, try-with-resources is used, which automatically calls
+ * close().
+ *
+ *
+ *
Methods
+ *
+ *
Method
+ *
Description
+ *
Method Variants
+ *
+ *
+ *
CreateReadSession
+ *
Creates a new read session. A read session divides the contents of a BigQuery table into one or more streams, which can then be used to read data from the table. The read session also specifies properties of the data to be read, such as a list of columns or a push-down filter describing the rows to be returned.
+ *
A particular row can be read by at most one stream. When the caller has reached the end of each stream in the session, then all the data in the table has been read.
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from each stream. Because the server-side unit for assigning data is collections of rows, the API does not guarantee that each stream will return the same number or rows. Additionally, the limits are enforced based on the number of pre-filtered rows, so some filters can lead to lopsided assignments.
+ *
Read sessions automatically expire 6 hours after they are created and do not require manual clean-up by the caller.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
"Flattened" method variants have converted the fields of the request object into function parameters to enable multiple ways to call the same method.
+ *
+ *
createReadSession(ProjectName parent, ReadSession readSession, int maxStreamCount)
+ *
createReadSession(String parent, ReadSession readSession, int maxStreamCount)
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
createReadSessionCallable()
+ *
+ *
+ *
+ *
+ *
ReadRows
+ *
Reads rows from the stream in the format prescribed by the ReadSession. Each response contains one or more table rows, up to a maximum of 128 MB per response; read requests which attempt to read individual rows larger than 128 MB will fail.
+ *
Each request also returns a set of stream statistics reflecting the current state of the stream.
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
readRowsCallable()
+ *
+ *
+ *
+ *
+ *
SplitReadStream
+ *
Splits a given `ReadStream` into two `ReadStream` objects. These `ReadStream` objects are referred to as the primary and the residual streams of the split. The original `ReadStream` can still be read from in the same manner as before. Both of the returned `ReadStream` objects can also be read from, and the rows returned by both child streams will be the same as the rows read from the original stream.
+ *
Moreover, the two child streams will be allocated back-to-back in the original `ReadStream`. Concretely, it is guaranteed that for streams original, primary, and residual, that original[0-j] = primary[0-j] and original[j-n] = residual[0-m] once the streams have been read to completion.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
splitReadStreamCallable()
+ *
+ *
+ *
+ *
+ *
+ *
See the individual methods for example code.
+ *
+ *
Many parameters require resource names to be formatted in a particular way. To assist with
+ * these names, this class includes a format method for each type of name, and additionally a parse
+ * method to extract the individual identifiers contained within names that are returned.
+ *
+ *
This class can be customized by passing in a custom instance of BaseBigQueryReadSettings to
+ * create(). For example:
+ *
+ *
To customize credentials:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * BaseBigQueryReadSettings baseBigQueryReadSettings =
+ * BaseBigQueryReadSettings.newBuilder()
+ * .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ * .build();
+ * BaseBigQueryReadClient baseBigQueryReadClient =
+ * BaseBigQueryReadClient.create(baseBigQueryReadSettings);
+ * }
+ *
+ *
To customize the endpoint:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * BaseBigQueryReadSettings baseBigQueryReadSettings =
+ * BaseBigQueryReadSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * BaseBigQueryReadClient baseBigQueryReadClient =
+ * BaseBigQueryReadClient.create(baseBigQueryReadSettings);
+ * }
+ *
+ *
Please refer to the GitHub repository's samples for more quickstart code snippets.
+ */
+@Generated("by gapic-generator-java")
+public class BaseBigQueryReadClient implements BackgroundResource {
+ private final BaseBigQueryReadSettings settings;
+ private final BigQueryReadStub stub;
+
+ /** Constructs an instance of BaseBigQueryReadClient with default settings. */
+ public static final BaseBigQueryReadClient create() throws IOException {
+ return create(BaseBigQueryReadSettings.newBuilder().build());
+ }
+
+ /**
+ * Constructs an instance of BaseBigQueryReadClient, using the given settings. The channels are
+ * created based on the settings passed in, or defaults for any settings that are not set.
+ */
+ public static final BaseBigQueryReadClient create(BaseBigQueryReadSettings settings)
+ throws IOException {
+ return new BaseBigQueryReadClient(settings);
+ }
+
+ /**
+ * Constructs an instance of BaseBigQueryReadClient, using the given stub for making calls. This
+ * is for advanced usage - prefer using create(BaseBigQueryReadSettings).
+ */
+ public static final BaseBigQueryReadClient create(BigQueryReadStub stub) {
+ return new BaseBigQueryReadClient(stub);
+ }
+
+ /**
+ * Constructs an instance of BaseBigQueryReadClient, using the given settings. This is protected
+ * so that it is easy to make a subclass, but otherwise, the static factory methods should be
+ * preferred.
+ */
+ protected BaseBigQueryReadClient(BaseBigQueryReadSettings settings) throws IOException {
+ this.settings = settings;
+ this.stub = ((BigQueryReadStubSettings) settings.getStubSettings()).createStub();
+ }
+
+ protected BaseBigQueryReadClient(BigQueryReadStub stub) {
+ this.settings = null;
+ this.stub = stub;
+ }
+
+ public final BaseBigQueryReadSettings getSettings() {
+ return settings;
+ }
+
+ public BigQueryReadStub getStub() {
+ return stub;
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 6 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * ProjectName parent = ProjectName.of("[PROJECT]");
+ * ReadSession readSession = ReadSession.newBuilder().build();
+ * int maxStreamCount = 940837515;
+ * ReadSession response =
+ * baseBigQueryReadClient.createReadSession(parent, readSession, maxStreamCount);
+ * }
+ * }
+ *
+ * @param parent Required. The request project that owns the session, in the form of
+ * `projects/{project_id}`.
+ * @param readSession Required. Session to be created.
+ * @param maxStreamCount Max initial number of streams. If unset or zero, the server will provide
+ * a value of streams so as to produce reasonable throughput. Must be non-negative. The number
+ * of streams may be lower than the requested number, depending on the amount parallelism that
+ * is reasonable for the table. There is a default system max limit of 1,000.
+ *
This must be greater than or equal to preferred_min_stream_count. Typically, clients
+ * should either leave this unset to let the system to determine an upper bound OR set this a
+ * size for the maximum "units of work" it can gracefully handle.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final ReadSession createReadSession(
+ ProjectName parent, ReadSession readSession, int maxStreamCount) {
+ CreateReadSessionRequest request =
+ CreateReadSessionRequest.newBuilder()
+ .setParent(parent == null ? null : parent.toString())
+ .setReadSession(readSession)
+ .setMaxStreamCount(maxStreamCount)
+ .build();
+ return createReadSession(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 6 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * String parent = ProjectName.of("[PROJECT]").toString();
+ * ReadSession readSession = ReadSession.newBuilder().build();
+ * int maxStreamCount = 940837515;
+ * ReadSession response =
+ * baseBigQueryReadClient.createReadSession(parent, readSession, maxStreamCount);
+ * }
+ * }
+ *
+ * @param parent Required. The request project that owns the session, in the form of
+ * `projects/{project_id}`.
+ * @param readSession Required. Session to be created.
+ * @param maxStreamCount Max initial number of streams. If unset or zero, the server will provide
+ * a value of streams so as to produce reasonable throughput. Must be non-negative. The number
+ * of streams may be lower than the requested number, depending on the amount parallelism that
+ * is reasonable for the table. There is a default system max limit of 1,000.
+ *
This must be greater than or equal to preferred_min_stream_count. Typically, clients
+ * should either leave this unset to let the system to determine an upper bound OR set this a
+ * size for the maximum "units of work" it can gracefully handle.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final ReadSession createReadSession(
+ String parent, ReadSession readSession, int maxStreamCount) {
+ CreateReadSessionRequest request =
+ CreateReadSessionRequest.newBuilder()
+ .setParent(parent)
+ .setReadSession(readSession)
+ .setMaxStreamCount(maxStreamCount)
+ .build();
+ return createReadSession(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 6 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * CreateReadSessionRequest request =
+ * CreateReadSessionRequest.newBuilder()
+ * .setParent(ProjectName.of("[PROJECT]").toString())
+ * .setReadSession(ReadSession.newBuilder().build())
+ * .setMaxStreamCount(940837515)
+ * .setPreferredMinStreamCount(-1905507237)
+ * .build();
+ * ReadSession response = baseBigQueryReadClient.createReadSession(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final ReadSession createReadSession(CreateReadSessionRequest request) {
+ return createReadSessionCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 6 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * CreateReadSessionRequest request =
+ * CreateReadSessionRequest.newBuilder()
+ * .setParent(ProjectName.of("[PROJECT]").toString())
+ * .setReadSession(ReadSession.newBuilder().build())
+ * .setMaxStreamCount(940837515)
+ * .setPreferredMinStreamCount(-1905507237)
+ * .build();
+ * ApiFuture future =
+ * baseBigQueryReadClient.createReadSessionCallable().futureCall(request);
+ * // Do something.
+ * ReadSession response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable createReadSessionCallable() {
+ return stub.createReadSessionCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Reads rows from the stream in the format prescribed by the ReadSession. Each response contains
+ * one or more table rows, up to a maximum of 128 MB per response; read requests which attempt to
+ * read individual rows larger than 128 MB will fail.
+ *
+ *
Each request also returns a set of stream statistics reflecting the current state of the
+ * stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * ReadRowsRequest request =
+ * ReadRowsRequest.newBuilder()
+ * .setReadStream(
+ * ReadStreamName.of("[PROJECT]", "[LOCATION]", "[SESSION]", "[STREAM]").toString())
+ * .setOffset(-1019779949)
+ * .build();
+ * ServerStream stream =
+ * baseBigQueryReadClient.readRowsCallable().call(request);
+ * for (ReadRowsResponse response : stream) {
+ * // Do something when a response is received.
+ * }
+ * }
+ * }
+ */
+ public final ServerStreamingCallable readRowsCallable() {
+ return stub.readRowsCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Splits a given `ReadStream` into two `ReadStream` objects. These `ReadStream` objects are
+ * referred to as the primary and the residual streams of the split. The original `ReadStream` can
+ * still be read from in the same manner as before. Both of the returned `ReadStream` objects can
+ * also be read from, and the rows returned by both child streams will be the same as the rows
+ * read from the original stream.
+ *
+ *
Moreover, the two child streams will be allocated back-to-back in the original `ReadStream`.
+ * Concretely, it is guaranteed that for streams original, primary, and residual, that
+ * original[0-j] = primary[0-j] and original[j-n] = residual[0-m] once the streams have been read
+ * to completion.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * SplitReadStreamRequest request =
+ * SplitReadStreamRequest.newBuilder()
+ * .setName(
+ * ReadStreamName.of("[PROJECT]", "[LOCATION]", "[SESSION]", "[STREAM]").toString())
+ * .setFraction(-1653751294)
+ * .build();
+ * SplitReadStreamResponse response = baseBigQueryReadClient.splitReadStream(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final SplitReadStreamResponse splitReadStream(SplitReadStreamRequest request) {
+ return splitReadStreamCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Splits a given `ReadStream` into two `ReadStream` objects. These `ReadStream` objects are
+ * referred to as the primary and the residual streams of the split. The original `ReadStream` can
+ * still be read from in the same manner as before. Both of the returned `ReadStream` objects can
+ * also be read from, and the rows returned by both child streams will be the same as the rows
+ * read from the original stream.
+ *
+ *
Moreover, the two child streams will be allocated back-to-back in the original `ReadStream`.
+ * Concretely, it is guaranteed that for streams original, primary, and residual, that
+ * original[0-j] = primary[0-j] and original[j-n] = residual[0-m] once the streams have been read
+ * to completion.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BaseBigQueryReadClient baseBigQueryReadClient = BaseBigQueryReadClient.create()) {
+ * SplitReadStreamRequest request =
+ * SplitReadStreamRequest.newBuilder()
+ * .setName(
+ * ReadStreamName.of("[PROJECT]", "[LOCATION]", "[SESSION]", "[STREAM]").toString())
+ * .setFraction(-1653751294)
+ * .build();
+ * ApiFuture future =
+ * baseBigQueryReadClient.splitReadStreamCallable().futureCall(request);
+ * // Do something.
+ * SplitReadStreamResponse response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable
+ splitReadStreamCallable() {
+ return stub.splitReadStreamCallable();
+ }
+
+ @Override
+ public final void close() {
+ stub.close();
+ }
+
+ @Override
+ public void shutdown() {
+ stub.shutdown();
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return stub.isShutdown();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return stub.isTerminated();
+ }
+
+ @Override
+ public void shutdownNow() {
+ stub.shutdownNow();
+ }
+
+ @Override
+ public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
+ return stub.awaitTermination(duration, unit);
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BaseBigQueryReadSettings.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BaseBigQueryReadSettings.java
new file mode 100644
index 000000000000..a2241743131c
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BaseBigQueryReadSettings.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2026 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.api.core.ApiFunction;
+import com.google.api.gax.core.GoogleCredentialsProvider;
+import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
+import com.google.api.gax.rpc.ApiClientHeaderProvider;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.ServerStreamingCallSettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
+import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.cloud.bigquery.storage.v1.stub.BigQueryReadStubSettings;
+import java.io.IOException;
+import java.util.List;
+import javax.annotation.Generated;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * Settings class to configure an instance of {@link BaseBigQueryReadClient}.
+ *
+ *
The default instance has everything set to sensible defaults:
+ *
+ *
+ *
The default service address (bigquerystorage.googleapis.com) and default port (443) are
+ * used.
+ *
Credentials are acquired automatically through Application Default Credentials.
+ *
Retries are configured for idempotent methods but not for non-idempotent methods.
+ *
+ *
+ *
The builder of this class is recursive, so contained classes are themselves builders. When
+ * build() is called, the tree of builders is called to create the complete settings object.
+ *
+ *
For example, to set the
+ * [RetrySettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetrySettings)
+ * of createReadSession:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * BaseBigQueryReadSettings.Builder baseBigQueryReadSettingsBuilder =
+ * BaseBigQueryReadSettings.newBuilder();
+ * baseBigQueryReadSettingsBuilder
+ * .createReadSessionSettings()
+ * .setRetrySettings(
+ * baseBigQueryReadSettingsBuilder
+ * .createReadSessionSettings()
+ * .getRetrySettings()
+ * .toBuilder()
+ * .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ * .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ * .setMaxAttempts(5)
+ * .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ * .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ * .setRetryDelayMultiplier(1.3)
+ * .setRpcTimeoutMultiplier(1.5)
+ * .setTotalTimeoutDuration(Duration.ofSeconds(300))
+ * .build());
+ * BaseBigQueryReadSettings baseBigQueryReadSettings = baseBigQueryReadSettingsBuilder.build();
+ * }
+ *
+ * Please refer to the [Client Side Retry
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
+ */
+@Generated("by gapic-generator-java")
+public class BaseBigQueryReadSettings extends ClientSettings {
+
+ /** Returns the object with the settings used for calls to createReadSession. */
+ public UnaryCallSettings createReadSessionSettings() {
+ return ((BigQueryReadStubSettings) getStubSettings()).createReadSessionSettings();
+ }
+
+ /** Returns the object with the settings used for calls to readRows. */
+ public ServerStreamingCallSettings readRowsSettings() {
+ return ((BigQueryReadStubSettings) getStubSettings()).readRowsSettings();
+ }
+
+ /** Returns the object with the settings used for calls to splitReadStream. */
+ public UnaryCallSettings
+ splitReadStreamSettings() {
+ return ((BigQueryReadStubSettings) getStubSettings()).splitReadStreamSettings();
+ }
+
+ public static final BaseBigQueryReadSettings create(BigQueryReadStubSettings stub)
+ throws IOException {
+ return new BaseBigQueryReadSettings.Builder(stub.toBuilder()).build();
+ }
+
+ /** Returns a builder for the default ExecutorProvider for this service. */
+ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
+ return BigQueryReadStubSettings.defaultExecutorProviderBuilder();
+ }
+
+ /** Returns the default service endpoint. */
+ public static String getDefaultEndpoint() {
+ return BigQueryReadStubSettings.getDefaultEndpoint();
+ }
+
+ /** Returns the default service scopes. */
+ public static List getDefaultServiceScopes() {
+ return BigQueryReadStubSettings.getDefaultServiceScopes();
+ }
+
+ /** Returns a builder for the default credentials for this service. */
+ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
+ return BigQueryReadStubSettings.defaultCredentialsProviderBuilder();
+ }
+
+ /** Returns a builder for the default ChannelProvider for this service. */
+ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
+ return BigQueryReadStubSettings.defaultGrpcTransportProviderBuilder();
+ }
+
+ public static TransportChannelProvider defaultTransportChannelProvider() {
+ return BigQueryReadStubSettings.defaultTransportChannelProvider();
+ }
+
+ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
+ return BigQueryReadStubSettings.defaultApiClientHeaderProviderBuilder();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder() {
+ return Builder.createDefault();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder(ClientContext clientContext) {
+ return new Builder(clientContext);
+ }
+
+ /** Returns a builder containing all the values of this settings class. */
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ protected BaseBigQueryReadSettings(Builder settingsBuilder) throws IOException {
+ super(settingsBuilder);
+ }
+
+ /** Builder for BaseBigQueryReadSettings. */
+ public static class Builder extends ClientSettings.Builder {
+
+ protected Builder() throws IOException {
+ this(((ClientContext) null));
+ }
+
+ protected Builder(ClientContext clientContext) {
+ super(BigQueryReadStubSettings.newBuilder(clientContext));
+ }
+
+ protected Builder(BaseBigQueryReadSettings settings) {
+ super(settings.getStubSettings().toBuilder());
+ }
+
+ protected Builder(BigQueryReadStubSettings.Builder stubSettings) {
+ super(stubSettings);
+ }
+
+ private static Builder createDefault() {
+ return new Builder(BigQueryReadStubSettings.newBuilder());
+ }
+
+ public BigQueryReadStubSettings.Builder getStubSettingsBuilder() {
+ return ((BigQueryReadStubSettings.Builder) getStubSettings());
+ }
+
+ /**
+ * Applies the given settings updater function to all of the unary API methods in this service.
+ *
+ *
Note: This method does not support applying settings to streaming methods.
+ */
+ public Builder applyToAllUnaryMethods(
+ ApiFunction, Void> settingsUpdater) {
+ super.applyToAllUnaryMethods(
+ getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater);
+ return this;
+ }
+
+ /** Returns the builder for the settings used for calls to createReadSession. */
+ public UnaryCallSettings.Builder
+ createReadSessionSettings() {
+ return getStubSettingsBuilder().createReadSessionSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to readRows. */
+ public ServerStreamingCallSettings.Builder
+ readRowsSettings() {
+ return getStubSettingsBuilder().readRowsSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to splitReadStream. */
+ public UnaryCallSettings.Builder
+ splitReadStreamSettings() {
+ return getStubSettingsBuilder().splitReadStreamSettings();
+ }
+
+ @Override
+ public BaseBigQueryReadSettings build() throws IOException {
+ return new BaseBigQueryReadSettings(this);
+ }
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigDecimalByteStringEncoder.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigDecimalByteStringEncoder.java
new file mode 100644
index 000000000000..1beab32e95b8
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigDecimalByteStringEncoder.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2026 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.
+ */
+
+/*
+ * This code was ported from ZetaSQL and can be found here:
+ * https://github.com/google/zetasql/blob/c55f967a5ae35b476437210c529691d8a73f5507/java/com/google/zetasql/Value.java
+ */
+
+package com.google.cloud.bigquery.storage.v1;
+
+import com.google.common.primitives.Bytes;
+import com.google.protobuf.ByteString;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+public class BigDecimalByteStringEncoder {
+ private static int NUMERIC_SCALE = 9;
+ private static final BigDecimal MAX_NUMERIC_VALUE =
+ new BigDecimal("99999999999999999999999999999.999999999");
+ private static final BigDecimal MIN_NUMERIC_VALUE =
+ new BigDecimal("-99999999999999999999999999999.999999999");
+
+ // Number of digits after the decimal point supported by the BIGNUMERIC data type.
+ private static final int BIGNUMERIC_SCALE = 38;
+ // Maximum and minimum allowed values for the BIGNUMERIC data type.
+ private static final BigDecimal MAX_BIGNUMERIC_VALUE =
+ new BigDecimal(
+ "578960446186580977117854925043439539266.34992332820282019728792003956564819967");
+ private static final BigDecimal MIN_BIGNUMERIC_VALUE =
+ new BigDecimal(
+ "-578960446186580977117854925043439539266.34992332820282019728792003956564819968");
+
+ public static ByteString encodeToNumericByteString(BigDecimal bigDecimal) {
+ ByteString byteString =
+ serializeBigDecimal(
+ bigDecimal, NUMERIC_SCALE, MAX_NUMERIC_VALUE, MIN_NUMERIC_VALUE, "ByteString");
+ return byteString;
+ }
+
+ public static ByteString encodeToBigNumericByteString(BigDecimal bigDecimal) {
+ ByteString byteString =
+ serializeBigDecimal(
+ bigDecimal, BIGNUMERIC_SCALE, MAX_BIGNUMERIC_VALUE, MIN_BIGNUMERIC_VALUE, "ByteString");
+ return byteString;
+ }
+
+ public static BigDecimal decodeNumericByteString(ByteString byteString) {
+ BigDecimal bigDecimal =
+ deserializeBigDecimal(
+ byteString, NUMERIC_SCALE, MAX_NUMERIC_VALUE, MIN_NUMERIC_VALUE, "BigDecimal");
+ return bigDecimal;
+ }
+
+ public static BigDecimal decodeBigNumericByteString(ByteString byteString) {
+ BigDecimal bigDecimal =
+ deserializeBigDecimal(
+ byteString, BIGNUMERIC_SCALE, MAX_BIGNUMERIC_VALUE, MIN_BIGNUMERIC_VALUE, "BigDecimal");
+ return bigDecimal;
+ }
+
+ // Make these private and make public wrapper that internalizes these min/max/scale/type
+ private static BigDecimal deserializeBigDecimal(
+ ByteString serializedValue,
+ int scale,
+ BigDecimal maxValue,
+ BigDecimal minValue,
+ String typeName) {
+ byte[] bytes = serializedValue.toByteArray();
+ // NUMERIC/BIGNUMERIC values are serialized as scaled integers in two's complement form in
+ // little endian order. BigInteger requires the same encoding but in big endian order,
+ // therefore we must reverse the bytes that come from the proto.
+ Bytes.reverse(bytes);
+ BigInteger scaledValue = new BigInteger(bytes);
+ BigDecimal decimalValue = new BigDecimal(scaledValue, scale);
+ if (decimalValue.compareTo(maxValue) > 0 || decimalValue.compareTo(minValue) < 0) {
+ throw new IllegalArgumentException(typeName + " overflow: " + decimalValue.toPlainString());
+ }
+ return decimalValue;
+ }
+
+ /** Returns a numeric Value that equals to {@code v}. */
+ private static ByteString serializeBigDecimal(
+ BigDecimal v, int scale, BigDecimal maxValue, BigDecimal minValue, String typeName) {
+ if (v.scale() > scale) {
+ throw new IllegalArgumentException(
+ typeName + " scale cannot exceed " + scale + ": " + v.toPlainString());
+ }
+ if (v.compareTo(maxValue) > 0 || v.compareTo(minValue) < 0) {
+ throw new IllegalArgumentException(typeName + " overflow: " + v.toPlainString());
+ }
+ byte[] bytes = v.setScale(scale).unscaledValue().toByteArray();
+ // NUMERIC/BIGNUMERIC values are serialized as scaled integers in two's complement form in
+ // little endian
+ // order. BigInteger requires the same encoding but in big endian order, therefore we must
+ // reverse the bytes that come from the proto.
+ Bytes.reverse(bytes);
+ return ByteString.copyFrom(bytes);
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryReadClient.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryReadClient.java
new file mode 100644
index 000000000000..c44a3ecc81a8
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryReadClient.java
@@ -0,0 +1,581 @@
+/*
+ * Copyright 2026 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.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.rpc.ServerStreamingCallable;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.bigquery.storage.v1.stub.EnhancedBigQueryReadStub;
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.api.trace.Span;
+import io.opentelemetry.api.trace.TracerProvider;
+import io.opentelemetry.context.Scope;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Service Description: BigQuery Read API.
+ *
+ *
The Read API can be used to read data from BigQuery.
+ *
+ *
This class provides the ability to make remote calls to the backing service through method
+ * calls that map to API methods. Sample code to get started:
+ *
+ *
Note: close() needs to be called on the BigQueryReadClient object to clean up resources such
+ * as threads. In the example above, try-with-resources is used, which automatically calls close().
+ *
+ *
The surface of this class includes several types of Java methods for each of the API's
+ * methods:
+ *
+ *
+ *
A "flattened" method. With this type of method, the fields of the request type have been
+ * converted into function parameters. It may be the case that not all fields are available as
+ * parameters, and not every API method will have a flattened method entry point.
+ *
A "request object" method. This type of method only takes one parameter, a request object,
+ * which must be constructed before the call. Not every API method will have a request object
+ * method.
+ *
A "callable" method. This type of method takes no parameters and returns an immutable API
+ * callable object, which can be used to initiate calls to the service.
+ *
+ *
+ *
See the individual methods for example code.
+ *
+ *
Many parameters require resource names to be formatted in a particular way. To assist with
+ * these names, this class includes a format method for each type of name, and additionally a parse
+ * method to extract the individual identifiers contained within names that are returned.
+ *
+ *
This class can be customized by passing in a custom instance of BigQueryReadSettings to
+ * create(). For example:
+ *
+ *
+ */
+@BetaApi
+public class BigQueryReadClient implements BackgroundResource {
+ private final BigQueryReadSettings settings;
+ private final EnhancedBigQueryReadStub stub;
+
+ /** Constructs an instance of BigQueryReadClient with default settings. */
+ public static final BigQueryReadClient create() throws IOException {
+ return create(BigQueryReadSettings.newBuilder().build());
+ }
+
+ /**
+ * Constructs an instance of BigQueryReadClient, using the given settings. The channels are
+ * created based on the settings passed in, or defaults for any settings that are not set.
+ */
+ public static final BigQueryReadClient create(BigQueryReadSettings settings) throws IOException {
+ return new BigQueryReadClient(settings);
+ }
+
+ /**
+ * Constructs an instance of BigQueryReadClient, using the given stub for making calls. This is
+ * for advanced usage - prefer to use BigQueryReadSettings}.
+ */
+ @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
+ public static final BigQueryReadClient create(EnhancedBigQueryReadStub stub) {
+ return new BigQueryReadClient(stub);
+ }
+
+ /**
+ * Constructs an instance of BigQueryReadClient, using the given settings. This is protected so
+ * that it is easy to make a subclass, but otherwise, the static factory methods should be
+ * preferred.
+ */
+ protected BigQueryReadClient(BigQueryReadSettings settings) throws IOException {
+ this.settings = settings;
+ this.stub =
+ EnhancedBigQueryReadStub.create(
+ settings.getTypedStubSettings(),
+ settings.getReadRowsRetryAttemptListener(),
+ settings.isOpenTelemetryEnabled(),
+ settings.getOpenTelemetryTracerProvider());
+ }
+
+ @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
+ protected BigQueryReadClient(EnhancedBigQueryReadStub stub) {
+ this.settings = null;
+ this.stub = stub;
+ }
+
+ public final BigQueryReadSettings getSettings() {
+ return settings;
+ }
+
+ @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
+ public EnhancedBigQueryReadStub getStub() {
+ return stub;
+ }
+
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 24 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
+ *
+ * @param parent Required. The request project that owns the session, in the form of
+ * `projects/{project_id}`.
+ * @param readSession Required. Session to be created.
+ * @param maxStreamCount Max initial number of streams. If unset or zero, the server will provide
+ * a value of streams so as to produce reasonable throughput. Must be non-negative. The number
+ * of streams may be lower than the requested number, depending on the amount parallelism that
+ * is reasonable for the table. Error will be returned if the max count is greater than the
+ * current system max limit of 1,000.
+ *
Streams must be read starting from offset 0.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final ReadSession createReadSession(
+ String parent, ReadSession readSession, int maxStreamCount) {
+
+ CreateReadSessionRequest request =
+ CreateReadSessionRequest.newBuilder()
+ .setParent(parent)
+ .setReadSession(readSession)
+ .setMaxStreamCount(maxStreamCount)
+ .build();
+ return createReadSession(request);
+ }
+
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 24 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final ReadSession createReadSession(CreateReadSessionRequest request) {
+ Span createReadSession = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ createReadSession =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.createReadSession")
+ .setAttribute(
+ "bq.storage.read_session.request.parent", getFieldAsString(request.getParent()))
+ .setAttribute(
+ "bq.storage.read_session.request.max_stream_count", request.getMaxStreamCount())
+ .setAttribute(
+ "bq.storage.read_session.request.preferred_min_stream_count",
+ request.getPreferredMinStreamCount())
+ .setAttribute(
+ "bq.storage.read_session.request.serialized_size", request.getSerializedSize())
+ .setAllAttributes(otelAttributesFrom(request.getReadSession()))
+ .startSpan();
+ }
+ try (Scope createReadSessionScope =
+ createReadSession != null ? createReadSession.makeCurrent() : null) {
+ return createReadSessionCallable().call(request);
+ } finally {
+ if (createReadSession != null) {
+ createReadSession.end();
+ }
+ }
+ }
+
+ /**
+ * Creates a new read session. A read session divides the contents of a BigQuery table into one or
+ * more streams, which can then be used to read data from the table. The read session also
+ * specifies properties of the data to be read, such as a list of columns or a push-down filter
+ * describing the rows to be returned.
+ *
+ *
A particular row can be read by at most one stream. When the caller has reached the end of
+ * each stream in the session, then all the data in the table has been read.
+ *
+ *
Data is assigned to each stream such that roughly the same number of rows can be read from
+ * each stream. Because the server-side unit for assigning data is collections of rows, the API
+ * does not guarantee that each stream will return the same number or rows. Additionally, the
+ * limits are enforced based on the number of pre-filtered rows, so some filters can lead to
+ * lopsided assignments.
+ *
+ *
Read sessions automatically expire 24 hours after they are created and do not require manual
+ * clean-up by the caller.
+ *
+ *
+ */
+ public final UnaryCallable createReadSessionCallable() {
+ Span createReadSessionCallable = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ createReadSessionCallable =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.createReadSessionCallable")
+ .startSpan();
+ }
+ try (Scope createReadSessionCallableScope =
+ createReadSessionCallable != null ? createReadSessionCallable.makeCurrent() : null) {
+ return stub.createReadSessionCallable();
+ } finally {
+ if (createReadSessionCallable != null) {
+ createReadSessionCallable.end();
+ }
+ }
+ }
+
+ /**
+ * Reads rows from the stream in the format prescribed by the ReadSession. Each response contains
+ * one or more table rows, up to a maximum of 100 MiB per response; read requests which attempt to
+ * read individual rows larger than 100 MiB will fail.
+ *
+ *
Each request also returns a set of stream statistics reflecting the current state of the
+ * stream.
+ *
+ *
+ */
+ public final ServerStreamingCallable readRowsCallable() {
+ Span readRowsCallable = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ readRowsCallable =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.readRowsCallable")
+ .startSpan();
+ }
+ try (Scope readRowsCallableScope =
+ readRowsCallable != null ? readRowsCallable.makeCurrent() : null) {
+ return stub.readRowsCallable();
+ } finally {
+ if (readRowsCallable != null) {
+ readRowsCallable.end();
+ }
+ }
+ }
+
+ /**
+ * Splits a given `ReadStream` into two `ReadStream` objects. These `ReadStream` objects are
+ * referred to as the primary and the residual streams of the split. The original `ReadStream` can
+ * still be read from in the same manner as before. Both of the returned `ReadStream` objects can
+ * also be read from, and the rows returned by both child streams will be the same as the rows
+ * read from the original stream.
+ *
+ *
Moreover, the two child streams will be allocated back-to-back in the original `ReadStream`.
+ * Concretely, it is guaranteed that for streams original, primary, and residual, that
+ * original[0-j] = primary[0-j] and original[j-n] = residual[0-m] once the streams have been read
+ * to completion.
+ *
+ *
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final SplitReadStreamResponse splitReadStream(SplitReadStreamRequest request) {
+ Span splitReadStream = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ splitReadStream =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.splitReadStream")
+ .setAllAttributes(otelAttributesFrom(request))
+ .startSpan();
+ }
+ try (Scope splitReadStreamScope =
+ splitReadStream != null ? splitReadStream.makeCurrent() : null) {
+ return splitReadStreamCallable().call(request);
+ } finally {
+ if (splitReadStream != null) {
+ splitReadStream.end();
+ }
+ }
+ }
+
+ /**
+ * Splits a given `ReadStream` into two `ReadStream` objects. These `ReadStream` objects are
+ * referred to as the primary and the residual streams of the split. The original `ReadStream` can
+ * still be read from in the same manner as before. Both of the returned `ReadStream` objects can
+ * also be read from, and the rows returned by both child streams will be the same as the rows
+ * read from the original stream.
+ *
+ *
Moreover, the two child streams will be allocated back-to-back in the original `ReadStream`.
+ * Concretely, it is guaranteed that for streams original, primary, and residual, that
+ * original[0-j] = primary[0-j] and original[j-n] = residual[0-m] once the streams have been read
+ * to completion.
+ *
+ *
+ */
+ public final UnaryCallable
+ splitReadStreamCallable() {
+ Span splitReadStreamCallable = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ splitReadStreamCallable =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.splitReadStreamCallable")
+ .startSpan();
+ }
+ try (Scope readRowsCallableScope =
+ splitReadStreamCallable != null ? splitReadStreamCallable.makeCurrent() : null) {
+ return stub.splitReadStreamCallable();
+ } finally {
+ if (splitReadStreamCallable != null) {
+ splitReadStreamCallable.end();
+ }
+ }
+ }
+
+ @Override
+ public final void close() {
+ Span close = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ close =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.close")
+ .startSpan();
+ }
+ try (Scope closeScope = close != null ? close.makeCurrent() : null) {
+ stub.close();
+ } finally {
+ if (close != null) {
+ close.end();
+ }
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ Span shutdown = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ shutdown =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.shutdown")
+ .startSpan();
+ }
+ try (Scope shutdownScope = shutdown != null ? shutdown.makeCurrent() : null) {
+ stub.shutdown();
+ } finally {
+ if (shutdown != null) {
+ shutdown.end();
+ }
+ }
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return stub.isShutdown();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return stub.isTerminated();
+ }
+
+ @Override
+ public void shutdownNow() {
+ Span shutdownNow = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ shutdownNow =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.shutdownNow")
+ .startSpan();
+ }
+ try (Scope shutdownNowScope = shutdownNow != null ? shutdownNow.makeCurrent() : null) {
+ stub.shutdownNow();
+ } finally {
+ if (shutdownNow != null) {
+ shutdownNow.end();
+ }
+ }
+ }
+
+ @Override
+ public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
+ Span awaitTermination = null;
+ if (settings.isOpenTelemetryEnabled()) {
+ awaitTermination =
+ settings
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.storage.v1.read.awaitTermination")
+ .setAttribute("duration", duration)
+ .setAttribute("unit", unit.toString())
+ .startSpan();
+ }
+ try (Scope awaitTerminationScope =
+ awaitTermination != null ? awaitTermination.makeCurrent() : null) {
+ return stub.awaitTermination(duration, unit);
+ } finally {
+ if (awaitTermination != null) {
+ awaitTermination.end();
+ }
+ }
+ }
+
+ public void disableOpenTelemetryTracing() {
+ settings.setEnableOpenTelemetryTracing(false, null);
+ }
+
+ public void enableDefaultOpenTelemetryTracing() {
+ settings.setEnableOpenTelemetryTracing(true, null);
+ }
+
+ public void enableOpenTelemetryTracing(TracerProvider tracerProvider) {
+ settings.setEnableOpenTelemetryTracing(true, tracerProvider);
+ }
+
+ private static String getFieldAsString(Object field) {
+ return field == null ? "null" : field.toString();
+ }
+
+ private Attributes otelAttributesFrom(ReadSession readSession) {
+ return Attributes.builder()
+ .put("bq.storage.read_session.name", getFieldAsString(readSession.getName()))
+ .put(
+ "bq.storage.read_session.data_format_value",
+ getFieldAsString(readSession.getDataFormatValue()))
+ .put(
+ "bq.storage.read_session.serialized_size",
+ getFieldAsString(readSession.getSerializedSize()))
+ .put("bq.storage.read_session.table", getFieldAsString(readSession.getTable()))
+ .put("bq.storage.read_session.estimated_row_count", readSession.getEstimatedRowCount())
+ .put(
+ "bq.storage.read_session.estimated_total_bytes_scanned",
+ readSession.getEstimatedTotalBytesScanned())
+ .put(
+ "bq.storage.read_session.estimated_total_physical_bytes",
+ readSession.getEstimatedTotalPhysicalFileSize())
+ .put("bq.storage.read_session.streams_count", readSession.getStreamsCount())
+ .put("bq.storage.read_session.trace_id", getFieldAsString(readSession.getTraceId()))
+ .put("bq.storage.read_session.expire_time", getFieldAsString(readSession.getExpireTime()))
+ .build();
+ }
+
+ private Attributes otelAttributesFrom(SplitReadStreamRequest request) {
+ return Attributes.builder()
+ .put("bq.storage.split_read_stream_request.name", getFieldAsString(request.getName()))
+ .put(
+ "bq.storage.split_read_stream_request.serialized_size",
+ getFieldAsString(request.getSerializedSize()))
+ .put(
+ "bq.storage.split_read_stream_request.fraction",
+ getFieldAsString(request.getFraction()))
+ .build();
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryReadSettings.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryReadSettings.java
new file mode 100644
index 000000000000..8c595117e7e7
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryReadSettings.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright 2026 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.api.core.ApiFunction;
+import com.google.api.core.BetaApi;
+import com.google.api.gax.core.GoogleCredentialsProvider;
+import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
+import com.google.api.gax.rpc.ApiClientHeaderProvider;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.ServerStreamingCallSettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
+import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.cloud.bigquery.storage.v1.stub.EnhancedBigQueryReadStubSettings;
+import io.grpc.Metadata;
+import io.grpc.Status;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.api.trace.TracerProvider;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Settings class to configure an instance of {@link BigQueryReadClient}.
+ *
+ *
The default instance has everything set to sensible defaults:
+ *
+ *
+ *
The default service address (bigquerystorage.googleapis.com) and default port (443) are
+ * used.
+ *
Credentials are acquired automatically through Application Default Credentials.
+ *
Retries are configured for idempotent methods but not for non-idempotent methods.
+ *
+ *
+ *
The builder of this class is recursive, so contained classes are themselves builders. When
+ * build() is called, the tree of builders is called to create the complete settings object.
+ *
+ *
For example, to set the total timeout of createReadSession to 30 seconds:
+ *
+ *
+ */
+@BetaApi
+public class BigQueryReadSettings extends ClientSettings {
+ /** Returns the object with the settings used for calls to createReadSession. */
+ public UnaryCallSettings createReadSessionSettings() {
+ return getTypedStubSettings().createReadSessionSettings();
+ }
+
+ /** Returns the object with the settings used for calls to readRows. */
+ public ServerStreamingCallSettings readRowsSettings() {
+ return getTypedStubSettings().readRowsSettings();
+ }
+
+ public static interface RetryAttemptListener {
+ public void onRetryAttempt(Status prevStatus, Metadata prevMetadata);
+ }
+
+ private RetryAttemptListener readRowsRetryAttemptListener = null;
+ private boolean enableOpenTelemetryTracing = false;
+ private Tracer openTelemetryTracer = null;
+ private TracerProvider openTelemetryTracerProvider = null;
+
+ /**
+ * If a non null readRowsRetryAttemptListener is provided, client will call onRetryAttempt
+ * function before a failed ReadRows request is retried. This can be used as negative feedback
+ * mechanism for future decision to split read streams because some retried failures are due to
+ * resource exhaustion that increased parallelism only makes it worse.
+ */
+ public void setReadRowsRetryAttemptListener(RetryAttemptListener readRowsRetryAttemptListener) {
+ this.readRowsRetryAttemptListener = readRowsRetryAttemptListener;
+ }
+
+ public void setEnableOpenTelemetryTracing(
+ boolean enableOpenTelemetryTracing, TracerProvider openTelemetryTracerProvider) {
+ this.enableOpenTelemetryTracing = enableOpenTelemetryTracing;
+ if (enableOpenTelemetryTracing) {
+ if (openTelemetryTracerProvider == null) {
+ this.openTelemetryTracer =
+ Singletons.getOpenTelemetry()
+ .getTracerProvider()
+ .tracerBuilder("com.google.cloud.bigquery.storage.v1.read")
+ .build();
+ } else {
+ this.openTelemetryTracerProvider = openTelemetryTracerProvider;
+ this.openTelemetryTracer =
+ openTelemetryTracerProvider
+ .tracerBuilder("com.google.cloud.bigquery.storage.v1.read")
+ .build();
+ }
+ }
+ }
+
+ public RetryAttemptListener getReadRowsRetryAttemptListener() {
+ return readRowsRetryAttemptListener;
+ }
+
+ public boolean isOpenTelemetryEnabled() {
+ return this.enableOpenTelemetryTracing;
+ }
+
+ public Tracer getOpenTelemetryTracer() {
+ return this.openTelemetryTracer;
+ }
+
+ public TracerProvider getOpenTelemetryTracerProvider() {
+ return this.openTelemetryTracerProvider;
+ }
+
+ /** Returns the object with the settings used for calls to splitReadStream. */
+ public UnaryCallSettings
+ splitReadStreamSettings() {
+ return getTypedStubSettings().splitReadStreamSettings();
+ }
+
+ EnhancedBigQueryReadStubSettings getTypedStubSettings() {
+ return (EnhancedBigQueryReadStubSettings) getStubSettings();
+ }
+
+ public static final BigQueryReadSettings create(EnhancedBigQueryReadStubSettings stub)
+ throws IOException {
+ return new BigQueryReadSettings.Builder(stub.toBuilder()).build();
+ }
+
+ /** Returns a builder for the default ExecutorProvider for this service. */
+ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
+ return EnhancedBigQueryReadStubSettings.defaultExecutorProviderBuilder();
+ }
+
+ /** Returns the default service endpoint. */
+ public static String getDefaultEndpoint() {
+ return EnhancedBigQueryReadStubSettings.getDefaultEndpoint();
+ }
+
+ /** Returns the default service scopes. */
+ public static List getDefaultServiceScopes() {
+ return EnhancedBigQueryReadStubSettings.getDefaultServiceScopes();
+ }
+
+ /** Returns a builder for the default credentials for this service. */
+ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
+ return EnhancedBigQueryReadStubSettings.defaultCredentialsProviderBuilder();
+ }
+
+ /** Returns a builder for the default ChannelProvider for this service. */
+ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
+ return EnhancedBigQueryReadStubSettings.defaultGrpcTransportProviderBuilder();
+ }
+
+ public static TransportChannelProvider defaultTransportChannelProvider() {
+ return EnhancedBigQueryReadStubSettings.defaultTransportChannelProvider();
+ }
+
+ @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
+ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
+ return EnhancedBigQueryReadStubSettings.defaultApiClientHeaderProviderBuilder();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder() {
+ return Builder.createDefault();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder(ClientContext clientContext) {
+ return new Builder(clientContext);
+ }
+
+ /** Returns a builder containing all the values of this settings class. */
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ protected BigQueryReadSettings(Builder settingsBuilder) throws IOException {
+ super(settingsBuilder);
+ }
+
+ /** Builder for BigQueryReadSettings. */
+ public static class Builder extends ClientSettings.Builder {
+ protected Builder() throws IOException {
+ this((ClientContext) null);
+ }
+
+ protected Builder(ClientContext clientContext) {
+ super(EnhancedBigQueryReadStubSettings.newBuilder(clientContext));
+ }
+
+ private static Builder createDefault() {
+ return new Builder(EnhancedBigQueryReadStubSettings.newBuilder());
+ }
+
+ protected Builder(BigQueryReadSettings settings) {
+ super(settings.getStubSettings().toBuilder());
+ }
+
+ protected Builder(EnhancedBigQueryReadStubSettings.Builder stubSettings) {
+ super(stubSettings);
+ }
+
+ public EnhancedBigQueryReadStubSettings.Builder getStubSettingsBuilder() {
+ return ((EnhancedBigQueryReadStubSettings.Builder) getStubSettings());
+ }
+
+ // NEXT_MAJOR_VER: remove 'throws Exception'
+ /**
+ * Applies the given settings updater function to all of the unary API methods in this service.
+ *
+ *
Note: This method does not support applying settings to streaming methods.
+ */
+ public Builder applyToAllUnaryMethods(
+ ApiFunction, Void> settingsUpdater) throws Exception {
+ super.applyToAllUnaryMethods(
+ getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater);
+ return this;
+ }
+
+ private RetryAttemptListener readRowsRetryAttemptListener = null;
+ private boolean enableOpenTelemetryTracing = false;
+ private TracerProvider openTelemetryTracerProvider = null;
+
+ public Builder setReadRowsRetryAttemptListener(
+ RetryAttemptListener readRowsRetryAttemptListener) {
+ this.readRowsRetryAttemptListener = readRowsRetryAttemptListener;
+ return this;
+ }
+
+ public Builder setEnableOpenTelemetryTracing(boolean enableOpenTelemetryTracing) {
+ this.enableOpenTelemetryTracing = enableOpenTelemetryTracing;
+ return this;
+ }
+
+ public Builder setOpenTelemetryTracerProvider(TracerProvider tracerProvider) {
+ this.openTelemetryTracerProvider = tracerProvider;
+ return this;
+ }
+
+ /** Returns the builder for the settings used for calls to createReadSession. */
+ public UnaryCallSettings.Builder
+ createReadSessionSettings() {
+ return getStubSettingsBuilder().createReadSessionSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to readRows. */
+ public ServerStreamingCallSettings.Builder
+ readRowsSettings() {
+ return getStubSettingsBuilder().readRowsSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to splitReadStream. */
+ public UnaryCallSettings.Builder
+ splitReadStreamSettings() {
+ return getStubSettingsBuilder().splitReadStreamSettings();
+ }
+
+ @Override
+ public BigQueryReadSettings build() throws IOException {
+ BigQueryReadSettings settings = new BigQueryReadSettings(this);
+ settings.setReadRowsRetryAttemptListener(readRowsRetryAttemptListener);
+ settings.setEnableOpenTelemetryTracing(
+ enableOpenTelemetryTracing, openTelemetryTracerProvider);
+ return settings;
+ }
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQuerySchemaUtil.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQuerySchemaUtil.java
new file mode 100644
index 000000000000..e57daa7ffac6
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQuerySchemaUtil.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2026 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.protobuf.DescriptorProtos.FieldOptions;
+import com.google.protobuf.Descriptors.FieldDescriptor;
+import com.google.protobuf.ExtensionLite;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+
+public class BigQuerySchemaUtil {
+
+ private static final String PLACEHOLDER_FILED_NAME_PREFIX = "col_";
+
+ /**
+ * * Checks if the field name is compatible with proto field naming convention.
+ *
+ * @param fieldName name for the field
+ * @return true if the field name is comptaible with proto naming convention, otherwise, returns
+ * false.
+ */
+ public static boolean isProtoCompatible(String fieldName) {
+ int length = fieldName.length();
+ if (length < 1) {
+ return false;
+ }
+ char ch = fieldName.charAt(0);
+ if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_')) {
+ return false;
+ }
+ for (int i = 1; i < length; i++) {
+ ch = fieldName.charAt(i);
+ if (!((ch >= 'a' && ch <= 'z')
+ || (ch >= 'A' && ch <= 'Z')
+ || ch == '_'
+ || (ch >= '0' && ch <= '9'))) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * * Generates a placeholder name that consists of a prefix + base64 encoded field name. We
+ * replace all dashes with underscores as they are not allowed for proto field names.
+ *
+ * @param fieldName name for the field
+ * @return the generated placeholder field name
+ */
+ public static String generatePlaceholderFieldName(String fieldName) {
+ return PLACEHOLDER_FILED_NAME_PREFIX
+ + Base64.getUrlEncoder()
+ .withoutPadding()
+ .encodeToString(fieldName.getBytes(StandardCharsets.UTF_8))
+ .replace('-', '_');
+ }
+
+ /**
+ * * Gets the user-facing field name from the descriptor
+ *
+ * @param fieldDescriptor
+ * @return columnName annotation if present, otherwise return the field name.
+ */
+ public static String getFieldName(FieldDescriptor fieldDescriptor) {
+ return fieldDescriptor
+ .getOptions()
+ .hasExtension((ExtensionLite) AnnotationsProto.columnName)
+ ? fieldDescriptor
+ .getOptions()
+ .getExtension((ExtensionLite) AnnotationsProto.columnName)
+ : fieldDescriptor.getName();
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryWriteClient.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryWriteClient.java
new file mode 100644
index 000000000000..916f7ef30c05
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryWriteClient.java
@@ -0,0 +1,1014 @@
+/*
+ * Copyright 2026 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.api.gax.core.BackgroundResource;
+import com.google.api.gax.rpc.BidiStreamingCallable;
+import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.bigquery.storage.v1.stub.BigQueryWriteStub;
+import com.google.cloud.bigquery.storage.v1.stub.BigQueryWriteStubSettings;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Generated;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * Service Description: BigQuery Write API.
+ *
+ *
The Write API can be used to write data to BigQuery.
+ *
+ *
For supplementary information about the Write API, see:
+ * https://cloud.google.com/bigquery/docs/write-api
+ *
+ *
This class provides the ability to make remote calls to the backing service through method
+ * calls that map to API methods. Sample code to get started:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * TableName parent = TableName.of("[PROJECT]", "[DATASET]", "[TABLE]");
+ * WriteStream writeStream = WriteStream.newBuilder().build();
+ * WriteStream response = bigQueryWriteClient.createWriteStream(parent, writeStream);
+ * }
+ * }
+ *
+ *
Note: close() needs to be called on the BigQueryWriteClient object to clean up resources such
+ * as threads. In the example above, try-with-resources is used, which automatically calls close().
+ *
+ *
+ *
Methods
+ *
+ *
Method
+ *
Description
+ *
Method Variants
+ *
+ *
+ *
CreateWriteStream
+ *
Creates a write stream to the given table. Additionally, every table has a special stream named '_default' to which data can be written. This stream doesn't need to be created using CreateWriteStream. It is a stream that can be used simultaneously by any number of clients. Data written to this stream is considered committed as soon as an acknowledgement is received.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
createWriteStreamCallable()
+ *
+ *
+ *
+ *
+ *
AppendRows
+ *
Appends data to the given stream.
+ *
If `offset` is specified, the `offset` is checked against the end of stream. The server returns `OUT_OF_RANGE` in `AppendRowsResponse` if an attempt is made to append to an offset beyond the current end of the stream or `ALREADY_EXISTS` if user provides an `offset` that has already been written to. User can retry with adjusted offset within the same RPC connection. If `offset` is not specified, append happens at the end of the stream.
+ *
The response contains an optional offset at which the append happened. No offset information will be returned for appends to a default stream.
+ *
Responses are received in the same order in which requests are sent. There will be one response for each successful inserted request. Responses may optionally embed error information if the originating AppendRequest was not successfully processed.
+ *
The specifics of when successfully appended data is made visible to the table are governed by the type of stream:
+ *
+ *
For COMMITTED streams (which includes the default stream), data is visible immediately upon successful append.
+ *
+ *
+ *
For BUFFERED streams, data is made visible via a subsequent `FlushRows` rpc which advances a cursor to a newer offset in the stream.
+ *
+ *
+ *
For PENDING streams, data is not made visible until the stream itself is finalized (via the `FinalizeWriteStream` rpc), and the stream is explicitly committed via the `BatchCommitWriteStreams` rpc.
+ *
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
appendRowsCallable()
+ *
+ *
+ *
+ *
+ *
GetWriteStream
+ *
Gets information about a write stream.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
+ *
+ *
getWriteStream(GetWriteStreamRequest request)
+ *
+ *
"Flattened" method variants have converted the fields of the request object into function parameters to enable multiple ways to call the same method.
+ *
+ *
getWriteStream(WriteStreamName name)
+ *
getWriteStream(String name)
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
getWriteStreamCallable()
+ *
+ *
+ *
+ *
+ *
FinalizeWriteStream
+ *
Finalize a write stream so that no new data can be appended to the stream. Finalize is not supported on the '_default' stream.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
"Flattened" method variants have converted the fields of the request object into function parameters to enable multiple ways to call the same method.
+ *
+ *
finalizeWriteStream(WriteStreamName name)
+ *
finalizeWriteStream(String name)
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
finalizeWriteStreamCallable()
+ *
+ *
+ *
+ *
+ *
BatchCommitWriteStreams
+ *
Atomically commits a group of `PENDING` streams that belong to the same `parent` table.
+ *
Streams must be finalized before commit and cannot be committed multiple times. Once a stream is committed, data in the stream becomes available for read operations.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
"Flattened" method variants have converted the fields of the request object into function parameters to enable multiple ways to call the same method.
+ *
+ *
batchCommitWriteStreams(TableName parent)
+ *
batchCommitWriteStreams(String parent)
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
batchCommitWriteStreamsCallable()
+ *
+ *
+ *
+ *
+ *
FlushRows
+ *
Flushes rows to a BUFFERED stream.
+ *
If users are appending rows to BUFFERED stream, flush operation is required in order for the rows to become available for reading. A Flush operation flushes up to any previously flushed offset in a BUFFERED stream, to the offset specified in the request.
+ *
Flush is not supported on the _default stream, since it is not BUFFERED.
+ *
+ *
Request object method variants only take one parameter, a request object, which must be constructed before the call.
+ *
+ *
flushRows(FlushRowsRequest request)
+ *
+ *
"Flattened" method variants have converted the fields of the request object into function parameters to enable multiple ways to call the same method.
+ *
+ *
flushRows(WriteStreamName writeStream)
+ *
flushRows(String writeStream)
+ *
+ *
Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
+ *
+ *
flushRowsCallable()
+ *
+ *
+ *
+ *
+ *
+ *
See the individual methods for example code.
+ *
+ *
Many parameters require resource names to be formatted in a particular way. To assist with
+ * these names, this class includes a format method for each type of name, and additionally a parse
+ * method to extract the individual identifiers contained within names that are returned.
+ *
+ *
This class can be customized by passing in a custom instance of BigQueryWriteSettings to
+ * create(). For example:
+ *
+ *
To customize credentials:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * BigQueryWriteSettings bigQueryWriteSettings =
+ * BigQueryWriteSettings.newBuilder()
+ * .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ * .build();
+ * BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create(bigQueryWriteSettings);
+ * }
+ *
+ *
To customize the endpoint:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * BigQueryWriteSettings bigQueryWriteSettings =
+ * BigQueryWriteSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create(bigQueryWriteSettings);
+ * }
+ *
+ *
Please refer to the GitHub repository's samples for more quickstart code snippets.
+ */
+@Generated("by gapic-generator-java")
+public class BigQueryWriteClient implements BackgroundResource {
+ private final BigQueryWriteSettings settings;
+ private final BigQueryWriteStub stub;
+
+ /** Constructs an instance of BigQueryWriteClient with default settings. */
+ public static final BigQueryWriteClient create() throws IOException {
+ return create(BigQueryWriteSettings.newBuilder().build());
+ }
+
+ /**
+ * Constructs an instance of BigQueryWriteClient, using the given settings. The channels are
+ * created based on the settings passed in, or defaults for any settings that are not set.
+ */
+ public static final BigQueryWriteClient create(BigQueryWriteSettings settings)
+ throws IOException {
+ return new BigQueryWriteClient(settings);
+ }
+
+ /**
+ * Constructs an instance of BigQueryWriteClient, using the given stub for making calls. This is
+ * for advanced usage - prefer using create(BigQueryWriteSettings).
+ */
+ public static final BigQueryWriteClient create(BigQueryWriteStub stub) {
+ return new BigQueryWriteClient(stub);
+ }
+
+ /**
+ * Constructs an instance of BigQueryWriteClient, using the given settings. This is protected so
+ * that it is easy to make a subclass, but otherwise, the static factory methods should be
+ * preferred.
+ */
+ protected BigQueryWriteClient(BigQueryWriteSettings settings) throws IOException {
+ this.settings = settings;
+ this.stub = ((BigQueryWriteStubSettings) settings.getStubSettings()).createStub();
+ }
+
+ protected BigQueryWriteClient(BigQueryWriteStub stub) {
+ this.settings = null;
+ this.stub = stub;
+ }
+
+ public final BigQueryWriteSettings getSettings() {
+ return settings;
+ }
+
+ public BigQueryWriteStub getStub() {
+ return stub;
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a write stream to the given table. Additionally, every table has a special stream named
+ * '_default' to which data can be written. This stream doesn't need to be created using
+ * CreateWriteStream. It is a stream that can be used simultaneously by any number of clients.
+ * Data written to this stream is considered committed as soon as an acknowledgement is received.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * TableName parent = TableName.of("[PROJECT]", "[DATASET]", "[TABLE]");
+ * WriteStream writeStream = WriteStream.newBuilder().build();
+ * WriteStream response = bigQueryWriteClient.createWriteStream(parent, writeStream);
+ * }
+ * }
+ *
+ * @param parent Required. Reference to the table to which the stream belongs, in the format of
+ * `projects/{project}/datasets/{dataset}/tables/{table}`.
+ * @param writeStream Required. Stream to be created.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final WriteStream createWriteStream(TableName parent, WriteStream writeStream) {
+ CreateWriteStreamRequest request =
+ CreateWriteStreamRequest.newBuilder()
+ .setParent(parent == null ? null : parent.toString())
+ .setWriteStream(writeStream)
+ .build();
+ return createWriteStream(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a write stream to the given table. Additionally, every table has a special stream named
+ * '_default' to which data can be written. This stream doesn't need to be created using
+ * CreateWriteStream. It is a stream that can be used simultaneously by any number of clients.
+ * Data written to this stream is considered committed as soon as an acknowledgement is received.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * String parent = TableName.of("[PROJECT]", "[DATASET]", "[TABLE]").toString();
+ * WriteStream writeStream = WriteStream.newBuilder().build();
+ * WriteStream response = bigQueryWriteClient.createWriteStream(parent, writeStream);
+ * }
+ * }
+ *
+ * @param parent Required. Reference to the table to which the stream belongs, in the format of
+ * `projects/{project}/datasets/{dataset}/tables/{table}`.
+ * @param writeStream Required. Stream to be created.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final WriteStream createWriteStream(String parent, WriteStream writeStream) {
+ CreateWriteStreamRequest request =
+ CreateWriteStreamRequest.newBuilder().setParent(parent).setWriteStream(writeStream).build();
+ return createWriteStream(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a write stream to the given table. Additionally, every table has a special stream named
+ * '_default' to which data can be written. This stream doesn't need to be created using
+ * CreateWriteStream. It is a stream that can be used simultaneously by any number of clients.
+ * Data written to this stream is considered committed as soon as an acknowledgement is received.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * CreateWriteStreamRequest request =
+ * CreateWriteStreamRequest.newBuilder()
+ * .setParent(TableName.of("[PROJECT]", "[DATASET]", "[TABLE]").toString())
+ * .setWriteStream(WriteStream.newBuilder().build())
+ * .build();
+ * WriteStream response = bigQueryWriteClient.createWriteStream(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final WriteStream createWriteStream(CreateWriteStreamRequest request) {
+ return createWriteStreamCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Creates a write stream to the given table. Additionally, every table has a special stream named
+ * '_default' to which data can be written. This stream doesn't need to be created using
+ * CreateWriteStream. It is a stream that can be used simultaneously by any number of clients.
+ * Data written to this stream is considered committed as soon as an acknowledgement is received.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * CreateWriteStreamRequest request =
+ * CreateWriteStreamRequest.newBuilder()
+ * .setParent(TableName.of("[PROJECT]", "[DATASET]", "[TABLE]").toString())
+ * .setWriteStream(WriteStream.newBuilder().build())
+ * .build();
+ * ApiFuture future =
+ * bigQueryWriteClient.createWriteStreamCallable().futureCall(request);
+ * // Do something.
+ * WriteStream response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable createWriteStreamCallable() {
+ return stub.createWriteStreamCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Appends data to the given stream.
+ *
+ *
If `offset` is specified, the `offset` is checked against the end of stream. The server
+ * returns `OUT_OF_RANGE` in `AppendRowsResponse` if an attempt is made to append to an offset
+ * beyond the current end of the stream or `ALREADY_EXISTS` if user provides an `offset` that has
+ * already been written to. User can retry with adjusted offset within the same RPC connection. If
+ * `offset` is not specified, append happens at the end of the stream.
+ *
+ *
The response contains an optional offset at which the append happened. No offset information
+ * will be returned for appends to a default stream.
+ *
+ *
Responses are received in the same order in which requests are sent. There will be one
+ * response for each successful inserted request. Responses may optionally embed error information
+ * if the originating AppendRequest was not successfully processed.
+ *
+ *
The specifics of when successfully appended data is made visible to the table are governed
+ * by the type of stream:
+ *
+ *
+ *
For COMMITTED streams (which includes the default stream), data is visible immediately
+ * upon successful append.
+ *
+ *
+ *
+ *
For BUFFERED streams, data is made visible via a subsequent `FlushRows` rpc which
+ * advances a cursor to a newer offset in the stream.
+ *
+ *
+ *
+ *
For PENDING streams, data is not made visible until the stream itself is finalized (via
+ * the `FinalizeWriteStream` rpc), and the stream is explicitly committed via the
+ * `BatchCommitWriteStreams` rpc.
+ *
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * BidiStream bidiStream =
+ * bigQueryWriteClient.appendRowsCallable().call();
+ * AppendRowsRequest request =
+ * AppendRowsRequest.newBuilder()
+ * .setWriteStream(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .setOffset(Int64Value.newBuilder().build())
+ * .setTraceId("traceId-1067401920")
+ * .putAllMissingValueInterpretations(
+ * new HashMap())
+ * .build();
+ * bidiStream.send(request);
+ * for (AppendRowsResponse response : bidiStream) {
+ * // Do something when a response is received.
+ * }
+ * }
+ * }
+ */
+ public final BidiStreamingCallable appendRowsCallable() {
+ return stub.appendRowsCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Gets information about a write stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * WriteStreamName name = WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]");
+ * WriteStream response = bigQueryWriteClient.getWriteStream(name);
+ * }
+ * }
+ *
+ * @param name Required. Name of the stream to get, in the form of
+ * `projects/{project}/datasets/{dataset}/tables/{table}/streams/{stream}`.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final WriteStream getWriteStream(WriteStreamName name) {
+ GetWriteStreamRequest request =
+ GetWriteStreamRequest.newBuilder().setName(name == null ? null : name.toString()).build();
+ return getWriteStream(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Gets information about a write stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * String name = WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString();
+ * WriteStream response = bigQueryWriteClient.getWriteStream(name);
+ * }
+ * }
+ *
+ * @param name Required. Name of the stream to get, in the form of
+ * `projects/{project}/datasets/{dataset}/tables/{table}/streams/{stream}`.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final WriteStream getWriteStream(String name) {
+ GetWriteStreamRequest request = GetWriteStreamRequest.newBuilder().setName(name).build();
+ return getWriteStream(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Gets information about a write stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * GetWriteStreamRequest request =
+ * GetWriteStreamRequest.newBuilder()
+ * .setName(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .setView(WriteStreamView.forNumber(0))
+ * .build();
+ * WriteStream response = bigQueryWriteClient.getWriteStream(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final WriteStream getWriteStream(GetWriteStreamRequest request) {
+ return getWriteStreamCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Gets information about a write stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * GetWriteStreamRequest request =
+ * GetWriteStreamRequest.newBuilder()
+ * .setName(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .setView(WriteStreamView.forNumber(0))
+ * .build();
+ * ApiFuture future =
+ * bigQueryWriteClient.getWriteStreamCallable().futureCall(request);
+ * // Do something.
+ * WriteStream response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable getWriteStreamCallable() {
+ return stub.getWriteStreamCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Finalize a write stream so that no new data can be appended to the stream. Finalize is not
+ * supported on the '_default' stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * WriteStreamName name = WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]");
+ * FinalizeWriteStreamResponse response = bigQueryWriteClient.finalizeWriteStream(name);
+ * }
+ * }
+ *
+ * @param name Required. Name of the stream to finalize, in the form of
+ * `projects/{project}/datasets/{dataset}/tables/{table}/streams/{stream}`.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final FinalizeWriteStreamResponse finalizeWriteStream(WriteStreamName name) {
+ FinalizeWriteStreamRequest request =
+ FinalizeWriteStreamRequest.newBuilder()
+ .setName(name == null ? null : name.toString())
+ .build();
+ return finalizeWriteStream(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Finalize a write stream so that no new data can be appended to the stream. Finalize is not
+ * supported on the '_default' stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * String name = WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString();
+ * FinalizeWriteStreamResponse response = bigQueryWriteClient.finalizeWriteStream(name);
+ * }
+ * }
+ *
+ * @param name Required. Name of the stream to finalize, in the form of
+ * `projects/{project}/datasets/{dataset}/tables/{table}/streams/{stream}`.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final FinalizeWriteStreamResponse finalizeWriteStream(String name) {
+ FinalizeWriteStreamRequest request =
+ FinalizeWriteStreamRequest.newBuilder().setName(name).build();
+ return finalizeWriteStream(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Finalize a write stream so that no new data can be appended to the stream. Finalize is not
+ * supported on the '_default' stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * FinalizeWriteStreamRequest request =
+ * FinalizeWriteStreamRequest.newBuilder()
+ * .setName(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .build();
+ * FinalizeWriteStreamResponse response = bigQueryWriteClient.finalizeWriteStream(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final FinalizeWriteStreamResponse finalizeWriteStream(FinalizeWriteStreamRequest request) {
+ return finalizeWriteStreamCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Finalize a write stream so that no new data can be appended to the stream. Finalize is not
+ * supported on the '_default' stream.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * FinalizeWriteStreamRequest request =
+ * FinalizeWriteStreamRequest.newBuilder()
+ * .setName(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .build();
+ * ApiFuture future =
+ * bigQueryWriteClient.finalizeWriteStreamCallable().futureCall(request);
+ * // Do something.
+ * FinalizeWriteStreamResponse response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable
+ finalizeWriteStreamCallable() {
+ return stub.finalizeWriteStreamCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Atomically commits a group of `PENDING` streams that belong to the same `parent` table.
+ *
+ *
Streams must be finalized before commit and cannot be committed multiple times. Once a
+ * stream is committed, data in the stream becomes available for read operations.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * TableName parent = TableName.of("[PROJECT]", "[DATASET]", "[TABLE]");
+ * BatchCommitWriteStreamsResponse response =
+ * bigQueryWriteClient.batchCommitWriteStreams(parent);
+ * }
+ * }
+ *
+ * @param parent Required. Parent table that all the streams should belong to, in the form of
+ * `projects/{project}/datasets/{dataset}/tables/{table}`.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final BatchCommitWriteStreamsResponse batchCommitWriteStreams(TableName parent) {
+ BatchCommitWriteStreamsRequest request =
+ BatchCommitWriteStreamsRequest.newBuilder()
+ .setParent(parent == null ? null : parent.toString())
+ .build();
+ return batchCommitWriteStreams(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Atomically commits a group of `PENDING` streams that belong to the same `parent` table.
+ *
+ *
Streams must be finalized before commit and cannot be committed multiple times. Once a
+ * stream is committed, data in the stream becomes available for read operations.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * String parent = TableName.of("[PROJECT]", "[DATASET]", "[TABLE]").toString();
+ * BatchCommitWriteStreamsResponse response =
+ * bigQueryWriteClient.batchCommitWriteStreams(parent);
+ * }
+ * }
+ *
+ * @param parent Required. Parent table that all the streams should belong to, in the form of
+ * `projects/{project}/datasets/{dataset}/tables/{table}`.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final BatchCommitWriteStreamsResponse batchCommitWriteStreams(String parent) {
+ BatchCommitWriteStreamsRequest request =
+ BatchCommitWriteStreamsRequest.newBuilder().setParent(parent).build();
+ return batchCommitWriteStreams(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Atomically commits a group of `PENDING` streams that belong to the same `parent` table.
+ *
+ *
Streams must be finalized before commit and cannot be committed multiple times. Once a
+ * stream is committed, data in the stream becomes available for read operations.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * BatchCommitWriteStreamsRequest request =
+ * BatchCommitWriteStreamsRequest.newBuilder()
+ * .setParent(TableName.of("[PROJECT]", "[DATASET]", "[TABLE]").toString())
+ * .addAllWriteStreams(new ArrayList())
+ * .build();
+ * BatchCommitWriteStreamsResponse response =
+ * bigQueryWriteClient.batchCommitWriteStreams(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final BatchCommitWriteStreamsResponse batchCommitWriteStreams(
+ BatchCommitWriteStreamsRequest request) {
+ return batchCommitWriteStreamsCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Atomically commits a group of `PENDING` streams that belong to the same `parent` table.
+ *
+ *
Streams must be finalized before commit and cannot be committed multiple times. Once a
+ * stream is committed, data in the stream becomes available for read operations.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * BatchCommitWriteStreamsRequest request =
+ * BatchCommitWriteStreamsRequest.newBuilder()
+ * .setParent(TableName.of("[PROJECT]", "[DATASET]", "[TABLE]").toString())
+ * .addAllWriteStreams(new ArrayList())
+ * .build();
+ * ApiFuture future =
+ * bigQueryWriteClient.batchCommitWriteStreamsCallable().futureCall(request);
+ * // Do something.
+ * BatchCommitWriteStreamsResponse response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable
+ batchCommitWriteStreamsCallable() {
+ return stub.batchCommitWriteStreamsCallable();
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Flushes rows to a BUFFERED stream.
+ *
+ *
If users are appending rows to BUFFERED stream, flush operation is required in order for the
+ * rows to become available for reading. A Flush operation flushes up to any previously flushed
+ * offset in a BUFFERED stream, to the offset specified in the request.
+ *
+ *
Flush is not supported on the _default stream, since it is not BUFFERED.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * WriteStreamName writeStream =
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]");
+ * FlushRowsResponse response = bigQueryWriteClient.flushRows(writeStream);
+ * }
+ * }
+ *
+ * @param writeStream Required. The stream that is the target of the flush operation.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final FlushRowsResponse flushRows(WriteStreamName writeStream) {
+ FlushRowsRequest request =
+ FlushRowsRequest.newBuilder()
+ .setWriteStream(writeStream == null ? null : writeStream.toString())
+ .build();
+ return flushRows(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Flushes rows to a BUFFERED stream.
+ *
+ *
If users are appending rows to BUFFERED stream, flush operation is required in order for the
+ * rows to become available for reading. A Flush operation flushes up to any previously flushed
+ * offset in a BUFFERED stream, to the offset specified in the request.
+ *
+ *
Flush is not supported on the _default stream, since it is not BUFFERED.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * String writeStream =
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString();
+ * FlushRowsResponse response = bigQueryWriteClient.flushRows(writeStream);
+ * }
+ * }
+ *
+ * @param writeStream Required. The stream that is the target of the flush operation.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final FlushRowsResponse flushRows(String writeStream) {
+ FlushRowsRequest request = FlushRowsRequest.newBuilder().setWriteStream(writeStream).build();
+ return flushRows(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Flushes rows to a BUFFERED stream.
+ *
+ *
If users are appending rows to BUFFERED stream, flush operation is required in order for the
+ * rows to become available for reading. A Flush operation flushes up to any previously flushed
+ * offset in a BUFFERED stream, to the offset specified in the request.
+ *
+ *
Flush is not supported on the _default stream, since it is not BUFFERED.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * FlushRowsRequest request =
+ * FlushRowsRequest.newBuilder()
+ * .setWriteStream(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .setOffset(Int64Value.newBuilder().build())
+ * .build();
+ * FlushRowsResponse response = bigQueryWriteClient.flushRows(request);
+ * }
+ * }
+ *
+ * @param request The request object containing all of the parameters for the API call.
+ * @throws com.google.api.gax.rpc.ApiException if the remote call fails
+ */
+ public final FlushRowsResponse flushRows(FlushRowsRequest request) {
+ return flushRowsCallable().call(request);
+ }
+
+ // AUTO-GENERATED DOCUMENTATION AND METHOD.
+ /**
+ * Flushes rows to a BUFFERED stream.
+ *
+ *
If users are appending rows to BUFFERED stream, flush operation is required in order for the
+ * rows to become available for reading. A Flush operation flushes up to any previously flushed
+ * offset in a BUFFERED stream, to the offset specified in the request.
+ *
+ *
Flush is not supported on the _default stream, since it is not BUFFERED.
+ *
+ *
Sample code:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create()) {
+ * FlushRowsRequest request =
+ * FlushRowsRequest.newBuilder()
+ * .setWriteStream(
+ * WriteStreamName.of("[PROJECT]", "[DATASET]", "[TABLE]", "[STREAM]").toString())
+ * .setOffset(Int64Value.newBuilder().build())
+ * .build();
+ * ApiFuture future =
+ * bigQueryWriteClient.flushRowsCallable().futureCall(request);
+ * // Do something.
+ * FlushRowsResponse response = future.get();
+ * }
+ * }
+ */
+ public final UnaryCallable flushRowsCallable() {
+ return stub.flushRowsCallable();
+ }
+
+ @Override
+ public final void close() {
+ stub.close();
+ }
+
+ @Override
+ public void shutdown() {
+ stub.shutdown();
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return stub.isShutdown();
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return stub.isTerminated();
+ }
+
+ @Override
+ public void shutdownNow() {
+ stub.shutdownNow();
+ }
+
+ @Override
+ public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
+ return stub.awaitTermination(duration, unit);
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryWriteSettings.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryWriteSettings.java
new file mode 100644
index 000000000000..2f7b439c1a73
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/BigQueryWriteSettings.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2026 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.api.core.ApiFunction;
+import com.google.api.gax.core.GoogleCredentialsProvider;
+import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
+import com.google.api.gax.rpc.ApiClientHeaderProvider;
+import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.StreamingCallSettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
+import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.cloud.bigquery.storage.v1.stub.BigQueryWriteStubSettings;
+import java.io.IOException;
+import java.util.List;
+import javax.annotation.Generated;
+
+// AUTO-GENERATED DOCUMENTATION AND CLASS.
+/**
+ * Settings class to configure an instance of {@link BigQueryWriteClient}.
+ *
+ *
The default instance has everything set to sensible defaults:
+ *
+ *
+ *
The default service address (bigquerystorage.googleapis.com) and default port (443) are
+ * used.
+ *
Credentials are acquired automatically through Application Default Credentials.
+ *
Retries are configured for idempotent methods but not for non-idempotent methods.
+ *
+ *
+ *
The builder of this class is recursive, so contained classes are themselves builders. When
+ * build() is called, the tree of builders is called to create the complete settings object.
+ *
+ *
For example, to set the
+ * [RetrySettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetrySettings)
+ * of createWriteStream:
+ *
+ *
{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * BigQueryWriteSettings.Builder bigQueryWriteSettingsBuilder = BigQueryWriteSettings.newBuilder();
+ * bigQueryWriteSettingsBuilder
+ * .createWriteStreamSettings()
+ * .setRetrySettings(
+ * bigQueryWriteSettingsBuilder
+ * .createWriteStreamSettings()
+ * .getRetrySettings()
+ * .toBuilder()
+ * .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ * .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ * .setMaxAttempts(5)
+ * .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ * .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ * .setRetryDelayMultiplier(1.3)
+ * .setRpcTimeoutMultiplier(1.5)
+ * .setTotalTimeoutDuration(Duration.ofSeconds(300))
+ * .build());
+ * BigQueryWriteSettings bigQueryWriteSettings = bigQueryWriteSettingsBuilder.build();
+ * }
+ *
+ * Please refer to the [Client Side Retry
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
+ */
+@Generated("by gapic-generator-java")
+public class BigQueryWriteSettings extends ClientSettings {
+
+ /** Returns the object with the settings used for calls to createWriteStream. */
+ public UnaryCallSettings createWriteStreamSettings() {
+ return ((BigQueryWriteStubSettings) getStubSettings()).createWriteStreamSettings();
+ }
+
+ /** Returns the object with the settings used for calls to appendRows. */
+ public StreamingCallSettings appendRowsSettings() {
+ return ((BigQueryWriteStubSettings) getStubSettings()).appendRowsSettings();
+ }
+
+ /** Returns the object with the settings used for calls to getWriteStream. */
+ public UnaryCallSettings getWriteStreamSettings() {
+ return ((BigQueryWriteStubSettings) getStubSettings()).getWriteStreamSettings();
+ }
+
+ /** Returns the object with the settings used for calls to finalizeWriteStream. */
+ public UnaryCallSettings
+ finalizeWriteStreamSettings() {
+ return ((BigQueryWriteStubSettings) getStubSettings()).finalizeWriteStreamSettings();
+ }
+
+ /** Returns the object with the settings used for calls to batchCommitWriteStreams. */
+ public UnaryCallSettings
+ batchCommitWriteStreamsSettings() {
+ return ((BigQueryWriteStubSettings) getStubSettings()).batchCommitWriteStreamsSettings();
+ }
+
+ /** Returns the object with the settings used for calls to flushRows. */
+ public UnaryCallSettings flushRowsSettings() {
+ return ((BigQueryWriteStubSettings) getStubSettings()).flushRowsSettings();
+ }
+
+ public static final BigQueryWriteSettings create(BigQueryWriteStubSettings stub)
+ throws IOException {
+ return new BigQueryWriteSettings.Builder(stub.toBuilder()).build();
+ }
+
+ /** Returns a builder for the default ExecutorProvider for this service. */
+ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
+ return BigQueryWriteStubSettings.defaultExecutorProviderBuilder();
+ }
+
+ /** Returns the default service endpoint. */
+ public static String getDefaultEndpoint() {
+ return BigQueryWriteStubSettings.getDefaultEndpoint();
+ }
+
+ /** Returns the default service scopes. */
+ public static List getDefaultServiceScopes() {
+ return BigQueryWriteStubSettings.getDefaultServiceScopes();
+ }
+
+ /** Returns a builder for the default credentials for this service. */
+ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
+ return BigQueryWriteStubSettings.defaultCredentialsProviderBuilder();
+ }
+
+ /** Returns a builder for the default ChannelProvider for this service. */
+ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
+ return BigQueryWriteStubSettings.defaultGrpcTransportProviderBuilder();
+ }
+
+ public static TransportChannelProvider defaultTransportChannelProvider() {
+ return BigQueryWriteStubSettings.defaultTransportChannelProvider();
+ }
+
+ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
+ return BigQueryWriteStubSettings.defaultApiClientHeaderProviderBuilder();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder() {
+ return Builder.createDefault();
+ }
+
+ /** Returns a new builder for this class. */
+ public static Builder newBuilder(ClientContext clientContext) {
+ return new Builder(clientContext);
+ }
+
+ /** Returns a builder containing all the values of this settings class. */
+ public Builder toBuilder() {
+ return new Builder(this);
+ }
+
+ protected BigQueryWriteSettings(Builder settingsBuilder) throws IOException {
+ super(settingsBuilder);
+ }
+
+ /** Builder for BigQueryWriteSettings. */
+ public static class Builder extends ClientSettings.Builder {
+
+ protected Builder() throws IOException {
+ this(((ClientContext) null));
+ }
+
+ protected Builder(ClientContext clientContext) {
+ super(BigQueryWriteStubSettings.newBuilder(clientContext));
+ }
+
+ protected Builder(BigQueryWriteSettings settings) {
+ super(settings.getStubSettings().toBuilder());
+ }
+
+ protected Builder(BigQueryWriteStubSettings.Builder stubSettings) {
+ super(stubSettings);
+ }
+
+ private static Builder createDefault() {
+ return new Builder(BigQueryWriteStubSettings.newBuilder());
+ }
+
+ public BigQueryWriteStubSettings.Builder getStubSettingsBuilder() {
+ return ((BigQueryWriteStubSettings.Builder) getStubSettings());
+ }
+
+ /**
+ * Applies the given settings updater function to all of the unary API methods in this service.
+ *
+ *
Note: This method does not support applying settings to streaming methods.
+ */
+ public Builder applyToAllUnaryMethods(
+ ApiFunction, Void> settingsUpdater) {
+ super.applyToAllUnaryMethods(
+ getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater);
+ return this;
+ }
+
+ /** Returns the builder for the settings used for calls to createWriteStream. */
+ public UnaryCallSettings.Builder
+ createWriteStreamSettings() {
+ return getStubSettingsBuilder().createWriteStreamSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to appendRows. */
+ public StreamingCallSettings.Builder
+ appendRowsSettings() {
+ return getStubSettingsBuilder().appendRowsSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to getWriteStream. */
+ public UnaryCallSettings.Builder getWriteStreamSettings() {
+ return getStubSettingsBuilder().getWriteStreamSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to finalizeWriteStream. */
+ public UnaryCallSettings.Builder
+ finalizeWriteStreamSettings() {
+ return getStubSettingsBuilder().finalizeWriteStreamSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to batchCommitWriteStreams. */
+ public UnaryCallSettings.Builder<
+ BatchCommitWriteStreamsRequest, BatchCommitWriteStreamsResponse>
+ batchCommitWriteStreamsSettings() {
+ return getStubSettingsBuilder().batchCommitWriteStreamsSettings();
+ }
+
+ /** Returns the builder for the settings used for calls to flushRows. */
+ public UnaryCallSettings.Builder flushRowsSettings() {
+ return getStubSettingsBuilder().flushRowsSettings();
+ }
+
+ @Override
+ public BigQueryWriteSettings build() throws IOException {
+ return new BigQueryWriteSettings(this);
+ }
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/CivilTimeEncoder.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/CivilTimeEncoder.java
new file mode 100644
index 000000000000..e09835da63ba
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/CivilTimeEncoder.java
@@ -0,0 +1,361 @@
+/*
+ * Copyright 2026 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.cloud.bigquery.storage.v1;
+
+import static com.google.cloud.bigquery.storage.util.TimeConversionUtils.toJavaTimeLocalDateTime;
+import static com.google.cloud.bigquery.storage.util.TimeConversionUtils.toJavaTimeLocalTime;
+import static com.google.cloud.bigquery.storage.util.TimeConversionUtils.toThreetenLocalDateTime;
+import static com.google.cloud.bigquery.storage.util.TimeConversionUtils.toThreetenLocalTime;
+import static com.google.common.base.Preconditions.checkArgument;
+
+import com.google.api.core.ObsoleteApi;
+import java.time.DateTimeException;
+import java.time.temporal.ChronoUnit;
+
+/**
+ * Ported from ZetaSQL CivilTimeEncoder Original code can be found at:
+ * https://github.com/google/zetasql/blob/master/java/com/google/zetasql/CivilTimeEncoder.java
+ * Encoder for TIME and DATETIME values, according to civil_time encoding.
+ *
+ *
The valid range and number of bits required by each date/time field is as the following:
+ *
+ *
+ *
Range and bits for date/time fields
+ *
Field
Range
#Bits
+ *
Year
[1, 9999]
14
+ *
Month
[1, 12]
4
+ *
Day
[1, 31]
5
+ *
Hour
[0, 23]
5
+ *
Minute
[0, 59]
6
+ *
Second
[0, 59]*
6
+ *
Micros
[0, 999999]
20
+ *
Nanos
[0, 999999999]
30
+ *
+ *
+ *
* Leap second is not supported.
+ *
+ *
When encoding the TIME or DATETIME into a bit field, larger date/time field is on the more
+ * significant side.
+ */
+public final class CivilTimeEncoder {
+ private static final int NANO_LENGTH = 30;
+ private static final int MICRO_LENGTH = 20;
+
+ private static final int NANO_SHIFT = 0;
+ private static final int MICRO_SHIFT = 0;
+ private static final int SECOND_SHIFT = 0;
+ private static final int MINUTE_SHIFT = 6;
+ private static final int HOUR_SHIFT = 12;
+ private static final int DAY_SHIFT = 17;
+ private static final int MONTH_SHIFT = 22;
+ private static final int YEAR_SHIFT = 26;
+
+ private static final long NANO_MASK = 0x3FFFFFFFL;
+ private static final long MICRO_MASK = 0xFFFFFL;
+ private static final long SECOND_MASK = 0x3FL;
+ private static final long MINUTE_MASK = 0xFC0L;
+ private static final long HOUR_MASK = 0x1F000L;
+ private static final long DAY_MASK = 0x3E0000L;
+ private static final long MONTH_MASK = 0x3C00000L;
+ private static final long YEAR_MASK = 0xFFFC000000L;
+
+ private static final long TIME_SECONDS_MASK = 0x1FFFFL;
+ private static final long TIME_MICROS_MASK = 0x1FFFFFFFFFL;
+ private static final long TIME_NANOS_MASK = 0x7FFFFFFFFFFFL;
+ private static final long DATETIME_SECONDS_MASK = 0xFFFFFFFFFFL;
+ private static final long DATETIME_MICROS_MASK = 0xFFFFFFFFFFFFFFFL;
+
+ /**
+ * Encodes {@code time} as a 4-byte integer with seconds precision.
+ *
+ *
Encoding is as the following:
+ *
+ *
+ * 3 2 1
+ * MSB 10987654321098765432109876543210 LSB
+ * | H || M || S |
+ *
+ * 6 5 4 3 2 1
+ * MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
+ * |--- year ---||m || D || H || M || S ||-------micros-----|
+ *
+ *
+ * @see #decodePacked64DatetimeMicros(long)
+ */
+ @SuppressWarnings({"GoodTime-ApiWithNumericTimeUnit", "JavaLocalDateTimeGetNano"})
+ public static long encodePacked64DatetimeMicrosLocalDateTime(java.time.LocalDateTime dateTime) {
+ checkValidDateTimeMicros(dateTime);
+ return (encodePacked64DatetimeSeconds(dateTime) << MICRO_LENGTH)
+ | (dateTime.getNano() / 1_000L);
+ }
+
+ /**
+ * This method is obsolete. Use {@link #decodePacked64DatetimeMicrosLocalDateTime(long)} instead.
+ */
+ @ObsoleteApi("Use decodePacked64DatetimeMicrosLocalDateTime(long) instead")
+ @SuppressWarnings("GoodTime-ApiWithNumericTimeUnit")
+ public static org.threeten.bp.LocalDateTime decodePacked64DatetimeMicros(
+ long bitFieldDatetimeMicros) {
+ return toThreetenLocalDateTime(
+ decodePacked64DatetimeMicrosLocalDateTime(bitFieldDatetimeMicros));
+ }
+
+ /**
+ * Decodes {@code bitFieldDatetimeMicros} as a {@link java.time.LocalDateTime} with microseconds
+ * precision.
+ *
+ *
Encoding is as the following:
+ *
+ *
+ * 6 5 4 3 2 1
+ * MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
+ * |--- year ---||m || D || H || M || S ||-------micros-----|
+ *
+ *
+ * @see #encodePacked64DatetimeMicros(LocalDateTime)
+ */
+ @SuppressWarnings("GoodTime-ApiWithNumericTimeUnit")
+ public static java.time.LocalDateTime decodePacked64DatetimeMicrosLocalDateTime(
+ long bitFieldDatetimeMicros) {
+ checkValidBitField(bitFieldDatetimeMicros, DATETIME_MICROS_MASK);
+ long bitFieldDatetimeSeconds = bitFieldDatetimeMicros >> MICRO_LENGTH;
+ java.time.LocalDateTime dateTimeSeconds =
+ decodePacked64DatetimeSeconds(bitFieldDatetimeSeconds);
+ int microOfSecond = getFieldFromBitField(bitFieldDatetimeMicros, MICRO_MASK, MICRO_SHIFT);
+ checkValidMicroOfSecond(microOfSecond);
+ java.time.LocalDateTime dateTime = dateTimeSeconds.withNano(microOfSecond * 1_000);
+ checkValidDateTimeMicros(dateTime);
+ return dateTime;
+ }
+
+ private static int getFieldFromBitField(long bitField, long mask, int shift) {
+ return (int) ((bitField & mask) >> shift);
+ }
+
+ private static void checkValidTimeSeconds(java.time.LocalTime time) {
+ checkArgument(time.getHour() >= 0 && time.getHour() <= 23);
+ checkArgument(time.getMinute() >= 0 && time.getMinute() <= 59);
+ checkArgument(time.getSecond() >= 0 && time.getSecond() <= 59);
+ }
+
+ private static void checkValidDateTimeSeconds(java.time.LocalDateTime dateTime) {
+ checkArgument(dateTime.getYear() >= 1 && dateTime.getYear() <= 9999);
+ checkArgument(dateTime.getMonthValue() >= 1 && dateTime.getMonthValue() <= 12);
+ checkArgument(dateTime.getDayOfMonth() >= 1 && dateTime.getDayOfMonth() <= 31);
+ checkValidTimeSeconds(dateTime.toLocalTime());
+ }
+
+ private static void checkValidTimeMicros(java.time.LocalTime time) {
+ checkValidTimeSeconds(time);
+ checkArgument(time.equals(time.truncatedTo(ChronoUnit.MICROS)));
+ }
+
+ private static void checkValidDateTimeMicros(java.time.LocalDateTime dateTime) {
+ checkValidDateTimeSeconds(dateTime);
+ checkArgument(dateTime.equals(dateTime.truncatedTo(ChronoUnit.MICROS)));
+ }
+
+ private static void checkValidMicroOfSecond(int microOfSecond) {
+ checkArgument(microOfSecond >= 0 && microOfSecond <= 999999);
+ }
+
+ private static void checkValidBitField(long bitField, long mask) {
+ checkArgument((bitField & ~mask) == 0x0L);
+ }
+
+ private CivilTimeEncoder() {}
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java
new file mode 100644
index 000000000000..f7ca63e7fe54
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorker.java
@@ -0,0 +1,1648 @@
+/*
+ * Copyright 2026 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.api.core.ApiFuture;
+import com.google.api.core.NanoClock;
+import com.google.api.core.SettableApiFuture;
+import com.google.api.gax.batching.FlowController;
+import com.google.api.gax.retrying.ExponentialRetryAlgorithm;
+import com.google.api.gax.retrying.RetrySettings;
+import com.google.api.gax.retrying.TimedAttemptSettings;
+import com.google.api.gax.rpc.FixedHeaderProvider;
+import com.google.auto.value.AutoValue;
+import com.google.cloud.bigquery.storage.v1.AppendFormats.AppendRowsData;
+import com.google.cloud.bigquery.storage.v1.AppendFormats.AppendRowsSchema;
+import com.google.cloud.bigquery.storage.v1.AppendFormats.DataFormat;
+import com.google.cloud.bigquery.storage.v1.AppendRowsRequest.ArrowData;
+import com.google.cloud.bigquery.storage.v1.AppendRowsRequest.MissingValueInterpretation;
+import com.google.cloud.bigquery.storage.v1.AppendRowsRequest.ProtoData;
+import com.google.cloud.bigquery.storage.v1.Exceptions.AppendSerializationError;
+import com.google.cloud.bigquery.storage.v1.StreamConnection.DoneCallback;
+import com.google.cloud.bigquery.storage.v1.StreamConnection.RequestCallback;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.Uninterruptibles;
+import com.google.protobuf.Int64Value;
+import io.grpc.Status;
+import io.grpc.Status.Code;
+import io.grpc.StatusRuntimeException;
+import io.opentelemetry.api.common.Attributes;
+import java.io.IOException;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.GuardedBy;
+
+/**
+ * A BigQuery Stream Writer that can be used to write data into BigQuery Table.
+ *
+ *
TODO: Support batching.
+ *
+ *
TODO: support updated schema
+ */
+class ConnectionWorker implements AutoCloseable {
+
+ private static final Logger log = Logger.getLogger(StreamWriter.class.getName());
+
+ // Maximum wait time on inflight quota before error out.
+ private static long INFLIGHT_QUOTA_MAX_WAIT_TIME_MILLI = 300000;
+
+ /*
+ * Maximum time waiting for request callback before shutting down the connection.
+ *
+ * We will constantly checking how much time we have been waiting for the next request callback
+ * if we wait too much time we will start shutting down the connections and clean up the queues.
+ */
+ static Duration MAXIMUM_REQUEST_CALLBACK_WAIT_TIME = Duration.ofMinutes(5);
+
+ private Lock lock;
+ private Condition hasMessageInWaitingQueue;
+ private Condition inflightReduced;
+ /*
+ * Max retry duration when trying to establish a connection. This does not
+ * apply to in-stream retries.
+ */
+ private final Duration maxRetryDuration;
+ private ExecutorService threadPool = Executors.newFixedThreadPool(1);
+
+ /*
+ * The identifier of the current stream to write to. This stream name can change during
+ * multiplexing.
+ */
+ private String streamName;
+
+ /*
+ * The location of this connection.
+ */
+ private String location = null;
+
+ /*
+ * The user provided schema of rows to write. This schema can change during multiplexing.
+ */
+ private AppendRowsSchema writerSchema;
+
+ /*
+ * Max allowed inflight requests in the stream. Method append is blocked at this.
+ */
+ private final long maxInflightRequests;
+
+ /*
+ * Max allowed inflight bytes in the stream. Method append is blocked at this.
+ */
+ private final long maxInflightBytes;
+
+ /*
+ * Behavior when inflight queue is exceeded. Only supports Block or Throw, default is Block.
+ */
+ private final FlowController.LimitExceededBehavior limitExceededBehavior;
+
+ /*
+ * TraceId for debugging purpose.
+ */
+ private final String traceId;
+
+ /*
+ * Enables compression on the wire.
+ */
+ private String compressorName = null;
+
+ /*
+ * Tracks current inflight requests in the stream.
+ */
+ @GuardedBy("lock")
+ private long inflightRequests = 0;
+
+ /*
+ * Tracks current inflight bytes in the stream.
+ */
+ @GuardedBy("lock")
+ private long inflightBytes = 0;
+
+ /*
+ * Tracks how often the stream was closed due to a retriable error. Streaming will stop when the
+ * count hits a threshold. Streaming should only be halted, if it isn't possible to establish a
+ * connection. Keep track of the number of reconnections in succession. This will be reset if
+ * a row is successfully called back.
+ */
+ @GuardedBy("lock")
+ private long conectionRetryCountWithoutCallback = 0;
+
+ @GuardedBy("lock")
+ private long connectionRetryStartTime = 0;
+
+ /*
+ * If false, streamConnection needs to be reset.
+ */
+ @GuardedBy("lock")
+ private boolean streamConnectionIsConnected = false;
+
+ /*
+ * A boolean to track if we cleaned up inflight queue.
+ */
+ @GuardedBy("lock")
+ private boolean inflightCleanuped = false;
+
+ /*
+ * Indicates whether user has called Close() or not.
+ */
+ @GuardedBy("lock")
+ private boolean userClosed = false;
+
+ /*
+ * The final status of connection. Set to nonnull when connection is permanently closed.
+ */
+ @GuardedBy("lock")
+ private Throwable connectionFinalStatus = null;
+
+ /*
+ * Contains requests buffered in the client and not yet sent to server.
+ */
+ @GuardedBy("lock")
+ private final Deque waitingRequestQueue;
+
+ /*
+ * Contains sent append requests waiting for response from server.
+ */
+ @GuardedBy("lock")
+ private final Deque inflightRequestQueue;
+
+ /*
+ * Tracks number of destinations handled by this connection.
+ */
+ private final Set destinationSet = ConcurrentHashMap.newKeySet();
+
+ /*
+ * Contains the updated TableSchema.
+ */
+ @GuardedBy("lock")
+ private TableSchemaAndTimestamp updatedSchema;
+
+ /*
+ * A client used to interact with BigQuery.
+ */
+ private BigQueryWriteClient client;
+
+ /*
+ * Wraps the underlying bi-directional stream connection with server.
+ */
+ private StreamConnection streamConnection;
+
+ /*
+ * A separate thread to handle actual communication with server.
+ */
+ private Thread appendThread;
+
+ /*
+ * The inflight wait time for the previous sent request.
+ */
+ private final AtomicLong inflightWaitSec = new AtomicLong(0);
+
+ /*
+ * A String that uniquely identifies this writer.
+ */
+ private final String writerId = UUID.randomUUID().toString();
+
+ /*
+ * Test only exception behavior testing params.
+ */
+ private RuntimeException testOnlyRunTimeExceptionInAppendLoop = null;
+ private long testOnlyAppendLoopSleepTime = 0;
+
+ /*
+ * Tracks the number of responses to ignore in the case of exclusive stream retry
+ */
+ @GuardedBy("lock")
+ private int responsesToIgnore = 0;
+
+ /*
+ * Contains settings related to in-stream retries. If retrySettings is null,
+ * this implies that no retries will occur on retryable in-stream errors.
+ */
+ private final RetrySettings retrySettings;
+
+ private final RequestProfiler.RequestProfilerHook requestProfilerHook;
+ private final TelemetryMetrics telemetryMetrics;
+
+ /** Indicate whether this connection is created during multiplexing mode. */
+ private final Boolean isMultiplexing;
+
+ private static String projectMatching = "projects/[^/]+/";
+ private static Pattern streamPatternProject = Pattern.compile(projectMatching);
+
+ static final Pattern DEFAULT_STREAM_PATTERN =
+ Pattern.compile("projects/([^/]+)/datasets/([^/]+)/tables/([^/]+)/(streams/)?_default$");
+
+ private static String tableMatching = "(projects/[^/]+/datasets/[^/]+/tables/[^/]+)/";
+ private static Pattern streamPatternTable = Pattern.compile(tableMatching);
+
+ // Latency buckets are based on a list of 1.5 ^ n
+
+ public static Boolean isDefaultStreamName(String streamName) {
+ Matcher matcher = DEFAULT_STREAM_PATTERN.matcher(streamName);
+ return matcher.matches();
+ }
+
+ /** The maximum size of one request. Defined by the API. */
+ public static long getApiMaxRequestBytes() {
+ return 20L * (1L << 20); // 20 megabytes (https://en.wikipedia.org/wiki/Megabyte)
+ }
+
+ static String extractProjectName(String streamName) {
+ Matcher streamMatcher = streamPatternProject.matcher(streamName);
+ if (streamMatcher.find()) {
+ return streamMatcher.group();
+ } else {
+ throw new IllegalStateException(
+ String.format("The passed in stream name does not match standard format %s", streamName));
+ }
+ }
+
+ static String getRoutingHeader(String streamName, String location) {
+ String project = extractProjectName(streamName);
+ return project + "locations/" + location;
+ }
+
+ private String getTableName() {
+ Matcher tableMatcher = streamPatternTable.matcher(this.streamName);
+ return tableMatcher.find() ? tableMatcher.group(1) : "";
+ }
+
+ public boolean hasActiveConnection() {
+ boolean isConnected = false;
+ this.lock.lock();
+ try {
+ if (streamConnectionIsConnected) {
+ isConnected = true;
+ }
+ } finally {
+ this.lock.unlock();
+ }
+ return isConnected;
+ }
+
+ public int getInflightRequestQueueLength() {
+ int length = 0;
+ this.lock.lock();
+ try {
+ length = inflightRequestQueue.size();
+ } finally {
+ this.lock.unlock();
+ }
+ return length;
+ }
+
+ @VisibleForTesting
+ Attributes getTelemetryAttributes() {
+ return telemetryMetrics.getTelemetryAttributes();
+ }
+
+ public ConnectionWorker(
+ String streamName,
+ String location,
+ ProtoSchema writerSchema,
+ long maxInflightRequests,
+ long maxInflightBytes,
+ Duration maxRetryDuration,
+ FlowController.LimitExceededBehavior limitExceededBehavior,
+ String traceId,
+ @Nullable String compressorName,
+ BigQueryWriteSettings clientSettings,
+ RetrySettings retrySettings,
+ boolean enableRequestProfiler,
+ boolean enableOpenTelemetry,
+ boolean isMultiplexing)
+ throws IOException {
+ this(
+ streamName,
+ location,
+ AppendRowsSchema.of(writerSchema),
+ maxInflightRequests,
+ maxInflightBytes,
+ maxRetryDuration,
+ limitExceededBehavior,
+ traceId,
+ compressorName,
+ clientSettings,
+ retrySettings,
+ enableRequestProfiler,
+ enableOpenTelemetry,
+ isMultiplexing);
+ }
+
+ public ConnectionWorker(
+ String streamName,
+ String location,
+ ArrowSchema writerSchema,
+ long maxInflightRequests,
+ long maxInflightBytes,
+ Duration maxRetryDuration,
+ FlowController.LimitExceededBehavior limitExceededBehavior,
+ String traceId,
+ @Nullable String compressorName,
+ BigQueryWriteSettings clientSettings,
+ RetrySettings retrySettings,
+ boolean enableRequestProfiler,
+ boolean enableOpenTelemetry,
+ boolean isMultiplexing)
+ throws IOException {
+ this(
+ streamName,
+ location,
+ AppendRowsSchema.of(writerSchema),
+ maxInflightRequests,
+ maxInflightBytes,
+ maxRetryDuration,
+ limitExceededBehavior,
+ traceId,
+ compressorName,
+ clientSettings,
+ retrySettings,
+ enableRequestProfiler,
+ enableOpenTelemetry,
+ isMultiplexing);
+ }
+
+ ConnectionWorker(
+ String streamName,
+ String location,
+ AppendRowsSchema writerSchema,
+ long maxInflightRequests,
+ long maxInflightBytes,
+ Duration maxRetryDuration,
+ FlowController.LimitExceededBehavior limitExceededBehavior,
+ String traceId,
+ @Nullable String compressorName,
+ BigQueryWriteSettings clientSettings,
+ RetrySettings retrySettings,
+ boolean enableRequestProfiler,
+ boolean enableOpenTelemetry,
+ boolean isMultiplexing)
+ throws IOException {
+ this.lock = new ReentrantLock();
+ this.hasMessageInWaitingQueue = lock.newCondition();
+ this.inflightReduced = lock.newCondition();
+ this.streamName = streamName;
+ if (location != null && !location.isEmpty()) {
+ this.location = location;
+ }
+ this.maxRetryDuration = maxRetryDuration != null ? maxRetryDuration : Duration.ofMinutes(5);
+ if (writerSchema == null) {
+ throw new StatusRuntimeException(
+ Status.fromCode(Code.INVALID_ARGUMENT)
+ .withDescription("Writer schema must be provided when building this writer."));
+ }
+ this.maxInflightRequests = maxInflightRequests;
+ this.maxInflightBytes = maxInflightBytes;
+ this.limitExceededBehavior = limitExceededBehavior;
+ this.traceId = traceId;
+ this.waitingRequestQueue = new LinkedList();
+ this.inflightRequestQueue = new LinkedList();
+ this.compressorName = compressorName;
+ this.retrySettings = retrySettings;
+ this.requestProfilerHook = new RequestProfiler.RequestProfilerHook(enableRequestProfiler);
+ this.telemetryMetrics =
+ new TelemetryMetrics(this, enableOpenTelemetry, getTableName(), writerId, traceId);
+ this.isMultiplexing = isMultiplexing;
+
+ // Always recreate a client for connection worker.
+ HashMap newHeaders = new HashMap<>();
+ newHeaders.putAll(clientSettings.toBuilder().getHeaderProvider().getHeaders());
+ if (this.location == null) {
+ newHeaders.put("x-goog-request-params", "write_stream=" + this.streamName);
+ } else {
+ newHeaders.put(
+ "x-goog-request-params",
+ "write_location=" + getRoutingHeader(this.streamName, this.location));
+ }
+ BigQueryWriteSettings stubSettings =
+ clientSettings.toBuilder()
+ .setHeaderProvider(FixedHeaderProvider.create(newHeaders))
+ .build();
+ this.client = BigQueryWriteClient.create(clientSettings);
+
+ this.appendThread =
+ new Thread(
+ new Runnable() {
+ @Override
+ public void run() {
+ appendLoop();
+ }
+ });
+ appendThread.setUncaughtExceptionHandler(
+ (Thread t, Throwable e) -> {
+ log.warning(
+ "Exception thrown from append loop, thus stream writer is shutdown due to exception: "
+ + e.toString());
+ lock.lock();
+ try {
+ connectionFinalStatus = e;
+ // Move all current waiting requests to in flight queue.
+ while (!this.waitingRequestQueue.isEmpty()) {
+ AppendRequestAndResponse requestWrapper = this.waitingRequestQueue.pollFirst();
+ this.inflightRequestQueue.addLast(requestWrapper);
+ }
+ } finally {
+ lock.unlock();
+ }
+ cleanupConnectionAndRequests(
+ /* avoidBlocking= */ true); // don't perform blocking operations while on user thread
+ });
+ this.appendThread.start();
+ }
+
+ private void resetConnection() {
+ log.info("Start connecting stream: " + streamName + " id: " + writerId);
+ telemetryMetrics.recordConnectionStart();
+ if (this.streamConnection != null) {
+ // It's safe to directly close the previous connection as the in flight messages
+ // will be picked up by the next connection.
+ this.streamConnection.close();
+ Uninterruptibles.sleepUninterruptibly(
+ calculateSleepTimeMilli(conectionRetryCountWithoutCallback), TimeUnit.MILLISECONDS);
+ }
+ this.streamConnection =
+ new StreamConnection(
+ this.client,
+ new RequestCallback() {
+ @Override
+ public void run(AppendRowsResponse response) {
+ requestCallback(response);
+ }
+ },
+ new DoneCallback() {
+ @Override
+ public void run(Throwable finalStatus) {
+ doneCallback(finalStatus);
+ }
+ },
+ this.compressorName);
+ log.info("Finish connecting stream: " + streamName + " id: " + writerId);
+ }
+
+ @GuardedBy("lock")
+ private boolean shouldWaitForBackoff(AppendRequestAndResponse requestWrapper) {
+ if (this.retrySettings != null
+ && Instant.now().isBefore(requestWrapper.blockMessageSendDeadline)) {
+ log.fine(
+ String.format(
+ "Waiting for wait queue to unblock at %s for retry # %s",
+ requestWrapper.blockMessageSendDeadline, requestWrapper.retryCount));
+ return true;
+ }
+
+ return false;
+ }
+
+ private void waitForBackoffIfNecessary(AppendRequestAndResponse requestWrapper) {
+ lock.lock();
+ requestProfilerHook.startOperation(
+ RequestProfiler.OperationName.RETRY_BACKOFF, requestWrapper.requestUniqueId);
+ try {
+ Condition condition = lock.newCondition();
+ while (shouldWaitForBackoff(requestWrapper)) {
+ condition.await(100, java.util.concurrent.TimeUnit.MILLISECONDS);
+ }
+ } catch (InterruptedException e) {
+ throw new IllegalStateException(e);
+ } finally {
+ requestProfilerHook.endOperation(
+ RequestProfiler.OperationName.RETRY_BACKOFF, requestWrapper.requestUniqueId);
+ lock.unlock();
+ }
+ }
+
+ @GuardedBy("lock")
+ private void addMessageToFrontOfWaitingQueue(AppendRequestAndResponse requestWrapper) {
+ addMessageToWaitingQueue(requestWrapper, /* addToFront= */ true);
+ }
+
+ @GuardedBy("lock")
+ private void addMessageToBackOfWaitingQueue(AppendRequestAndResponse requestWrapper) {
+ addMessageToWaitingQueue(requestWrapper, /* addToFront= */ false);
+ }
+
+ @GuardedBy("lock")
+ private void addMessageToWaitingQueue(
+ AppendRequestAndResponse requestWrapper, boolean addToFront) {
+ ++this.inflightRequests;
+ this.inflightBytes += requestWrapper.messageSize;
+ hasMessageInWaitingQueue.signal();
+ requestProfilerHook.startOperation(
+ RequestProfiler.OperationName.WAIT_QUEUE, requestWrapper.requestUniqueId);
+ if (addToFront) {
+ waitingRequestQueue.addFirst(requestWrapper);
+ } else {
+ waitingRequestQueue.add(requestWrapper);
+ }
+ }
+
+ /** Schedules the writing of rows at given offset. */
+ ApiFuture append(
+ StreamWriter streamWriter, AppendRowsData rows, long offset, String requestUniqueId) {
+ Preconditions.checkArgument(
+ rows.format() == streamWriter.getWriterSchema().format(),
+ "The appended data format must be compatible with the StreamWriter's schema.");
+ if (this.location != null && !this.location.equals(streamWriter.getLocation())) {
+ throw new StatusRuntimeException(
+ Status.fromCode(Code.INVALID_ARGUMENT)
+ .withDescription(
+ "StreamWriter with location "
+ + streamWriter.getLocation()
+ + " is scheduled to use a connection with location "
+ + this.location));
+ } else if (this.location == null && !streamWriter.getStreamName().equals(this.streamName)) {
+ // Location is null implies this is non-multiplexed connection.
+ throw new StatusRuntimeException(
+ Status.fromCode(Code.INVALID_ARGUMENT)
+ .withDescription(
+ "StreamWriter with stream name "
+ + streamWriter.getStreamName()
+ + " is scheduled to use a connection with stream name "
+ + this.streamName));
+ }
+ Preconditions.checkNotNull(streamWriter);
+ AppendRowsRequest.Builder requestBuilder = AppendRowsRequest.newBuilder();
+ Preconditions.checkArgument(rows.format() == streamWriter.getWriterSchema().format());
+ if (rows.format() == DataFormat.PROTO) {
+ requestBuilder.setProtoRows(
+ ProtoData.newBuilder()
+ .setWriterSchema(streamWriter.getProtoSchema())
+ .setRows(rows.protoRows())
+ .build());
+ } else if (rows.format() == DataFormat.ARROW) {
+ requestBuilder.setArrowRows(
+ ArrowData.newBuilder()
+ .setWriterSchema(streamWriter.getArrowSchema())
+ .setRows(rows.arrowRecordBatch())
+ .build());
+ } else {
+ throw new IllegalArgumentException(
+ "Unsupported data format: " + rows.format() + " for stream: " + streamName);
+ }
+ if (offset >= 0) {
+ requestBuilder.setOffset(Int64Value.of(offset));
+ }
+ requestBuilder.setWriteStream(streamWriter.getStreamName());
+ requestBuilder.putAllMissingValueInterpretations(
+ streamWriter.getMissingValueInterpretationMap());
+ if (streamWriter.getDefaultValueInterpretation()
+ != MissingValueInterpretation.MISSING_VALUE_INTERPRETATION_UNSPECIFIED) {
+ requestBuilder.setDefaultMissingValueInterpretation(
+ streamWriter.getDefaultValueInterpretation());
+ }
+ return appendInternal(
+ streamWriter, requestBuilder.build(), requestUniqueId, rows.recordBatchRowCount());
+ }
+
+ Boolean isUserClosed() {
+ this.lock.lock();
+ try {
+ return userClosed;
+ } finally {
+ this.lock.unlock();
+ }
+ }
+
+ String getWriteLocation() {
+ return this.location;
+ }
+
+ private ApiFuture appendInternal(
+ StreamWriter streamWriter,
+ AppendRowsRequest message,
+ String requestUniqueId,
+ long recordBatchRowCount) {
+ AppendRequestAndResponse requestWrapper =
+ new AppendRequestAndResponse(
+ message, streamWriter, this.retrySettings, requestUniqueId, recordBatchRowCount);
+ if (requestWrapper.messageSize > getApiMaxRequestBytes()) {
+ requestWrapper.appendResult.setException(
+ new StatusRuntimeException(
+ Status.fromCode(Code.INVALID_ARGUMENT)
+ .withDescription(
+ "MessageSize is too large. Max allow: "
+ + getApiMaxRequestBytes()
+ + " Actual: "
+ + requestWrapper.messageSize)));
+ return requestWrapper.appendResult;
+ }
+ this.lock.lock();
+ try {
+ if (userClosed) {
+ requestWrapper.appendResult.setException(
+ new Exceptions.StreamWriterClosedException(
+ Status.fromCode(Status.Code.FAILED_PRECONDITION)
+ .withDescription("Connection is already closed during append"),
+ streamName,
+ writerId));
+ return requestWrapper.appendResult;
+ }
+ // Check if queue is going to be full before adding the request.
+ if (this.limitExceededBehavior == FlowController.LimitExceededBehavior.ThrowException) {
+ if (this.inflightRequests + 1 >= this.maxInflightRequests) {
+ throw new Exceptions.InflightRequestsLimitExceededException(
+ writerId, this.maxInflightRequests);
+ }
+ if (this.inflightBytes + requestWrapper.messageSize >= this.maxInflightBytes) {
+ throw new Exceptions.InflightBytesLimitExceededException(writerId, this.maxInflightBytes);
+ }
+ }
+
+ if (connectionFinalStatus != null) {
+ String connectionFinalStatusString;
+ if (connectionFinalStatus
+ .toString()
+ .contains("com.google.api.gax.rpc.UnavailableException")) {
+ connectionFinalStatusString =
+ connectionFinalStatus.toString()
+ + ". This is a most likely a transient condition and may be corrected by retrying"
+ + " with a backoff.";
+ } else {
+ connectionFinalStatusString = connectionFinalStatus.toString();
+ }
+ requestWrapper.appendResult.setException(
+ new Exceptions.StreamWriterClosedException(
+ Status.fromCode(Status.Code.FAILED_PRECONDITION)
+ .withDescription("Connection is closed due to " + connectionFinalStatusString),
+ streamName,
+ writerId));
+ return requestWrapper.appendResult;
+ }
+ requestProfilerHook.startOperation(RequestProfiler.OperationName.WAIT_QUEUE, requestUniqueId);
+ ++this.inflightRequests;
+ this.inflightBytes += requestWrapper.messageSize;
+ waitingRequestQueue.addLast(requestWrapper);
+ hasMessageInWaitingQueue.signal();
+ requestProfilerHook.startOperation(
+ RequestProfiler.OperationName.WAIT_INFLIGHT_QUOTA, requestUniqueId);
+ try {
+ maybeWaitForInflightQuota();
+ } catch (StatusRuntimeException ex) {
+ --this.inflightRequests;
+ waitingRequestQueue.pollLast();
+ this.inflightBytes -= requestWrapper.messageSize;
+ throw ex;
+ }
+ requestProfilerHook.endOperation(
+ RequestProfiler.OperationName.WAIT_INFLIGHT_QUOTA, requestUniqueId);
+ return requestWrapper.appendResult;
+ } finally {
+ this.lock.unlock();
+ }
+ }
+
+ @GuardedBy("lock")
+ private void maybeWaitForInflightQuota() {
+ long start_time = System.currentTimeMillis();
+ while (this.inflightRequests >= this.maxInflightRequests
+ || this.inflightBytes >= this.maxInflightBytes) {
+ try {
+ inflightReduced.await(100, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ log.warning(
+ "Interrupted while waiting for inflight quota. Stream: "
+ + streamName
+ + " Error: "
+ + e.toString());
+ throw new StatusRuntimeException(
+ Status.fromCode(Code.CANCELLED)
+ .withCause(e)
+ .withDescription("Interrupted while waiting for quota."));
+ }
+ long current_wait_time = System.currentTimeMillis() - start_time;
+ if (current_wait_time > INFLIGHT_QUOTA_MAX_WAIT_TIME_MILLI) {
+ throw new StatusRuntimeException(
+ Status.fromCode(Code.CANCELLED)
+ .withDescription(
+ String.format(
+ "Interrupted while waiting for quota due to long waiting time %sms",
+ current_wait_time)));
+ }
+ }
+ inflightWaitSec.set((System.currentTimeMillis() - start_time) / 1000);
+ }
+
+ @VisibleForTesting
+ static long calculateSleepTimeMilli(long retryCount) {
+ return (long) Math.min(Math.pow(2, retryCount) * 50, 60000);
+ }
+
+ @VisibleForTesting
+ void setTestOnlyAppendLoopSleepTime(long testOnlyAppendLoopSleepTime) {
+ this.testOnlyAppendLoopSleepTime = testOnlyAppendLoopSleepTime;
+ }
+
+ @VisibleForTesting
+ void setTestOnlyRunTimeExceptionInAppendLoop(
+ RuntimeException testOnlyRunTimeExceptionInAppendLoop) {
+ this.testOnlyRunTimeExceptionInAppendLoop = testOnlyRunTimeExceptionInAppendLoop;
+ }
+
+ public long getInflightWaitSeconds() {
+ return inflightWaitSec.longValue();
+ }
+
+ /**
+ * @return a unique Id for the writer.
+ */
+ public String getWriterId() {
+ return writerId;
+ }
+
+ boolean isConnectionInUnrecoverableState() {
+ this.lock.lock();
+ try {
+ // If final status is set, there's no
+ return connectionFinalStatus != null;
+ } finally {
+ this.lock.unlock();
+ }
+ }
+
+ /** Close the stream writer. Shut down all resources. */
+ @Override
+ public void close() {
+ log.info("User closing stream: " + streamName);
+ this.lock.lock();
+ try {
+ this.userClosed = true;
+ } finally {
+ this.lock.unlock();
+ }
+ log.info("Waiting for append thread to finish. Stream: " + streamName + " id: " + writerId);
+ try {
+ appendThread.join();
+ } catch (InterruptedException e) {
+ // Unexpected. Just swallow the exception with logging.
+ log.warning(
+ "Append handler join is interrupted. Stream: "
+ + streamName
+ + " id: "
+ + writerId
+ + " Error: "
+ + e.toString());
+ }
+ this.client.close();
+ try {
+ // Backend request has a 2 minute timeout, so wait a little longer than that.
+ this.client.awaitTermination(150, TimeUnit.SECONDS);
+ } catch (InterruptedException ignored) {
+ log.warning("Client await termination timeout in writer id " + writerId);
+ }
+
+ try {
+ log.fine(
+ "Begin shutting down user callback thread pool for stream "
+ + streamName
+ + " id: "
+ + writerId);
+ threadPool.shutdown();
+ threadPool.awaitTermination(3, TimeUnit.MINUTES);
+ } catch (InterruptedException e) {
+ // Unexpected. Just swallow the exception with logging.
+ log.warning(
+ "Close on thread pool for "
+ + streamName
+ + " id: "
+ + writerId
+ + " is interrupted with exception: "
+ + e.toString());
+ throw new IllegalStateException(
+ "Thread pool shutdown is interrupted for stream " + streamName);
+ }
+ log.info("User close finishes for stream " + streamName);
+ }
+
+ /*
+ * This loop is executed in a separate thread.
+ *
+ * It takes requests from waiting queue and sends them to server.
+ */
+ private void appendLoop() {
+ Deque localQueue = new LinkedList();
+ boolean streamNeedsConnecting = false;
+
+ // Indicate whether we are at the first request after switching destination.
+ // True means the schema and other metadata are needed.
+ boolean firstRequestForTableOrSchemaSwitch = true;
+
+ while (!waitingQueueDrained()) {
+ this.lock.lock();
+ try {
+ hasMessageInWaitingQueue.await(100, TimeUnit.MILLISECONDS);
+ // Check whether we should error out the current append loop.
+ if (inflightRequestQueue.size() > 0) {
+ Instant sendInstant = inflightRequestQueue.getFirst().requestSendTimeStamp;
+ if (sendInstant != null) {
+ throwIfWaitCallbackTooLong(sendInstant);
+ }
+ }
+
+ // Copy the streamConnectionIsConnected guarded by lock to a local variable.
+ // In addition, only reconnect if there is a retriable error.
+ streamNeedsConnecting = !streamConnectionIsConnected && connectionFinalStatus == null;
+ if (streamNeedsConnecting) {
+ // If the stream connection is broken, any requests on inflightRequestQueue will need
+ // to be resent, as the new connection has no knowledge of the requests. Copy the requests
+ // from inflightRequestQueue and prepent them onto the waitinRequestQueue. They need to be
+ // prepended as they need to be sent before new requests.
+ while (!inflightRequestQueue.isEmpty()) {
+ AppendRequestAndResponse requestWrapper = inflightRequestQueue.pollLast();
+ // Consider the backend latency as completed for the current request.
+ requestProfilerHook.endOperation(
+ RequestProfiler.OperationName.RESPONSE_LATENCY, requestWrapper.requestUniqueId);
+ requestWrapper.requestSendTimeStamp = null;
+ requestProfilerHook.startOperation(
+ RequestProfiler.OperationName.WAIT_QUEUE, requestWrapper.requestUniqueId);
+ waitingRequestQueue.addFirst(requestWrapper);
+ }
+
+ // If any of the inflight messages were meant to be ignored during requestCallback, they
+ // no longer will be able to make the round trip, so clear responsesToIgnore.
+ this.responsesToIgnore = 0;
+ }
+ while (!this.waitingRequestQueue.isEmpty()) {
+ AppendRequestAndResponse requestWrapper = this.waitingRequestQueue.pollFirst();
+ requestProfilerHook.endOperation(
+ RequestProfiler.OperationName.WAIT_QUEUE, requestWrapper.requestUniqueId);
+ waitForBackoffIfNecessary(requestWrapper);
+ this.inflightRequestQueue.add(requestWrapper);
+ localQueue.addLast(requestWrapper);
+ }
+ } catch (InterruptedException e) {
+ log.warning(
+ "Interrupted while waiting for message. Stream: "
+ + streamName
+ + " id: "
+ + writerId
+ + " Error: "
+ + e.toString());
+ } finally {
+ this.lock.unlock();
+ }
+
+ if (localQueue.isEmpty()) {
+ continue;
+ }
+ if (streamNeedsConnecting) {
+ // Set streamConnectionIsConnected to true, to indicate the stream has been connected. This
+ // should happen before the call to resetConnection. As it is unknown when the connection
+ // could be closed and the doneCallback called, and thus clearing the flag.
+ lock.lock();
+ try {
+ this.streamConnectionIsConnected = true;
+ } finally {
+ lock.unlock();
+ }
+ if (testOnlyRunTimeExceptionInAppendLoop != null) {
+ Uninterruptibles.sleepUninterruptibly(testOnlyAppendLoopSleepTime, TimeUnit.MILLISECONDS);
+ throw testOnlyRunTimeExceptionInAppendLoop;
+ }
+ resetConnection();
+ // Set firstRequestInConnection to indicate the next request to be sent should include
+ // metedata. Reset everytime after reconnection.
+ firstRequestForTableOrSchemaSwitch = true;
+ }
+ while (!localQueue.isEmpty()) {
+ localQueue.peekFirst().setRequestSendQueueTime();
+ AppendRequestAndResponse wrapper = localQueue.pollFirst();
+ AppendRowsRequest originalRequest = wrapper.message;
+ String requestUniqueId = wrapper.requestUniqueId;
+ AppendRowsRequest.Builder originalRequestBuilder = originalRequest.toBuilder();
+ // incomingWriterSchema is null if the request doesn't have a schema.
+ AppendRowsSchema incomingWriterSchema = getSchema(originalRequest);
+ // Always respect the first writer schema seen by the loop.
+ if (writerSchema == null && incomingWriterSchema != null) {
+ writerSchema = incomingWriterSchema;
+ }
+ // Consider we enter multiplexing if we met a different non empty stream name or we meet
+ // a new schema for the same stream name.
+ // For the schema comparision we don't use message differencer to speed up the comparing
+ // process. `equals(...)` can bring us false positive, e.g. two repeated field can be
+ // considered the same but is not considered equals(). However as long as it's never provide
+ // false negative we will always correctly pass writer schema to backend.
+ if ((!originalRequest.getWriteStream().isEmpty()
+ && !streamName.isEmpty()
+ && !originalRequest.getWriteStream().equals(streamName))
+ || (incomingWriterSchema != null && !incomingWriterSchema.equals(writerSchema))) {
+ streamName = originalRequest.getWriteStream();
+ telemetryMetrics.refreshOpenTelemetryTableNameAttributes(getTableName());
+ writerSchema = incomingWriterSchema;
+ firstRequestForTableOrSchemaSwitch = true;
+ }
+
+ if (firstRequestForTableOrSchemaSwitch) {
+ // If we are at the first request for every table switch, including the first request in
+ // the connection, we will attach both stream name and table schema to the request.
+ destinationSet.add(streamName);
+ originalRequestBuilder.setTraceId(wrapper.streamWriter.getFullTraceId());
+ } else if (!isMultiplexing) {
+ // If we are not in multiplexing and not in the first request, clear the stream name.
+ originalRequestBuilder.clearWriteStream();
+ }
+
+ // During non table/schema switch requests, clear writer schema.
+ if (!firstRequestForTableOrSchemaSwitch) {
+ if (originalRequest.hasProtoRows()) {
+ originalRequestBuilder.getProtoRowsBuilder().clearWriterSchema();
+ } else if (originalRequest.hasArrowRows()) {
+ originalRequestBuilder.getArrowRowsBuilder().clearWriterSchema();
+ } else {
+ throw new IllegalStateException("Unsupported data format in the AppendRowsRequest.");
+ }
+ }
+ firstRequestForTableOrSchemaSwitch = false;
+
+ requestProfilerHook.startOperation(
+ RequestProfiler.OperationName.RESPONSE_LATENCY, requestUniqueId);
+
+ // Send should only throw an exception if there is a problem with the request. The catch
+ // block will handle this case, and return the exception with the result.
+ // Otherwise send will return:
+ // SUCCESS: Message was sent, wait for the callback.
+ // STREAM_CLOSED: Stream was closed, normally or due to en error
+ // NOT_ENOUGH_QUOTA: Message wasn't sent due to not enough quota.
+ // TODO: Handle NOT_ENOUGH_QUOTA.
+ // In the close case, the request is in the inflight queue, and will either be returned
+ // to the user with an error, or will be resent.
+ this.streamConnection.send(originalRequestBuilder.build());
+ }
+ }
+ cleanupConnectionAndRequests(/* avoidBlocking= */ false);
+ }
+
+ @Nullable
+ private AppendRowsSchema getSchema(AppendRowsRequest request) {
+ if (request.hasProtoRows()) {
+ return request.getProtoRows().hasWriterSchema()
+ ? AppendRowsSchema.of(request.getProtoRows().getWriterSchema())
+ : null;
+ } else if (request.hasArrowRows()) {
+ return request.getArrowRows().hasWriterSchema()
+ ? AppendRowsSchema.of(request.getArrowRows().getWriterSchema())
+ : null;
+ } else {
+ throw new IllegalStateException("Unsupported data format in the AppendRowsRequest.");
+ }
+ }
+
+ private void cleanupConnectionAndRequests(boolean avoidBlocking) {
+ log.info(
+ "Cleanup starts. Stream: "
+ + streamName
+ + " id: "
+ + writerId
+ + " userClose: "
+ + userClosed
+ + " final exception: "
+ + (this.connectionFinalStatus == null
+ ? "null"
+ : this.connectionFinalStatus.toString()));
+ // At this point, the waiting queue is drained, so no more requests.
+ // We can close the stream connection and handle the remaining inflight requests.
+ if (streamConnection != null) {
+ this.streamConnection.close();
+ if (!avoidBlocking) {
+ waitForDoneCallback(3, TimeUnit.MINUTES);
+ }
+ }
+
+ // At this point, there cannot be more callback. It is safe to clean up all inflight requests.
+ log.info(
+ "Stream connection is fully closed. Cleaning up inflight requests. Stream: "
+ + streamName
+ + " id: "
+ + writerId);
+ cleanupInflightRequests();
+ log.info("Append thread is done. Stream: " + streamName + " id: " + writerId);
+ }
+
+ private void throwIfWaitCallbackTooLong(Instant timeToCheck) {
+ Duration milliSinceLastCallback = Duration.between(timeToCheck, Instant.now());
+ if (milliSinceLastCallback.compareTo(MAXIMUM_REQUEST_CALLBACK_WAIT_TIME) > 0) {
+ throw new Exceptions.MaximumRequestCallbackWaitTimeExceededException(
+ milliSinceLastCallback, writerId, MAXIMUM_REQUEST_CALLBACK_WAIT_TIME);
+ }
+ }
+
+ /*
+ * Returns true if waiting queue is drain, a.k.a. no more requests in the waiting queue.
+ *
+ * It serves as a signal to append thread that there cannot be any more requests in the waiting
+ * queue and it can prepare to stop.
+ */
+ private boolean waitingQueueDrained() {
+ this.lock.lock();
+ try {
+ return (this.userClosed || this.connectionFinalStatus != null)
+ && this.waitingRequestQueue.isEmpty();
+ } finally {
+ this.lock.unlock();
+ }
+ }
+
+ private void waitForDoneCallback(long duration, TimeUnit timeUnit) {
+ log.fine(
+ "Waiting for done callback from stream connection. Stream: "
+ + streamName
+ + " id: "
+ + writerId);
+ long deadline = System.nanoTime() + timeUnit.toNanos(duration);
+ while (System.nanoTime() <= deadline) {
+ this.lock.lock();
+ try {
+ if (!this.streamConnectionIsConnected) {
+ // Done callback is received, return.
+ return;
+ }
+ } finally {
+ this.lock.unlock();
+ }
+ Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
+ }
+ this.lock.lock();
+ try {
+ log.warning("Donecallback is not triggered within timeout frame for writer " + writerId);
+ if (connectionFinalStatus == null) {
+ connectionFinalStatus =
+ new StatusRuntimeException(
+ Status.fromCode(Code.CANCELLED)
+ .withDescription("Timeout waiting for DoneCallback."));
+ }
+ } finally {
+ this.lock.unlock();
+ }
+
+ return;
+ }
+
+ private void cleanupInflightRequests() {
+ Throwable finalStatus =
+ new Exceptions.StreamWriterClosedException(
+ Status.fromCode(Status.Code.FAILED_PRECONDITION)
+ .withDescription("Connection is already closed, cleanup inflight request"),
+ streamName,
+ writerId);
+ Deque localQueue = new LinkedList();
+ this.lock.lock();
+ try {
+ if (this.connectionFinalStatus != null) {
+ finalStatus = this.connectionFinalStatus;
+ }
+ while (!this.inflightRequestQueue.isEmpty()) {
+ localQueue.addLast(pollFirstInflightRequestQueue());
+ }
+ this.inflightCleanuped = true;
+ } finally {
+ this.lock.unlock();
+ }
+ log.fine(
+ "Cleaning "
+ + localQueue.size()
+ + " inflight requests with error: "
+ + finalStatus
+ + " for Stream "
+ + streamName
+ + " id: "
+ + writerId);
+ int sizeOfQueue = localQueue.size();
+ for (int i = 0; i < sizeOfQueue; i++) {
+ if (i == 0) {
+ localQueue.pollFirst().appendResult.setException(finalStatus);
+ } else {
+ localQueue
+ .pollFirst()
+ .appendResult
+ .setException(
+ new Exceptions.StreamWriterClosedException(
+ Status.fromCode(Code.ABORTED)
+ .withDescription(
+ "Connection is aborted due to an unrecoverable failure of "
+ + "another request sharing the connection. Please retry this "
+ + "request."),
+ streamName,
+ writerId));
+ }
+ }
+ }
+
+ private Boolean retryOnRetryableError(Code errorCode, AppendRequestAndResponse requestWrapper) {
+ if (this.retrySettings == null) {
+ return false;
+ }
+
+ if (this.retrySettings.getMaxAttempts() == 0) {
+ return false;
+ }
+
+ if (!isConnectionErrorRetriable(errorCode) && errorCode != Code.RESOURCE_EXHAUSTED) {
+ return false;
+ }
+
+ if (requestWrapper.retryCount < this.retrySettings.getMaxAttempts()) {
+ lock.lock();
+ try {
+ requestWrapper.retryCount++;
+ if (this.retrySettings != null && useBackoffForError(errorCode, streamName)) {
+ // Trigger exponential backoff in append loop when request is resent for quota errors.
+ // createNextAttempt correctly initializes the retry delay; createfirstAttempt does not
+ // include a positive delay, just 0.
+ requestWrapper.attemptSettings =
+ requestWrapper.retryAlgorithm.createNextAttempt(
+ requestWrapper.attemptSettings == null
+ ? requestWrapper.retryAlgorithm.createFirstAttempt()
+ : requestWrapper.attemptSettings);
+ requestWrapper.blockMessageSendDeadline =
+ Instant.now().plusMillis(requestWrapper.attemptSettings.getRetryDelay().toMillis());
+ log.info(
+ "Messages blocked for retry for "
+ + java.time.Duration.between(
+ java.time.Instant.now(), requestWrapper.blockMessageSendDeadline)
+ + " until "
+ + requestWrapper.blockMessageSendDeadline);
+ }
+
+ Long offset =
+ requestWrapper.message.hasOffset() ? requestWrapper.message.getOffset().getValue() : -1;
+ if (isDefaultStreamName(streamName) || offset == -1) {
+ log.info(
+ String.format(
+ "Retrying default stream message in stream %s for in-stream error: %s, retry"
+ + " count: %s",
+ streamName, errorCode, requestWrapper.retryCount));
+ addMessageToFrontOfWaitingQueue(requestWrapper);
+ } else {
+ log.info(
+ String.format(
+ "Retrying exclusive message in stream %s at offset %d for in-stream error: %s,"
+ + " retry count: %s",
+ streamName,
+ requestWrapper.message.getOffset().getValue(),
+ errorCode,
+ requestWrapper.retryCount));
+ // Send all inflight messages to front of queue
+ while (!inflightRequestQueue.isEmpty()) {
+ AppendRequestAndResponse element = pollLastInflightRequestQueue();
+ addMessageToFrontOfWaitingQueue(element);
+ responsesToIgnore++;
+ }
+
+ addMessageToFrontOfWaitingQueue(requestWrapper);
+ }
+ return true;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ log.info(
+ String.format(
+ "Max retry count reached for message in stream %s at offset %d. Retry count: %d",
+ streamName, requestWrapper.message.getOffset().getValue(), requestWrapper.retryCount));
+ return false;
+ }
+
+ private void requestCallback(AppendRowsResponse response) {
+ if (response.hasUpdatedSchema()) {
+ AppendRowsResponse responseWithUpdatedSchemaRemoved =
+ response.toBuilder().clearUpdatedSchema().build();
+
+ log.fine(
+ String.format(
+ "Got response with schema updated (omitting updated schema in response here): %s"
+ + " writer id %s",
+ responseWithUpdatedSchemaRemoved.toString(), writerId));
+ }
+
+ AppendRequestAndResponse requestWrapper;
+ this.lock.lock();
+ try {
+ // Ignored response has arrived
+ if (responsesToIgnore > 0) {
+ if (response.hasError()) {
+ log.fine(
+ String.format("Ignoring response in stream %s at offset %s.", streamName, response));
+ } else {
+ log.warning(
+ String.format(
+ "Unexpected successful response in stream %s at offset %s. Due to a previous"
+ + " retryable error being inflight, this message is being ignored.",
+ streamName, response.getAppendResult().getOffset()));
+ }
+
+ responsesToIgnore--;
+ return;
+ }
+
+ if (response.hasUpdatedSchema()) {
+ this.updatedSchema =
+ TableSchemaAndTimestamp.create(System.nanoTime(), response.getUpdatedSchema());
+ }
+ // Had a successful connection with at least one result, reset retries.
+ // conectionRetryCountWithoutCallback is reset so that only multiple retries, without
+ // successful records sent, will cause the stream to fail.
+ if (conectionRetryCountWithoutCallback != 0) {
+ conectionRetryCountWithoutCallback = 0;
+ }
+ if (connectionRetryStartTime != 0) {
+ connectionRetryStartTime = 0;
+ }
+ if (!this.inflightRequestQueue.isEmpty()) {
+ Instant sendInstant = inflightRequestQueue.getFirst().requestSendTimeStamp;
+ if (sendInstant != null) {
+ Duration durationLatency = Duration.between(sendInstant, Instant.now());
+ telemetryMetrics.recordNetworkLatency(durationLatency);
+ }
+
+ requestWrapper = pollFirstInflightRequestQueue();
+ requestProfilerHook.endOperation(
+ RequestProfiler.OperationName.RESPONSE_LATENCY, requestWrapper.requestUniqueId);
+ } else if (inflightCleanuped) {
+ // It is possible when requestCallback is called, the inflight queue is already drained
+ // because we timed out waiting for done.
+ return;
+ } else {
+ // This is something not expected, we shouldn't have an empty inflight queue otherwise.
+ log.log(Level.WARNING, "Unexpected: request callback called on an empty inflight queue.");
+ connectionFinalStatus =
+ new StatusRuntimeException(
+ Status.fromCode(Code.FAILED_PRECONDITION)
+ .withDescription("Request callback called on an empty inflight queue."));
+ return;
+ }
+ } finally {
+ this.lock.unlock();
+ }
+
+ long rowCount =
+ requestWrapper.message.hasProtoRows()
+ ? requestWrapper.message.getProtoRows().getRows().getSerializedRowsCount()
+ : requestWrapper.recordBatchRowCount == -1 ? 0L : requestWrapper.recordBatchRowCount;
+
+ telemetryMetrics.recordResponse(
+ requestWrapper.messageSize,
+ rowCount,
+ Code.values()[
+ response.hasError() ? response.getError().getCode() : Status.Code.OK.ordinal()]
+ .toString(),
+ requestWrapper.retryCount > 0);
+
+ // Retries need to happen on the same thread as queue locking may occur
+ if (response.hasError()) {
+ if (retryOnRetryableError(Code.values()[response.getError().getCode()], requestWrapper)) {
+ log.info("Attempting to retry on error: " + response.getError().toString());
+ return;
+ }
+ }
+
+ // We need a separate thread pool to unblock the next request callback.
+ // Otherwise user may call append inside request callback, which may be blocked on waiting
+ // on in flight quota, causing deadlock as requests can't be popped out of queue until
+ // the current request callback finishes.
+ threadPool.submit(
+ () -> {
+ try {
+ if (response.hasError()) {
+ Exceptions.StorageException storageException =
+ Exceptions.toStorageException(response.getError(), null);
+ log.fine(String.format("Got error message: %s", response.toString()));
+ if (storageException != null) {
+ requestWrapper.appendResult.setException(storageException);
+ } else if (response.getRowErrorsCount() > 0) {
+ Map rowIndexToErrorMessage = new HashMap<>();
+ for (int i = 0; i < response.getRowErrorsCount(); i++) {
+ RowError rowError = response.getRowErrors(i);
+ rowIndexToErrorMessage.put(
+ Math.toIntExact(rowError.getIndex()), rowError.getMessage());
+ }
+ AppendSerializationError exception =
+ new AppendSerializationError(
+ response.getError().getCode(),
+ response.getError().getMessage(),
+ streamName,
+ rowIndexToErrorMessage);
+ requestWrapper.appendResult.setException(exception);
+ } else {
+ StatusRuntimeException exception =
+ new StatusRuntimeException(
+ Status.fromCodeValue(response.getError().getCode())
+ .withDescription(response.getError().getMessage()));
+ requestWrapper.appendResult.setException(exception);
+ }
+ } else {
+ requestWrapper.appendResult.set(response);
+ }
+ } finally {
+ requestProfilerHook.endOperation(
+ RequestProfiler.OperationName.TOTAL_LATENCY, requestWrapper.requestUniqueId);
+ }
+ });
+ }
+
+ private boolean isConnectionErrorRetriable(Code statusCode) {
+ return statusCode == Code.ABORTED
+ || statusCode == Code.UNAVAILABLE
+ || statusCode == Code.CANCELLED
+ || statusCode == Code.INTERNAL
+ || statusCode == Code.DEADLINE_EXCEEDED
+ || statusCode == Code.UNKNOWN;
+ }
+
+ private boolean useBackoffForError(Code statusCode, String streamName) {
+ // Default stream uses backoff for INTERNAL, as THROTTLED errors are more likely with default
+ // streams. RESOURCE_EXHAUSTED streams are used for backoff for each stream type.
+ if (isDefaultStreamName(streamName)) {
+ if (statusCode == Code.INTERNAL) {
+ return true;
+ }
+ }
+ return statusCode == Code.RESOURCE_EXHAUSTED;
+ }
+
+ private void doneCallback(Throwable finalStatus) {
+ log.info(
+ "Received done callback. Stream: "
+ + streamName
+ + " worker id: "
+ + writerId
+ + " Final status: "
+ + finalStatus.toString());
+ boolean closedIdleConnection =
+ finalStatus.toString().contains("Closing the stream because it has been inactive");
+ this.lock.lock();
+ try {
+ this.streamConnectionIsConnected = false;
+ this.telemetryMetrics.recordConnectionEnd(
+ Code.values()[Status.fromThrowable(finalStatus).getCode().ordinal()].toString());
+ if (connectionFinalStatus == null) {
+ if (!closedIdleConnection && connectionRetryStartTime == 0) {
+ connectionRetryStartTime = System.currentTimeMillis();
+ }
+ // If the error can be retried, don't set it here, let it try to retry later on.
+ if (isConnectionErrorRetriable(Status.fromThrowable(finalStatus).getCode())
+ && !userClosed
+ && (maxRetryDuration.toMillis() == 0f
+ || closedIdleConnection
+ || System.currentTimeMillis() - connectionRetryStartTime
+ <= maxRetryDuration.toMillis())) {
+ if (!closedIdleConnection) {
+ this.conectionRetryCountWithoutCallback++;
+ this.telemetryMetrics.recordConnectionStartWithRetry();
+ }
+ log.info(
+ "Connection is going to be reestablished with the next request. Retriable error "
+ + finalStatus.toString()
+ + " received, retry count "
+ + conectionRetryCountWithoutCallback
+ + ", millis left to retry "
+ + (maxRetryDuration.toMillis()
+ - (connectionRetryStartTime > 0
+ ? System.currentTimeMillis() - connectionRetryStartTime
+ : 0))
+ + ", for stream "
+ + streamName
+ + " id:"
+ + writerId);
+ } else {
+ Exceptions.StorageException storageException = Exceptions.toStorageException(finalStatus);
+ this.connectionFinalStatus = storageException != null ? storageException : finalStatus;
+ log.info(
+ "Connection finished with error "
+ + finalStatus.toString()
+ + " for stream "
+ + streamName
+ + " with write id: "
+ + writerId
+ + ", millis left to retry was "
+ + (maxRetryDuration.toMillis()
+ - (System.currentTimeMillis() - connectionRetryStartTime)));
+ }
+ }
+ } finally {
+ this.lock.unlock();
+ }
+ }
+
+ @GuardedBy("lock")
+ private AppendRequestAndResponse pollInflightRequestQueue(boolean pollLast) {
+ AppendRequestAndResponse requestWrapper =
+ pollLast ? inflightRequestQueue.pollLast() : inflightRequestQueue.poll();
+ requestWrapper.requestSendTimeStamp = null;
+ --this.inflightRequests;
+ this.inflightBytes -= requestWrapper.messageSize;
+ this.inflightReduced.signal();
+ return requestWrapper;
+ }
+
+ @GuardedBy("lock")
+ private AppendRequestAndResponse pollLastInflightRequestQueue() {
+ return pollInflightRequestQueue(/* pollLast= */ true);
+ }
+
+ @GuardedBy("lock")
+ private AppendRequestAndResponse pollFirstInflightRequestQueue() {
+ return pollInflightRequestQueue(/* pollLast= */ false);
+ }
+
+ /** Thread-safe getter of updated TableSchema */
+ synchronized TableSchemaAndTimestamp getUpdatedSchema() {
+ return this.updatedSchema;
+ }
+
+ // Class that wraps AppendRowsRequest and its corresponding Response future.
+ static final class AppendRequestAndResponse {
+
+ final SettableApiFuture appendResult;
+ final AppendRowsRequest message;
+ final long messageSize;
+ // Used to determine the point at which appendLoop is able to process messages from the waiting
+ // queue. This is used to process errors that support exponential backoff retry.
+ Instant blockMessageSendDeadline;
+
+ Integer retryCount;
+
+ // Unique identifier for the request.
+ String requestUniqueId;
+ ExponentialRetryAlgorithm retryAlgorithm;
+
+ // The writer that issues the call of the request.
+ final StreamWriter streamWriter;
+
+ TimedAttemptSettings attemptSettings;
+
+ // -1 means the value is not set.
+ long recordBatchRowCount = -1;
+
+ // Time at which request was last sent over the network.
+ // If a response is no longer expected this is set back to null.
+ Instant requestSendTimeStamp;
+
+ AppendRequestAndResponse(
+ AppendRowsRequest message,
+ StreamWriter streamWriter,
+ RetrySettings retrySettings,
+ String requestUniqueId,
+ long recordBatchRowCount) {
+ this.appendResult = SettableApiFuture.create();
+ this.message = message;
+ if (message.hasProtoRows()) {
+ this.messageSize = message.getProtoRows().getSerializedSize();
+ } else if (message.hasArrowRows()) {
+ this.messageSize = message.getArrowRows().getSerializedSize();
+ } else {
+ this.messageSize = 0;
+ }
+ this.streamWriter = streamWriter;
+ this.requestUniqueId = requestUniqueId;
+ this.blockMessageSendDeadline = Instant.now();
+ this.retryCount = 0;
+ // To be set after first retry
+ this.attemptSettings = null;
+ if (retrySettings != null) {
+ this.retryAlgorithm =
+ new ExponentialRetryAlgorithm(retrySettings, NanoClock.getDefaultClock());
+ } else {
+ this.retryAlgorithm = null;
+ }
+ this.recordBatchRowCount = recordBatchRowCount;
+ }
+
+ void setRequestSendQueueTime() {
+ requestSendTimeStamp = Instant.now();
+ }
+ }
+
+ /** Returns the current workload of this worker. */
+ public Load getLoad() {
+ return Load.create(
+ inflightBytes,
+ inflightRequests,
+ destinationSet.size(),
+ maxInflightBytes,
+ maxInflightRequests);
+ }
+
+ /**
+ * Represent the current workload for this worker. Used for multiplexing algorithm to determine
+ * the distribution of requests.
+ */
+ @AutoValue
+ public abstract static class Load {
+
+ // Consider the load on this worker to be overwhelmed when above some percentage of
+ // in-flight bytes or in-flight requests count.
+ private static double overwhelmedInflightCount = 0.2;
+ private static double overwhelmedInflightBytes = 0.2;
+
+ // Number of in-flight requests bytes in the worker.
+ abstract long inFlightRequestsBytes();
+
+ // Number of in-flight requests count in the worker.
+ abstract long inFlightRequestsCount();
+
+ // Number of destination handled by this worker.
+ abstract long destinationCount();
+
+ // Max number of in-flight requests count allowed.
+ abstract long maxInflightBytes();
+
+ // Max number of in-flight requests bytes allowed.
+ abstract long maxInflightCount();
+
+ static Load create(
+ long inFlightRequestsBytes,
+ long inFlightRequestsCount,
+ long destinationCount,
+ long maxInflightBytes,
+ long maxInflightCount) {
+ return new AutoValue_ConnectionWorker_Load(
+ inFlightRequestsBytes,
+ inFlightRequestsCount,
+ destinationCount,
+ maxInflightBytes,
+ maxInflightCount);
+ }
+
+ boolean isOverwhelmed() {
+ // Consider only in flight bytes and count for now, as by experiment those two are the most
+ // efficient and has great simplity.
+ return inFlightRequestsCount() > overwhelmedInflightCount * maxInflightCount()
+ || inFlightRequestsBytes() > overwhelmedInflightBytes * maxInflightBytes();
+ }
+
+ // Compares two different load. First compare in flight request bytes split by size 1024 bucket.
+ // Then compare the inflight requests count.
+ // Then compare destination count of the two connections.
+ public static final Comparator LOAD_COMPARATOR =
+ Comparator.comparing((Load key) -> (int) (key.inFlightRequestsBytes() / 1024))
+ .thenComparing((Load key) -> (int) (key.inFlightRequestsCount() / 100))
+ .thenComparing(Load::destinationCount);
+
+ // Compares two different load without bucket, used in smaller scale unit testing.
+ public static final Comparator TEST_LOAD_COMPARATOR =
+ Comparator.comparing((Load key) -> (int) key.inFlightRequestsBytes())
+ .thenComparing((Load key) -> (int) key.inFlightRequestsCount())
+ .thenComparing(Load::destinationCount);
+
+ @VisibleForTesting
+ public static void setOverwhelmedBytesThreshold(double newThreshold) {
+ overwhelmedInflightBytes = newThreshold;
+ }
+
+ @VisibleForTesting
+ public static void setOverwhelmedCountsThreshold(double newThreshold) {
+ overwhelmedInflightCount = newThreshold;
+ }
+ }
+
+ @VisibleForTesting
+ static void setMaxInflightQueueWaitTime(long waitTime) {
+ INFLIGHT_QUOTA_MAX_WAIT_TIME_MILLI = waitTime;
+ }
+
+ @VisibleForTesting
+ static void setMaxInflightRequestWaitTime(Duration waitTime) {
+ MAXIMUM_REQUEST_CALLBACK_WAIT_TIME = waitTime;
+ }
+
+ @AutoValue
+ abstract static class TableSchemaAndTimestamp {
+
+ // Shows the timestamp updated schema is reported from response
+ abstract long updateTimeStamp();
+
+ // The updated schema returned from server.
+ abstract TableSchema updatedSchema();
+
+ static TableSchemaAndTimestamp create(long updateTimeStamp, TableSchema updatedSchema) {
+ return new AutoValue_ConnectionWorker_TableSchemaAndTimestamp(updateTimeStamp, updatedSchema);
+ }
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool.java
new file mode 100644
index 000000000000..baec9a8ee460
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool.java
@@ -0,0 +1,518 @@
+/*
+ * Copyright 2026 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.api.core.ApiFuture;
+import com.google.api.core.ApiFutures;
+import com.google.api.gax.batching.FlowController;
+import com.google.api.gax.retrying.RetrySettings;
+import com.google.auto.value.AutoValue;
+import com.google.cloud.bigquery.storage.v1.AppendFormats.AppendRowsData;
+import com.google.cloud.bigquery.storage.v1.ConnectionWorker.Load;
+import com.google.cloud.bigquery.storage.v1.ConnectionWorker.TableSchemaAndTimestamp;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Stopwatch;
+import com.google.common.collect.ImmutableList;
+import com.google.common.util.concurrent.MoreExecutors;
+import io.opentelemetry.api.common.Attributes;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.GuardedBy;
+
+/** Pool of connections to accept appends and distirbute to different connections. */
+public class ConnectionWorkerPool {
+ static final Pattern STREAM_NAME_PATTERN =
+ Pattern.compile("projects/([^/]+)/datasets/([^/]+)/tables/([^/]+)/streams/([^/]+)");
+
+ private static final Logger log = Logger.getLogger(ConnectionWorkerPool.class.getName());
+ /*
+ * Max allowed inflight requests in the stream.getInflightWaitSeconds Method append is blocked at this.
+ */
+ private final long maxInflightRequests;
+
+ /*
+ * Max allowed inflight bytes in the stream. Method append is blocked at this.
+ */
+ private final long maxInflightBytes;
+
+ /*
+ * Max retry duration for retryable errors.
+ */
+ private final java.time.Duration maxRetryDuration;
+
+ /*
+ * Retry settings for in-stream retries.
+ */
+ private RetrySettings retrySettings;
+
+ /*
+ * Behavior when inflight queue is exceeded. Only supports Block or Throw, default is Block.
+ */
+ private final FlowController.LimitExceededBehavior limitExceededBehavior;
+
+ /** Map from write stream to corresponding connection. */
+ private final Map streamWriterToConnection = new HashMap<>();
+
+ /** Map from a connection to a set of write stream that have sent requests onto it. */
+ private final Map> connectionToWriteStream = new HashMap<>();
+
+ /** Collection of all the created connections. */
+ private final Set connectionWorkerPool =
+ Collections.synchronizedSet(new HashSet<>());
+
+ /*
+ * Contains the mapping from stream name to updated schema.
+ */
+ private Map tableNameToUpdatedSchema = new ConcurrentHashMap<>();
+
+ /** Enable test related logic. */
+ private static boolean enableTesting = false;
+
+ /*
+ * Sets the compression to use for the calls
+ */
+ private String compressorName;
+
+ /** Used for test on the number of times createWorker is called. */
+ private final AtomicInteger testValueCreateConnectionCount = new AtomicInteger(0);
+
+ /*
+ * Tracks current inflight requests in the stream.
+ */
+ @GuardedBy("lock")
+ private long inflightRequests = 0;
+
+ /*
+ * Tracks current inflight bytes in the stream.
+ */
+ @GuardedBy("lock")
+ private long inflightBytes = 0;
+
+ /*
+ * Tracks how often the stream was closed due to a retriable error. Streaming will stop when the
+ * count hits a threshold. Streaming should only be halted, if it isn't possible to establish a
+ * connection. Keep track of the number of reconnections in succession. This will be reset if
+ * a row is successfully called back.
+ */
+ @GuardedBy("lock")
+ private long conectionRetryCountWithoutCallback = 0;
+
+ /*
+ * If false, streamConnection needs to be reset.
+ */
+ @GuardedBy("lock")
+ private boolean streamConnectionIsConnected = false;
+
+ /*
+ * A boolean to track if we cleaned up inflight queue.
+ */
+ @GuardedBy("lock")
+ private boolean inflightCleanuped = false;
+
+ /*
+ * Indicates whether user has called Close() or not.
+ */
+ @GuardedBy("lock")
+ private boolean userClosed = false;
+
+ /*
+ * The final status of connection. Set to nonnull when connection is permanently closed.
+ */
+ @GuardedBy("lock")
+ private Throwable connectionFinalStatus = null;
+
+ /*
+ * Contains the updated TableSchema.
+ */
+ @GuardedBy("lock")
+ private TableSchema updatedSchema;
+
+ /*
+ * A client used to interact with BigQuery.
+ */
+ private BigQueryWriteSettings clientSettings;
+
+ /**
+ * The current maximum connection count. This value is gradually increased till the user defined
+ * maximum connection count.
+ */
+ private int currentMaxConnectionCount;
+
+ /** Lock for controlling concurrent operation on add / delete connections. */
+ private final Lock lock = new ReentrantLock();
+
+ /** Settings for connection pool. */
+ @AutoValue
+ public abstract static class Settings {
+ /**
+ * The minimum connections each pool created before trying to reuse the previously created
+ * connection in multiplexing mode.
+ */
+ abstract int minConnectionsPerRegion();
+
+ /** The maximum connections per connection pool. */
+ abstract int maxConnectionsPerRegion();
+
+ public static Builder builder() {
+ return new AutoValue_ConnectionWorkerPool_Settings.Builder()
+ .setMinConnectionsPerRegion(2)
+ .setMaxConnectionsPerRegion(20);
+ }
+
+ /** Builder for the options to config {@link ConnectionWorkerPool}. */
+ @AutoValue.Builder
+ public abstract static class Builder {
+ // TODO(gaole) rename to per location for easier understanding.
+ public abstract Builder setMinConnectionsPerRegion(int value);
+
+ public abstract Builder setMaxConnectionsPerRegion(int value);
+
+ public abstract Settings build();
+ }
+ }
+
+ /** Static setting for connection pool. */
+ private static Settings settings = Settings.builder().build();
+
+ private final boolean enableRequestProfiler;
+ private final boolean enableOpenTelemetry;
+
+ ConnectionWorkerPool(
+ long maxInflightRequests,
+ long maxInflightBytes,
+ java.time.Duration maxRetryDuration,
+ FlowController.LimitExceededBehavior limitExceededBehavior,
+ @Nullable String comperssorName,
+ BigQueryWriteSettings clientSettings,
+ RetrySettings retrySettings,
+ boolean enableRequestProfiler,
+ boolean enableOpenTelemetry) {
+ this.maxInflightRequests = maxInflightRequests;
+ this.maxInflightBytes = maxInflightBytes;
+ this.maxRetryDuration = maxRetryDuration;
+ this.limitExceededBehavior = limitExceededBehavior;
+ this.compressorName = comperssorName;
+ this.clientSettings = clientSettings;
+ this.currentMaxConnectionCount = settings.minConnectionsPerRegion();
+ this.retrySettings = retrySettings;
+ this.enableRequestProfiler = enableRequestProfiler;
+ this.enableOpenTelemetry = enableOpenTelemetry;
+ }
+
+ /**
+ * Sets static connection pool options.
+ *
+ *
Note: this method should be triggered prior to the construction of connection pool.
+ */
+ public static void setOptions(Settings settings) {
+ ConnectionWorkerPool.settings = settings;
+ }
+
+ ConnectionWorker getConnectionWorker(StreamWriter streamWriter) {
+ ConnectionWorker connectionWorker;
+ lock.lock();
+ try {
+ connectionWorker =
+ streamWriterToConnection.compute(
+ streamWriter,
+ (key, existingStream) -> {
+ // Stick to the existing stream if it's not overwhelmed.
+ if (existingStream != null
+ && !existingStream.getLoad().isOverwhelmed()
+ && !existingStream.isConnectionInUnrecoverableState()) {
+ return existingStream;
+ }
+ if (existingStream != null && existingStream.isConnectionInUnrecoverableState()) {
+ existingStream = null;
+ }
+ // Before search for the next connection to attach, clear the finalized connections
+ // first so that they will not be selected.
+ clearFinalizedConnectionWorker();
+ // Try to create or find another existing stream to reuse.
+ ConnectionWorker createdOrExistingConnection = null;
+ try {
+ createdOrExistingConnection =
+ createOrReuseConnectionWorker(streamWriter, existingStream);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ // Update connection to write stream relationship.
+ connectionToWriteStream.computeIfAbsent(
+ createdOrExistingConnection, (ConnectionWorker k) -> new HashSet<>());
+ connectionToWriteStream.get(createdOrExistingConnection).add(streamWriter);
+ return createdOrExistingConnection;
+ });
+ } finally {
+ lock.unlock();
+ }
+ return connectionWorker;
+ }
+
+ /** Distributes the writing of a message to an underlying connection. */
+ ApiFuture append(
+ StreamWriter streamWriter, AppendRowsData rows, long offset, String uniqueRequestId) {
+ // We are in multiplexing mode after entering the following logic.
+ ConnectionWorker connectionWorker = getConnectionWorker(streamWriter);
+ Stopwatch stopwatch = Stopwatch.createStarted();
+ ApiFuture responseFuture =
+ connectionWorker.append(streamWriter, rows, offset, uniqueRequestId);
+ return ApiFutures.transform(
+ responseFuture,
+ // Add callback for update schema
+ (response) -> {
+ if (response.getWriteStream() != "" && response.hasUpdatedSchema()) {
+ tableNameToUpdatedSchema.put(
+ response.getWriteStream(),
+ TableSchemaAndTimestamp.create(System.nanoTime(), response.getUpdatedSchema()));
+ }
+ return response;
+ },
+ MoreExecutors.directExecutor());
+ }
+
+ @VisibleForTesting
+ Attributes getTelemetryAttributes(StreamWriter streamWriter) {
+ ConnectionWorker connectionWorker = getConnectionWorker(streamWriter);
+ return connectionWorker.getTelemetryAttributes();
+ }
+
+ /**
+ * Create a new connection if we haven't reached current maximum, or reuse an existing connection
+ * with least load.
+ */
+ private ConnectionWorker createOrReuseConnectionWorker(
+ StreamWriter streamWriter, ConnectionWorker existingConnectionWorker) throws IOException {
+ String streamReference = streamWriter.getStreamName();
+ if (connectionWorkerPool.size() < currentMaxConnectionCount) {
+ // Always create a new connection if we haven't reached current maximum.
+ return createConnectionWorker(
+ streamWriter.getStreamName(),
+ streamWriter.getLocation(),
+ streamWriter.getWriterSchema(),
+ streamWriter.getFullTraceId());
+ } else {
+ ConnectionWorker existingBestConnection =
+ pickBestLoadConnection(
+ enableTesting ? Load.TEST_LOAD_COMPARATOR : Load.LOAD_COMPARATOR,
+ ImmutableList.copyOf(connectionWorkerPool));
+ if (!existingBestConnection.getLoad().isOverwhelmed()) {
+ return existingBestConnection;
+ } else if (currentMaxConnectionCount < settings.maxConnectionsPerRegion()) {
+ // At this point, we have reached the connection cap and the selected connection is
+ // overwhelmed, we can try scale up the connection pool.
+ // The connection count will go up one by one until `maxConnectionsPerPool` is reached.
+ currentMaxConnectionCount += 1;
+ if (currentMaxConnectionCount > settings.maxConnectionsPerRegion()) {
+ currentMaxConnectionCount = settings.maxConnectionsPerRegion();
+ }
+ return createConnectionWorker(
+ streamWriter.getStreamName(),
+ streamWriter.getLocation(),
+ streamWriter.getWriterSchema(),
+ streamWriter.getFullTraceId());
+ } else {
+ // Stick to the original connection if all the connections are overwhelmed.
+ if (existingConnectionWorker != null) {
+ return existingConnectionWorker;
+ }
+ // If we are at this branch, it means we reached the maximum connections.
+ return existingBestConnection;
+ }
+ }
+ }
+
+ private void clearFinalizedConnectionWorker() {
+ Set connectionWorkerSet = new HashSet<>();
+ for (ConnectionWorker existingWorker : connectionWorkerPool) {
+ if (existingWorker.isConnectionInUnrecoverableState()) {
+ connectionWorkerSet.add(existingWorker);
+ }
+ }
+ for (ConnectionWorker workerToRemove : connectionWorkerSet) {
+ connectionWorkerPool.remove(workerToRemove);
+ }
+ }
+
+ /** Select out the best connection worker among the given connection workers. */
+ static ConnectionWorker pickBestLoadConnection(
+ Comparator comparator, List connectionWorkerList) {
+ if (connectionWorkerList.isEmpty()) {
+ throw new IllegalStateException(
+ String.format(
+ "Bug in code! At least one connection worker should be passed in "
+ + "pickSemiBestLoadConnection(...)"));
+ }
+ // Compare all connection workers to find the connection worker with the smallest load.
+ // Loop and find the connection with the least load.
+ // The load comparision and computation process
+ int currentBestIndex = 0;
+ Load currentBestLoad = connectionWorkerList.get(currentBestIndex).getLoad();
+ for (int i = 1; i < connectionWorkerList.size(); i++) {
+ Load loadToCompare = connectionWorkerList.get(i).getLoad();
+ if (comparator.compare(loadToCompare, currentBestLoad) <= 0) {
+ currentBestIndex = i;
+ currentBestLoad = loadToCompare;
+ }
+ }
+ return connectionWorkerList.get(currentBestIndex);
+ }
+
+ /**
+ * Creates a single connection worker.
+ *
+ *
Note this function need to be thread-safe across different stream reference but no need for
+ * a single stream reference. This is because createConnectionWorker(...) is called via
+ * computeIfAbsent(...) which is at most once per key.
+ */
+ private ConnectionWorker createConnectionWorker(
+ String streamName,
+ String location,
+ AppendFormats.AppendRowsSchema writeSchema,
+ String fullTraceId)
+ throws IOException {
+ if (enableTesting) {
+ // Though atomic integer is super lightweight, add extra if check in case adding future logic.
+ testValueCreateConnectionCount.getAndIncrement();
+ }
+ ConnectionWorker connectionWorker =
+ new ConnectionWorker(
+ streamName,
+ location,
+ writeSchema,
+ maxInflightRequests,
+ maxInflightBytes,
+ maxRetryDuration,
+ limitExceededBehavior,
+ fullTraceId,
+ compressorName,
+ clientSettings,
+ retrySettings,
+ enableRequestProfiler,
+ enableOpenTelemetry,
+ /* isMultiplexing= */ true);
+ connectionWorkerPool.add(connectionWorker);
+ log.info(
+ String.format(
+ "Scaling up new connection for stream name: %s, pool size after scaling up %d",
+ streamName, connectionWorkerPool.size()));
+ return connectionWorker;
+ }
+
+ /**
+ * Reports the close of the given write stream.
+ *
+ *
The corresponding worker is not closed until there is no stream reference is targeting to
+ * that worker.
+ */
+ void close(StreamWriter streamWriter) {
+ lock.lock();
+ try {
+ streamWriterToConnection.remove(streamWriter);
+ // Since it's possible some other connections may have served this writeStream, we
+ // iterate and see whether it's also fine to close other connections.
+ Set connectionToRemove = new HashSet<>();
+ for (ConnectionWorker connectionWorker : connectionToWriteStream.keySet()) {
+ if (connectionToWriteStream.containsKey(connectionWorker)) {
+ connectionToWriteStream.get(connectionWorker).remove(streamWriter);
+ if (connectionToWriteStream.get(connectionWorker).isEmpty()) {
+ connectionWorker.close();
+ connectionWorkerPool.remove(connectionWorker);
+ connectionToRemove.add(connectionWorker);
+ }
+ }
+ }
+ log.info(
+ String.format(
+ "During closing of writeStream for %s with writer id %s, we decided to close %s "
+ + "connections, pool size after removal $s",
+ streamWriter.getStreamName(),
+ streamWriter.getWriterId(),
+ connectionToRemove.size(),
+ connectionToWriteStream.size() - 1));
+ connectionToWriteStream.keySet().removeAll(connectionToRemove);
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ /** Fetch the wait seconds from corresponding worker. */
+ long getInflightWaitSeconds(StreamWriter streamWriter) {
+ lock.lock();
+ try {
+ ConnectionWorker connectionWorker = streamWriterToConnection.get(streamWriter);
+ if (connectionWorker == null) {
+ return 0;
+ } else {
+ return connectionWorker.getInflightWaitSeconds();
+ }
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ TableSchemaAndTimestamp getUpdatedSchema(StreamWriter streamWriter) {
+ return tableNameToUpdatedSchema.getOrDefault(streamWriter.getStreamName(), null);
+ }
+
+ /** Enable Test related logic. */
+ @VisibleForTesting
+ static void enableTestingLogic() {
+ enableTesting = true;
+ }
+
+ /** Returns how many times createConnectionWorker(...) is called. */
+ int getCreateConnectionCount() {
+ return testValueCreateConnectionCount.get();
+ }
+
+ int getTotalConnectionCount() {
+ return connectionWorkerPool.size();
+ }
+
+ FlowController.LimitExceededBehavior limitExceededBehavior() {
+ return limitExceededBehavior;
+ }
+
+ BigQueryWriteSettings bigQueryWriteSettings() {
+ return clientSettings;
+ }
+
+ static String toTableName(String streamName) {
+ Matcher matcher = STREAM_NAME_PATTERN.matcher(streamName);
+ Preconditions.checkArgument(matcher.matches(), "Invalid stream name: %s.", streamName);
+ return "projects/"
+ + matcher.group(1)
+ + "/datasets/"
+ + matcher.group(2)
+ + "/tables/"
+ + matcher.group(3);
+ }
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/Exceptions.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/Exceptions.java
new file mode 100644
index 000000000000..012795f5421f
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/Exceptions.java
@@ -0,0 +1,458 @@
+/*
+ * Copyright 2026 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.api.gax.grpc.GrpcStatusCode;
+import com.google.common.collect.ImmutableMap;
+import com.google.protobuf.Any;
+import com.google.protobuf.InvalidProtocolBufferException;
+import io.grpc.Status;
+import io.grpc.StatusRuntimeException;
+import io.grpc.protobuf.StatusProto;
+import java.time.Duration;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.annotation.Nullable;
+
+/** Exceptions for Storage Client Libraries. */
+public final class Exceptions {
+ /** Main Storage Exception. Might contain map of streams to errors for that stream. */
+ public static class StorageException extends StatusRuntimeException {
+
+ private final ImmutableMap errors;
+ private final String streamName;
+ private final Long expectedOffset;
+ private final Long actualOffset;
+
+ private StorageException() {
+ this(null, null, null, null, ImmutableMap.of());
+ }
+
+ private StorageException(
+ @Nullable Status grpcStatus,
+ @Nullable String streamName,
+ @Nullable Long expectedOffset,
+ @Nullable Long actualOffset,
+ ImmutableMap errors) {
+ super(grpcStatus);
+ this.streamName = streamName;
+ this.expectedOffset = expectedOffset;
+ this.actualOffset = actualOffset;
+ this.errors = errors;
+ }
+
+ public ImmutableMap getErrors() {
+ return errors;
+ }
+
+ public String getStreamName() {
+ return streamName;
+ }
+
+ public long getExpectedOffset() {
+ return expectedOffset;
+ }
+
+ public long getActualOffset() {
+ return actualOffset;
+ }
+ }
+
+ /**
+ * The write stream has already been finalized and will not accept further appends or flushes. To
+ * send additional requests, you will need to create a new write stream via CreateWriteStream.
+ */
+ public static final class StreamFinalizedException extends StorageException {
+ protected StreamFinalizedException(Status grpcStatus, String name) {
+ super(grpcStatus, name, null, null, ImmutableMap.of());
+ }
+ }
+
+ /**
+ * There was a schema mismatch due to bigquery table with fewer fields than the input message.
+ * This can be resolved by updating the table's schema with the message schema.
+ */
+ public static final class SchemaMismatchedException extends StorageException {
+ protected SchemaMismatchedException(Status grpcStatus, String name) {
+ super(grpcStatus, name, null, null, ImmutableMap.of());
+ }
+ }
+
+ /**
+ * Offset already exists. This indicates that the append request attempted to write data to an
+ * offset before the current end of the stream. This is an expected exception when ExactOnce is
+ * enforced. You can safely ignore it, and keep appending until there is new data to append.
+ */
+ public static final class OffsetAlreadyExists extends StorageException {
+ protected OffsetAlreadyExists(
+ Status grpcStatus, String name, Long expectedOffset, Long actualOffset) {
+ super(grpcStatus, name, expectedOffset, actualOffset, ImmutableMap.of());
+ }
+ }
+
+ /**
+ * Offset out of range. This indicates that the append request is attempting to write data to a
+ * point beyond the current end of the stream. To append data successfully, you must either
+ * specify the offset corresponding to the current end of stream, or omit the offset from the
+ * append request. It usually means a bug in your code that introduces a gap in appends.
+ */
+ public static final class OffsetOutOfRange extends StorageException {
+ protected OffsetOutOfRange(
+ Status grpcStatus, String name, Long expectedOffset, Long actualOffset) {
+ super(grpcStatus, name, expectedOffset, actualOffset, ImmutableMap.of());
+ }
+ }
+
+ /**
+ * The stream is not found. Possible causes include incorrectly specifying the stream identifier
+ * or attempting to use an old stream identifier that no longer exists. You can invoke
+ * CreateWriteStream to create a new stream.
+ */
+ public static final class StreamNotFound extends StorageException {
+ protected StreamNotFound(Status grpcStatus, String name) {
+ super(grpcStatus, name, null, null, ImmutableMap.of());
+ }
+ }
+
+ private static StorageError toStorageError(com.google.rpc.Status rpcStatus) {
+ for (Any detail : rpcStatus.getDetailsList()) {
+ if (detail.is(StorageError.class)) {
+ try {
+ return detail.unpack(StorageError.class);
+ } catch (InvalidProtocolBufferException protoException) {
+ throw new IllegalStateException(protoException);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Converts a c.g.rpc.Status into a StorageException, if possible. Examines the embedded
+ * StorageError, and potentially returns a {@link StreamFinalizedException} or {@link
+ * SchemaMismatchedException} (both derive from StorageException). If there is no StorageError, or
+ * the StorageError is a different error it will return NULL.
+ */
+ @Nullable
+ public static StorageException toStorageException(
+ com.google.rpc.Status rpcStatus, Throwable exception) {
+ if (rpcStatus == null) {
+ return null;
+ }
+ StorageError error = toStorageError(rpcStatus);
+ Status grpcStatus =
+ Status.fromCodeValue(rpcStatus.getCode()).withDescription(rpcStatus.getMessage());
+ if (error == null) {
+ return null;
+ }
+ String streamName = error.getEntity();
+ // The error message should have Entity but it's missing from the message for
+ // OFFSET_ALREADY_EXISTS
+ // TODO: Simplify the logic below when backend fixes passing Entity for OFFSET_ALREADY_EXISTS
+ // error
+ String errorMessage =
+ error.getErrorMessage().indexOf("Entity") > 0
+ ? error.getErrorMessage().substring(0, error.getErrorMessage().indexOf("Entity")).trim()
+ : error.getErrorMessage().trim();
+
+ // Ensure that erro message has the desirable pattern for parsing
+ String errormessagePatternString = "expected offset [0-9]+, received [0-9]+";
+ Pattern errorMessagePattern = Pattern.compile(errormessagePatternString);
+ Matcher errorMessageMatcher = errorMessagePattern.matcher(errorMessage);
+
+ Long expectedOffet;
+ Long actualOffset;
+ if (!errorMessageMatcher.find()) {
+ expectedOffet = -1L;
+ actualOffset = -1L;
+ } else {
+ expectedOffet =
+ Long.parseLong(
+ errorMessage.substring(
+ errorMessage.lastIndexOf("offset") + 7, errorMessage.lastIndexOf(",")));
+ actualOffset = Long.parseLong(errorMessage.substring(errorMessage.lastIndexOf(" ") + 1));
+ }
+ switch (error.getCode()) {
+ case STREAM_FINALIZED:
+ return new StreamFinalizedException(grpcStatus, streamName);
+
+ case STREAM_NOT_FOUND:
+ return new StreamNotFound(grpcStatus, streamName);
+
+ case SCHEMA_MISMATCH_EXTRA_FIELDS:
+ return new SchemaMismatchedException(grpcStatus, streamName);
+
+ case OFFSET_OUT_OF_RANGE:
+ return new OffsetOutOfRange(grpcStatus, streamName, expectedOffet, actualOffset);
+
+ case OFFSET_ALREADY_EXISTS:
+ return new OffsetAlreadyExists(grpcStatus, streamName, expectedOffet, actualOffset);
+
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Converts a Throwable into a StorageException, if possible. Examines the embedded error message,
+ * and potentially returns a {@link StreamFinalizedException} or {@link SchemaMismatchedException}
+ * (both derive from StorageException). If there is no StorageError, or the StorageError is a
+ * different error it will return NULL.
+ */
+ @Nullable
+ public static StorageException toStorageException(Throwable exception) {
+ com.google.rpc.Status rpcStatus = StatusProto.fromThrowable(exception);
+ return toStorageException(rpcStatus, exception);
+ }
+
+ /**
+ * This class has a typo in the name. It will be removed soon. Please use {@link
+ * AppendSerializationError}
+ */
+ public static class AppendSerializtionError extends StatusRuntimeException {
+ private final Map rowIndexToErrorMessage;
+ private final String streamName;
+
+ public AppendSerializtionError(
+ int codeValue,
+ String description,
+ String streamName,
+ Map rowIndexToErrorMessage) {
+ super(Status.fromCodeValue(codeValue).withDescription(description));
+ this.rowIndexToErrorMessage = rowIndexToErrorMessage;
+ this.streamName = streamName;
+ }
+
+ public Map getRowIndexToErrorMessage() {
+ return rowIndexToErrorMessage;
+ }
+
+ public String getStreamName() {
+ return streamName;
+ }
+ }
+
+ /**
+ * This exception is thrown from {@link SchemaAwareStreamWriter#append(Iterable)} when the client
+ * side Proto serialization fails. It can also be thrown by the server in case rows contains
+ * invalid data. The exception contains a Map of indexes of faulty rows and the corresponding
+ * error message.
+ */
+ public static class AppendSerializationError extends AppendSerializtionError {
+
+ public AppendSerializationError(
+ int codeValue,
+ String description,
+ String streamName,
+ Map rowIndexToErrorMessage) {
+ super(codeValue, description, streamName, rowIndexToErrorMessage);
+ }
+ }
+
+ /** This exception is thrown from proto converter to wrap the row index to error mapping. */
+ static class RowIndexToErrorException extends IllegalArgumentException {
+ Map rowIndexToErrorMessage;
+
+ boolean hasDataUnknownError;
+
+ public RowIndexToErrorException(
+ Map rowIndexToErrorMessage, boolean hasDataUnknownError) {
+ this.rowIndexToErrorMessage = rowIndexToErrorMessage;
+ this.hasDataUnknownError = hasDataUnknownError;
+ }
+
+ // This message should not be exposed to the user directly.
+ // Please examine individual row's error through `rowIndexToErrorMessage`.
+ public String getMessage() {
+ return "The map of row index to error message is " + rowIndexToErrorMessage.toString();
+ }
+
+ public boolean hasDataUnknownError() {
+ return hasDataUnknownError;
+ }
+ }
+
+ /** This exception is used internally to handle field level parsing errors. */
+ public static class FieldParseError extends IllegalArgumentException {
+ private final String fieldName;
+ private final String bqType;
+ private final Throwable cause;
+
+ protected FieldParseError(String fieldName, String bqType, Throwable cause) {
+ this.fieldName = fieldName;
+ this.bqType = bqType;
+ this.cause = cause;
+ }
+
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public String getBqType() {
+ return bqType;
+ }
+
+ public Throwable getCause() {
+ return cause;
+ }
+
+ public String getMessage() {
+ return cause.getMessage();
+ }
+ }
+
+ /**
+ * This writer instance has either been closed by the user explicitly, or has encountered
+ * non-retriable errors.
+ *
+ *
To continue to write to the same stream, you will need to create a new writer instance.
+ */
+ public static final class StreamWriterClosedException extends StatusRuntimeException {
+ private final String streamName;
+ private final String writerId;
+
+ protected StreamWriterClosedException(Status grpcStatus, String streamName, String writerId) {
+ super(grpcStatus);
+ this.streamName = streamName;
+ this.writerId = writerId;
+ }
+
+ public String getStreamName() {
+ return streamName;
+ }
+
+ public String getWriterId() {
+ return writerId;
+ }
+ }
+
+ /**
+ * If FlowController.LimitExceededBehavior is set to Block and inflight limit is exceeded, this
+ * exception will be thrown. If it is just a spike, you may retry the request. Otherwise, you can
+ * increase the inflight limit or create more StreamWriter to handle your traffic.
+ */
+ public static class InflightLimitExceededException extends StatusRuntimeException {
+ private final long currentLimit;
+ private final String writerId;
+
+ protected InflightLimitExceededException(
+ Status grpcStatus, String writerId, long currentLimit) {
+ super(grpcStatus);
+ this.currentLimit = currentLimit;
+ this.writerId = writerId;
+ }
+
+ public String getWriterId() {
+ return writerId;
+ }
+
+ public long getCurrentLimit() {
+ return currentLimit;
+ }
+ }
+
+ public static class InflightRequestsLimitExceededException
+ extends InflightLimitExceededException {
+ protected InflightRequestsLimitExceededException(String writerId, long currentLimit) {
+ super(
+ Status.fromCode(Status.Code.RESOURCE_EXHAUSTED)
+ .withDescription(
+ "Exceeds client side inflight buffer, consider add more buffer or open more"
+ + " connections. Current limit: "
+ + currentLimit),
+ writerId,
+ currentLimit);
+ }
+ }
+
+ public static class InflightBytesLimitExceededException extends InflightLimitExceededException {
+ protected InflightBytesLimitExceededException(String writerId, long currentLimit) {
+ super(
+ Status.fromCode(Status.Code.RESOURCE_EXHAUSTED)
+ .withDescription(
+ "Exceeds client side inflight buffer, consider add more buffer or open more"
+ + " connections. Current limit: "
+ + currentLimit),
+ writerId,
+ currentLimit);
+ }
+ }
+
+ /**
+ * This class is replaced by a generic one. It will be removed soon. Please use {@link
+ * DataHasUnknownFieldException}
+ */
+ public static final class JsonDataHasUnknownFieldException extends DataHasUnknownFieldException {
+ protected JsonDataHasUnknownFieldException(String jsonFieldName) {
+ super(jsonFieldName);
+ }
+ }
+
+ /**
+ * Input data object has unknown field to the schema of the SchemaAwareStreamWriter. User can
+ * either turn on IgnoreUnknownFields option on the SchemaAwareStreamWriter, or if they don't want
+ * the error to be ignored, they should recreate the SchemaAwareStreamWriter with the updated
+ * table schema.
+ */
+ public static class DataHasUnknownFieldException extends IllegalArgumentException {
+ private final String jsonFieldName;
+
+ public DataHasUnknownFieldException(String jsonFieldName) {
+ super(String.format("The source object has fields unknown to BigQuery: %s.", jsonFieldName));
+ this.jsonFieldName = jsonFieldName;
+ }
+
+ public String getFieldName() {
+ return jsonFieldName;
+ }
+ }
+
+ /**
+ * The connection was shut down because a callback was not received within the maximum wait time.
+ */
+ public static class MaximumRequestCallbackWaitTimeExceededException extends RuntimeException {
+ private final Duration callbackWaitTime;
+ private final String writerId;
+ private final Duration callbackWaitTimeLimit;
+
+ public MaximumRequestCallbackWaitTimeExceededException(
+ Duration callbackWaitTime, String writerId, Duration callbackWaitTimeLimit) {
+ super(
+ String.format(
+ "Request has waited in inflight queue for %sms for writer %s, "
+ + "which is over maximum wait time %s",
+ callbackWaitTime, writerId, callbackWaitTimeLimit.toString()));
+ this.callbackWaitTime = callbackWaitTime;
+ this.writerId = writerId;
+ this.callbackWaitTimeLimit = callbackWaitTimeLimit;
+ }
+
+ public Duration getCallbackWaitTime() {
+ return callbackWaitTime;
+ }
+
+ public String getWriterId() {
+ return writerId;
+ }
+
+ public Duration getCallbackWaitTimeLimit() {
+ return callbackWaitTimeLimit;
+ }
+ }
+
+ private Exceptions() {}
+}
diff --git a/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java
new file mode 100644
index 000000000000..1dcba090f095
--- /dev/null
+++ b/java-bigquerystorage/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java
@@ -0,0 +1,490 @@
+/*
+ * Copyright 2026 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.api.core.ApiFuture;
+import com.google.api.gax.batching.FlowControlSettings;
+import com.google.api.gax.core.CredentialsProvider;
+import com.google.api.gax.core.ExecutorProvider;
+import com.google.api.gax.retrying.RetrySettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
+import com.google.gson.JsonArray;
+import com.google.protobuf.Descriptors;
+import java.io.IOException;
+import java.time.Duration;
+import java.util.Map;
+import org.json.JSONArray;
+
+/**
+ * A StreamWriter that can write JSON data (JSONObjects) to BigQuery tables. The JsonStreamWriter is
+ * built on top of a StreamWriter, and it simply converts all JSON data to protobuf messages then
+ * calls StreamWriter's append() method to write to BigQuery tables. It maintains all StreamWriter
+ * functions, but also provides an additional feature: schema update support, where if the BigQuery
+ * table schema is updated, users will be able to ingest data on the new schema after some time (in
+ * order of minutes).
+ */
+public class JsonStreamWriter implements AutoCloseable {
+ private final SchemaAwareStreamWriter