Skip to content

Use Google's BigQuery JDBC driver instead of the Simba driver - #2547

Merged
p-hoffmann merged 2 commits into
webapi-3.0from
p-hoffmann/bigquery-google-jdbc-driver
Sep 24, 2026
Merged

p-hoffmann merged 2 commits into
webapi-3.0from
p-hoffmann/bigquery-google-jdbc-driver

Conversation

@p-hoffmann

Copy link
Copy Markdown
Member

No description provided.

…imba driver

The webapi-bigquery profile now pulls com.google.cloud:google-cloud-bigquery-jdbc
(Apache-2.0, shaded 'all' jar), so no manual driver download or local install
is needed. Existing Simba-style connection strings (ProjectId, OAuthType,
OAuthServiceAcctEmail, OAuthPvtKeyPath) are accepted unchanged.
@p-hoffmann
p-hoffmann merged commit 34cadca into webapi-3.0 Sep 24, 2026
6 checks passed
@p-hoffmann
p-hoffmann deleted the p-hoffmann/bigquery-google-jdbc-driver branch September 24, 2026 14:14
p-hoffmann added a commit to OHDSI/trex that referenced this pull request Sep 24, 2026
WebAPI 34cadca0 (OHDSI/WebAPI#2547) swapped the classpath-provided Simba
driver for com.google.cloud:google-cloud-bigquery-jdbc, but it declares it
in the `webapi-bigquery` profile. A profile is re-evaluated, not baked into
the installed pom, so consuming WebAPI as a dependency never carries that
driver through however the install was invoked — the wrapper module has to
declare it, which is what this does (same coordinates, `all` classifier,
runtime scope, transitive deps excluded because the shaded jar carries them).

Without a driver on the image's classpath a BigQuery Source cannot connect:
DataAccessConfig probes each supported driver with Class.forName and skips
the ones that are absent, and a closed-world native image cannot pick one up
from disk at runtime the way the servlet deployment could. Registering the
driver class for reflection is what makes that Class.forName resolve.

The shaded jar ships its own META-INF/native-image metadata for the
gRPC/Netty/gax/OpenTelemetry stack it bundles, so native-image picks those
hints up on its own; only the driver class needs a hand-written entry.

Note this is the JDBC path WebAPI uses for a BigQuery Source. bao's datamart
cache is unaffected: BigQuery is a native-scanner dialect there and goes
through DuckDB's bigquery extension, not JDBC.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant