Skip to content

feat: add Google BigQuery driver plugin#480

Open
datlechin wants to merge 4 commits intomainfrom
feat/bigquery-driver
Open

feat: add Google BigQuery driver plugin#480
datlechin wants to merge 4 commits intomainfrom
feat/bigquery-driver

Conversation

@datlechin
Copy link
Copy Markdown
Collaborator

Summary

  • New BigQuery driver plugin (Plugins/BigQueryDriverPlugin/, 9 files, ~3,500 lines) as a registry plugin
  • Auth: Service Account JSON (JWT/RS256), Application Default Credentials, Impersonated Service Account, OAuth 2.0 browser flow
  • Full GoogleSQL support: dataset browsing, table structure (STRUCT/ARRAY/nested types), query execution via Jobs API, data editing (INSERT/UPDATE/DELETE), dry run cost estimation
  • Query cost displayed after every execution (bytes processed, billed, estimated USD) via new PluginQueryResult.statusMessage field
  • Tagged query system for pagination (BigQuery has no OFFSET), ROW_NUMBER() windowing for ad-hoc SQL
  • 429 rate limit retry with exponential backoff, configurable query timeout, schema cache with 5-min TTL
  • 30 unit tests (QueryBuilder, StatementGenerator, TypeMapper)
  • Docs page, CHANGELOG entry, status tracker

Test plan

  • Build succeeds: xcodebuild -project TablePro.xcodeproj -scheme TablePro build -skipPackagePluginValidation
  • All 30 BigQuery tests pass: xcodebuild test -only-testing:TableProTests/BigQuery*
  • Connect with Service Account JSON key
  • Connect with ADC (gcloud auth application-default login)
  • Connect with OAuth (browser flow)
  • Browse datasets and tables in sidebar
  • Execute SELECT query, verify cost shown in status bar
  • Execute INSERT/UPDATE/DELETE, verify rowsAffected + cost in success view
  • Dry Run (EXPLAIN) shows bytes processed and estimated cost
  • Browse table with pagination (page 2+)
  • Filter and search on table data
  • Disconnect and reconnect cleanly

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