Skip to content

[Go] adbc.bigquery.sql.query.dry_run fails on every query before returning stats #198

@AlphaJack

Description

@AlphaJack

Setting the statement option adbc.bigquery.sql.query.dry_run = "true" makes every query -- even SELECT 1 -- fail at execute time, before any dry-run statistics (totalBytesProcessed) are returned. The same query without the option succeeds, and the same dry run via the raw BigQuery REST API succeeds.

Root cause: a dry run never creates a job -- the REST response's jobReference has no jobId and stats come back synchronously -- so the driver's post-execute job-status poll has nothing to poll and errors out after the dry run already succeeded server-side.

Environment

  • Foundry BigQuery driver v1.11.2 (via dbc), macOS arm64
  • adbc-driver-manager (Python), service-account auth (json_credential_string)

Reproduction

Attached mwe.py (self-contained, uv run) runs the same dry-run query twice: raw REST (control) and the driver. creds.example.json shows the expected credentials shape.

creds.example.json
mwe.py

$ ./mwe.py creds.json ./libadbc_driver_bigquery.dylib "SELECT * FROM `<project>.<dataset>.<table>`"
rest api: OK    totalBytesProcessed=124016700 jobReference={'projectId': '<project>', 'location': 'EU'}
driver  : FAIL  ProgrammingError: INVALID_ARGUMENT: [bq] Could not poll job status: 400 Bad Request: Invalid field selection status

Same outcome for SELECT 1 and SELECT count(*) (REST: totalBytesProcessed=0). Without dry_run, the driver runs all queries fine.

Expected

execute_query returns an empty result whose schema metadata carries the dry-run statistics, per the upstream option docs: "A valid query will return a mostly empty response with some processing statistics."

Notes

  • Upstream adbc-driver-bigquery (apache/arrow-adbc) 1.8.0 and 1.11.0 fail too, different symptom: GET /bigquery/v2/projects/<project>/queries/?alt=json&... -- empty job ID segment -> Google HTML 404. Bug predates the fork; both code paths unconditionally poll/fetch after a dry run that produces no pollable job.
  • dry_run is absent from docs.adbc-drivers.org/drivers/bigquery; the option string exists in the binary and is documented upstream.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions