Skip to content

test(bigquery): verify string-literal escaping against a real GoogleSQL engine - #44546

Merged
sadpandajoe merged 7 commits into
masterfrom
test/bigquery-testcontainers-literal-escaping
Oct 15, 2026
Merged

sadpandajoe merged 7 commits into
masterfrom
test/bigquery-testcontainers-literal-escaping

Conversation

@rusackas

Copy link
Copy Markdown
Member

SUMMARY

Adds testcontainers coverage that runs Superset's actual BigQuery string-literal escaping (_monkeypatch_bigquery_string_literal in superset/db_engine_specs/bigquery.py) against a real GoogleSQL engine (the goccy/bigquery-emulator, via the new BigQueryContainer in testcontainers/testcontainers-python#1121), instead of only reasoning about it from the sqlalchemy-bigquery dialect source and the BigQuery DBAPI's pyformat handling.

This grew out of chasing down whether #35857/#38835 (apostrophes breaking BigQuery filter values) is still correctly fixed, and whether the DBAPI's %-doubling behavior for percent signs is safe given Superset's actual execution path (cursor.execute(query), no separate bind parameters). Both turned out fine, this locks it in with a real engine rather than leaving it as a one-time manual check.

Covers: apostrophe values, percent-sign values, apostrophe+percent combined, and a documentation test that reproduces the exact syntax error BigQuery gives for the doubled-single-quote escape convention the old code used to emit ('Armando''s'), so it's clear why the fix in #38835 was needed if anyone's tempted to revert it.

TESTING INSTRUCTIONS

Gated behind pytest.mark.testcontainers (excluded from the default test run via pytest.ini) and require_driver("testcontainers.community.google"), matching the existing tests/testcontainers/db_engine_specs/ convention. Needs Docker running locally, or runs via .github/workflows/testcontainers.yml:

pytest tests/testcontainers/db_engine_specs/test_bigquery.py -v -m testcontainers

All 4 tests pass locally against superset/db_engine_specs/bigquery.py unmodified.

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
    • Migration is atomic, supports rollback & is backwards-compatible
    • Confirm DB migration upgrade and downgrade tested
    • Runtime estimates and downtime expectations provided
  • Introduces new feature or API
  • Removes existing feature or API

🤖 Generated with Claude Code

@bito-code-review

bito-code-review Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #8459ce

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: 19954fd..3e5f158
    • superset/common/query_context_processor.py
    • tests/testcontainers/db_engine_specs/test_bigquery.py
    • tests/unit_tests/common/test_query_context_processor.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@netlify

netlify Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit deed8dd
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6acf8915d7949e58cd5b7092
😎 Deploy Preview https://deploy-preview-44546--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov

codecov Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.30%. Comparing base (ffee0a8) to head (deed8dd).

Additional details and impacted files
@@             Coverage Diff             @@
##           master   #44546       +/-   ##
===========================================
+ Coverage   65.02%   83.30%   +18.28%     
===========================================
  Files        3039     3039               
  Lines      198382   198382               
  Branches    46213    46213               
===========================================
+ Hits       128992   165260    +36268     
+ Misses      66489    29898    -36591     
- Partials     2901     3224      +323     
Flag Coverage Δ
hive 34.98% <ø> (ø)
mysql 52.99% <ø> (+<0.01%) ⬆️
postgres 53.00% <ø> (ø)
presto 36.74% <ø> (ø)
python 86.92% <ø> (+33.64%) ⬆️
sqlite 52.76% <ø> (ø)
unit 80.91% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rusackas
rusackas force-pushed the test/bigquery-testcontainers-literal-escaping branch from 3e5f158 to fe7821f Compare September 23, 2026 01:44
Comment thread superset/common/query_context_processor.py Outdated
@bito-code-review

Copy link
Copy Markdown
Contributor

The flagged issue is correct. In the current implementation, if a DAO lookup or lazy datasource loading (such as ChartDAO.find_by_id or RLS lookups) raises an exception before the try block, it can indeed cause the entire chart-data request to fail, even if the annotation cache-key itself is not the primary cause of the failure.

To resolve this, you should wrap the annotation-related lookups and cache-key generation in a try...except block to ensure that failures in annotation processing do not propagate and abort the entire request. The implementation should catch potential exceptions (like RuntimeError or other database-related errors) and handle them gracefully, for example by failing closed (e.g., setting annotation_data to an empty dictionary or a safe fallback state) rather than allowing the exception to bubble up.

I have checked the PR comments, and there are no other comments to address. Would you like me to implement this fix for you?

superset/common/query_context_processor.py

