fix: preserve native adapter features and correct main regressions - #829
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #829 +/- ##
==========================================
- Coverage 81.31% 81.15% -0.16%
==========================================
Files 521 521
Lines 78026 78073 +47
Branches 11224 11235 +11
==========================================
- Hits 63443 63362 -81
+ Misses 11138 11094 -44
- Partials 3445 3617 +172
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
cofin
force-pushed
the
fix/recent-merged-review
branch
2 times, most recently
from
September 28, 2026 14:11
31fb643 to
7adaf4f
Compare
cofin
force-pushed
the
fix/recent-merged-review
branch
from
September 28, 2026 19:25
7adaf4f to
825edc7
Compare
cofin
added a commit
that referenced
this pull request
Sep 29, 2026
## Summary Prepares the v0.65.0 release: - Bumps project version to `0.65.0` in `pyproject.toml` and updates `uv.lock`. - Updates `docs/changelog.rst` with the `v0.65.0` release notes covering all 14 PRs merged since `v0.64.0`: - IBM Db2 database adapter, SQLGlot dialect, and extension support (#811, #823). - Spanner and Spangres SQLGlot dialect isolation and AST support (#813). - Spanner adapter & store optimizations and release fixes (#814). - MySQL family adapter consolidation and data-dictionary reorganization (#821). - OracleDB adapter and store cleanup (#817, #823). - Native controls and performance optimizations for BigQuery (#812), PostgreSQL (#822), SQLite (#820), and MSSQL (#819). - Native Arrow capabilities and parse-once bindings (#818). - Fixture JSON export/load, conflict keys normalization, and upsert options (#824, #825, #826, #827). - Quoted and schema-qualified migration `version_table` identifiers (#815, #828, #829). - Builder CTE and column pruning ownership fixes (#829). ## Validation - `make docs` passed without warnings or errors. - `make lint` (ruff, prek, mypy, pyright, slotscheck, zizmor) passed with 0 errors. - Targeted unit tests passed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix connection cleanup, fixture JSON round trips, quoted migration identifiers, and shared SQL expression ownership on main. Preserve supported native adapter features and avoid redundant SQLGlot tree copies.
Changes
"true","null", and"[1]"across export/load, including SQLite. Match unknown columns by exact name while retaining sparse rows and upsert controls. Older pre-encoded object/array strings must be represented as fixture objects/arrays; the testing guide explains this ambiguity and migration.IF NOT EXISTSwithout adding a parsing stage. Invalidate cached row converters when the configured JSON deserializer changes, preserving mutable settings behavior.Retains the supported native adapter features and existing compiled-helper boundaries. No broad API redesign or dependency change. Includes focused regressions, fixture guidance, and unreleased notes.
Validation
Local verification deliberately excludes the full test matrix, database services, cloud runs, and a compiled-wheel rebuild. Hosted CI must validate those paths. The fixture format still represents SQL NULL and JSON null identically; this existing limitation is unchanged.
Asyncpg batching research
Asyncpg does not expose heterogeneous result-bearing pipelining. Native
executemanyrepeats one SQL template andfetchmanyflattens results; neither preserves arbitrary per-statement results and failure indices. A simple-query multi-command string also loses those results and changes transaction behavior. Keep the current stack semantics; no private protocol workaround or unsupported single-trip claim is introduced. See the upstream pipeline request and native API.Rebase validation: based on main
a1067c856, with branch source changes preserved. Reconciled changelog entries, checked release-history preservation, and passed the focused documentation audit and whitespace checks. No runtime suites were rerun for this documentation-only update.SQLGlot follow-up validation
Scoped ownership and generation tests passed: 304 core/builder/count cases, 67 builder cases, 2 cross-dialect immutability regressions, 47 Db2 cases, 143 adapter cases, and 49 fixture/migration cases. Scoped Ruff, formatting, Pyright, and whitespace checks passed. Independent correctness and quality reviews approved the final change. No benchmark speedup or compiled-wheel result is claimed; no database services or full suites were run. Existing adapter rewrite-cache misses and Spanner script classification still have separate parsing paths and were not redesigned by this copy-ownership change.
SQL Server restoration follow-up: reproduced ALTER/commit failures for both adapters before the fix; 15 focused migration-schema tests passed after it. Scoped Ruff, formatting, Pyright, and whitespace checks passed, followed by independent correctness and quality review. Existing public migration hooks remain; broader driver API removals are review proposals only.
Spanner cache follow-up: one regression reproduced the stale deserializer with reused native metadata, then passed after callable-identity invalidation. Scoped mypy, Ruff, formatting, and whitespace checks passed; independent correctness and quality review approved. No settings freeze, new public API, or additional cache was introduced.
CI repair: register the consumed BigQuery
storage_write_stream_typesetting in the shared feature contract (exact regression passed). Narrow the parsed SELECT and set-operation types in the Db2 ownership test; scoped mypy and Pyright pass. Docker pre-pulls retry up to three times with bounded backoff and preserve failure after exhaustion. YAML, shell syntax, scoped zizmor, and fake-command success/retry/failure checks passed. No local database services or broad test suites were run. Fresh hosted checks are pending on the updated head.