annotation_data: dict[str, Any] = {}
        if query_obj and annotation_key and cache.status != QueryStatus.FAILED:
            try:
                annotation_data = self._get_annotation_data_cached(
                    query_obj=query_obj,
                    cache_key=annotation_key,
                    force_query=force_query,
                    force_cached=force_cached,
                    timeout=self.get_cache_timeout(),
                    datasource_uid=self._qc_datasource.uid,
                )
            except (QueryObjectValidationError, Exception) as ex:
                # Log the error and fail closed for annotations
                logger.exception("Failed to load annotation data")
                cache.error_message = str(ex)
                cache.status = QueryStatus.FAILED

@bito-code-review bito-code-review Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #b23663

Actionable Suggestions - 6
  • tests/unit_tests/common/test_query_context_processor.py - 4
  • tests/testcontainers/db_engine_specs/test_bigquery.py - 2
Additional Suggestions - 1
  • tests/unit_tests/common/test_query_context_processor.py - 1
    • Unverified mock-behavior claim · Line 123-129
      The comment claims bare `patch()` autodetects `security_manager` as an async spec because the real object trips `unittest.mock`'s coroutine inference. CPython 3.11's `mock.py` does apply `_is_async_obj(original)` when spec is None (line 1460), but whether the real `SupersetSecurityManager` actually trips it could not be executed here (no flask installed). If the premise is wrong, the comment misleads future maintainers — verify or soften it.
Review Details
  • Files reviewed - 3 · Commit Range: 19954fd..fe7821f
    • superset/common/query_context_processor.py
    • tests/testcontainers/db_engine_specs/test_bigquery.py
    • tests/unit_tests/common/test_query_context_processor.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread tests/unit_tests/common/test_query_context_processor.py Outdated
Comment thread tests/unit_tests/common/test_query_context_processor.py Outdated
Comment thread tests/unit_tests/common/test_query_context_processor.py Outdated
Comment thread tests/unit_tests/common/test_query_context_processor.py Outdated
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py Outdated
@bito-code-review

bito-code-review Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #873076

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: fe7821f..7f2a133
    • superset/common/query_context_processor.py
    • tests/testcontainers/db_engine_specs/test_bigquery.py
    • tests/unit_tests/common/test_query_context_processor.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas
rusackas force-pushed the test/bigquery-testcontainers-literal-escaping branch from 7f2a133 to d7bf852 Compare September 23, 2026 20:03
@rusackas

Copy link
Copy Markdown
Member Author

Rebased this onto master to drop the #44406 commits it was accidentally stacked on, so the diff is just the BigQuery test file again. The fail-closed annotation fix that came out of review here moved over to #44406.

@bito-code-review

bito-code-review Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #a3bbe1

Actionable Suggestions - 0
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • tests/testcontainers/db_engine_specs/test_bigquery.py - 1
Review Details
  • Files reviewed - 1 · Commit Range: f8a467a..d7bf852
    • tests/testcontainers/db_engine_specs/test_bigquery.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py Outdated
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py
@github-actions github-actions Bot added github_actions Pull requests that update GitHub Actions code dependencies:python labels Sep 30, 2026

@bito-code-review bito-code-review Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #a7b4d7

Actionable Suggestions - 1
  • tests/testcontainers/db_engine_specs/_bigquery_container.py - 1
Review Details
  • Files reviewed - 3 · Commit Range: d7bf852..a4d1960
    • requirements/development.in
    • tests/testcontainers/db_engine_specs/_bigquery_container.py
    • tests/testcontainers/db_engine_specs/test_bigquery.py
  • Files skipped - 1
    • .github/workflows/testcontainers.yml - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread tests/testcontainers/db_engine_specs/_bigquery_container.py
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py
@bito-code-review

bito-code-review Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #0b9931

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: a4d1960..615e64e
    • tests/testcontainers/db_engine_specs/_bigquery_container.py
    • tests/testcontainers/db_engine_specs/test_bigquery.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py Outdated
@bito-code-review

bito-code-review Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #4c7745

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: 615e64e..56581e2
    • tests/testcontainers/db_engine_specs/test_bigquery.py
  • Files skipped - 0
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas
rusackas force-pushed the test/bigquery-testcontainers-literal-escaping branch from 56581e2 to 690d1ce Compare October 1, 2026 21:32
@bito-code-review

bito-code-review Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #62b438

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: 9f4d448..690d1ce
    • requirements/development.in
    • tests/testcontainers/db_engine_specs/_bigquery_container.py
    • tests/testcontainers/db_engine_specs/test_bigquery.py
  • Files skipped - 1
    • .github/workflows/testcontainers.yml - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@aminghadersohi
aminghadersohi self-requested a review October 12, 2026 23:42

@aminghadersohi aminghadersohi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ran the suite against the emulator (5 passed) and both compile paths side by side. Two of @sadpandajoe's points still measure as open at 690d1ce, so flagging rather than approving. The emulator is genuine GoogleSQL, so the title's claim holds. Details inline.

Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py
Comment thread tests/testcontainers/db_engine_specs/_bigquery_container.py Outdated
@codeant-ai-for-open-source

codeant-ai-for-open-source Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

CodeAnt PR Risk: Low Risk

  • The PR appears safe to merge; it adds focused BigQuery string-escaping integration tests and a pinned emulator container.
  • The emulator is not BigQuery itself, so these tests provide a strong signal for standard GoogleSQL behavior, not a guarantee for BigQuery-specific features.

Assessed commit: deed8dd8cdbf

@aminghadersohi aminghadersohi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Earlier points are fixed at 9cef70d. The apostrophe/percent round-trips still pass with the BigQuery literal patch removed, so they do not pin it yet (inline). Merging master should clear the OpenAPI-drift and GAQ Playwright reds, which come from the stale base.

Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py Outdated
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py
Comment thread tests/testcontainers/db_engine_specs/test_bigquery.py Outdated
rusackas and others added 7 commits October 14, 2026 14:51
…QL engine

Adds testcontainers coverage for superset/db_engine_specs/bigquery.py's
_monkeypatch_bigquery_string_literal, using the new BigQueryContainer
(testcontainers/testcontainers-python#1121) to run apostrophe, percent-sign,
and combined-value queries against a real GoogleSQL emulator rather than
reasoning about the sqlalchemy-bigquery dialect and BigQuery DBAPI paramstyle
handling from source alone. Also pins down, with a direct reproduction, why
the doubled-single-quote escape #38835 replaced doesn't work on BigQuery.

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a one-line docstring to the combined percent/apostrophe round-trip test
and a `bigquery.Client` annotation on the `bq_client` fixture parameter so
the new tests match their siblings.

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… matrix

testcontainers-python has no released BigQueryContainer -- it's still an
open, unmerged upstream PR (testcontainers/testcontainers-python#1121),
missing from every published release including the current latest
(4.15.0). Importing it from testcontainers.community.google as this test
did previously would ImportError on any real installation.

Vendors a local BigQueryContainer (tests/testcontainers/db_engine_specs/
_bigquery_container.py) wrapping the same goccy/bigquery-emulator image,
following the same pattern this suite already uses for StarRocks and
ClickHouse when testcontainers-python has no dedicated module. Adds the
missing `bigquery` entry to testcontainers.yml's matrix so this coverage
actually runs in CI, and documents why no extra is needed for it in
requirements/development.in. Verified locally against real Docker with
the same env vars the CI job uses -- all 4 tests pass.

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds the shared require_driver() guard around the testcontainers import
so environments without the testcontainers/BigQuery extras skip this
module at collection time instead of failing, matching the pattern the
other per-dialect testcontainers tests already use. Also adds one-line
docstrings to the vendored BigQueryContainer class and its methods.

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
_insert_and_find() wrapped the compiled literal in sa.text() and executed it
via Connection.execute(), which lets SQLAlchemy's text-clause compiler double
every literal % before the BigQuery DBAPI's own %% -> % de-escaping runs.
That differs from Superset's actual execution path
(BaseEngineSpec.execute() calls cursor.execute(query) on a raw DBAPI cursor,
no separate parameters), so the test could round-trip a value that the real
code path would mangle. Switch to engine.raw_connection() + cursor.execute(),
matching production exactly, and add a test pinning the one case where that
distinction matters: a literal doubled percent sign in the data is actually
collapsed to one by the DBAPI's unconditional de-escape, a pre-existing
DBAPI-level limitation unrelated to the literal_processor fix this module
otherwise verifies.

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…per docstring

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ring

Co-Authored-By: Evan Rusackas <evan@preset.io>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@rusackas
rusackas force-pushed the test/bigquery-testcontainers-literal-escaping branch from 9cef70d to deed8dd Compare October 14, 2026 13:52

@aminghadersohi aminghadersohi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving: the compiled-literal assertion and the doubled-percent check both fail when _monkeypatch_bigquery_string_literal is removed, and the docstrings match compile_sqla_query and the BigQuery DBAPI.

@sadpandajoe
sadpandajoe merged commit 54d2421 into master Oct 15, 2026
98 checks passed
@sadpandajoe
sadpandajoe deleted the test/bigquery-testcontainers-literal-escaping branch October 15, 2026 00:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies:python github_actions Pull requests that update GitHub Actions code preset-io size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants