Repository navigation
chore: release 1.0.0-rc.13 - #185
Merged
Merged
Conversation
Bumps version to 1.0.0-rc.13 in Cargo.toml, Cargo.lock, .tabularium, and CHANGELOG.md. ### Included since rc.12 **Fixed:** - A `prepare` failure inside an open transaction no longer cascades to a confusing 25P02 on every subsequent statement in the same session (#170, #180). The fix gates the `.ok()` prepare-swallow on `in_transaction`: inside an open transaction it short-circuits (ROLLBACK + surface the prepare's real SQLSTATE + signal `txn_aborted=true`); outside a transaction the recoverable swallow is preserved (a 42P05 on a real PgBouncer bare batch). The error message tells the user the transaction was rolled back. - A `query_typed`/`execute_typed` runtime error inside an open transaction no longer re-pins the aborted connection and 25P02-cascades the next statement (#181, #184). The sibling of #170 from a different source: classifies on the error's `as_db_error()` (a server `DbError` always aborts an open transaction; non-`DbError` conservatively assumed aborted). Both error arms ROLLBACK + surface the real error + signal `txn_aborted=true`, gated on `transaction_effect(query)` being neither `Closes` nor `Chains` so a failed `COMMIT`/`COMMIT AND CHAIN` doesn't get a spurious ROLLBACK + notice. Closes the 25P02 cascade end-to-end (#170 prepare-failure + #181 runtime-error = the two faces). **Dependencies:** - `uuid` 1.28.0 → 1.29.0 (#182). Additive only (versioned `NonNilUuid` constructors); the existing `Uuid` API is untouched. - `tokio` 1.53.3 → 1.54.1 (#183). The 1.54.1 patch reverts the only `time`-subsystem change from 1.54.0, so `tokio::time::timeout` behavior is back to 1.53.3-equivalent — the bound the #170/#181 fixes rely on. MSRV bumped to 1.85. **Docs:** - Centered the PostgreSQL banner, converted to PNG; fixed a stale Tabularis logo URL (#179).
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Version bump to Files Reviewed (4 files)
Reviewed by claude-sonnet-5.5 · Input: 250 · Output: 1.5K · Cached: 176.6K |
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.
Bumps version to
1.0.0-rc.13inCargo.toml,Cargo.lock,.tabularium, andCHANGELOG.md.Included since rc.12
Fixed
Direct-path pre-resolve .ok() swallow can reintroduce the hang; no plugin-level timeout (asymmetry with pooler path) #170 / fix: surface prepare errors inside an open transaction instead of cascading to 25P02 (#170) #180 — A
preparefailure inside an open transaction no longer cascades to a confusing 25P02 ("current transaction is aborted") on every subsequent statement in the same session. The fix gates the.ok()prepare-swallow onin_transaction: inside an open transaction it short-circuits (ROLLBACK + surface the prepare's real SQLSTATE + signaltxn_aborted=true); outside a transaction the recoverable swallow is preserved (a 42P05 on a real PgBouncer bare batch). The error message tells the user the transaction was rolled back.Runtime query_typed/execute_typed errors inside an open transaction still re-pin the aborted connection (the #170 cascade class, from a different source) #181 / fix: close the 25P02 cascade for query_typed/execute_typed runtime errors inside an open transaction (#181) #184 — A
query_typed/execute_typedruntime error inside an open transaction no longer re-pins the aborted connection and 25P02-cascades the next statement. The sibling of Direct-path pre-resolve .ok() swallow can reintroduce the hang; no plugin-level timeout (asymmetry with pooler path) #170 from a different source: classifies on the error'sas_db_error()(a serverDbErroralways aborts an open transaction; non-DbErrorconservatively assumed aborted). Both error arms ROLLBACK + surface the real error + signaltxn_aborted=true, gated ontransaction_effect(query)being neitherClosesnorChainsso a failedCOMMIT/COMMIT AND CHAINdoesn't get a spurious ROLLBACK + notice. Closes the 25P02 cascade end-to-end (Direct-path pre-resolve .ok() swallow can reintroduce the hang; no plugin-level timeout (asymmetry with pooler path) #170 prepare-failure + Runtime query_typed/execute_typed errors inside an open transaction still re-pin the aborted connection (the #170 cascade class, from a different source) #181 runtime-error = the two faces).Dependencies
uuid1.28.0 → 1.29.0. Additive only (versionedNonNilUuidconstructors); the existingUuidAPI is untouched. Semver-compatible.tokio1.53.3 → 1.54.1. The 1.54.1 patch reverts the onlytime-subsystem change from 1.54.0 (a timer regression), sotokio::time::timeoutbehavior is back to 1.53.3-equivalent — the bound the Direct-path pre-resolve .ok() swallow can reintroduce the hang; no plugin-level timeout (asymmetry with pooler path) #170/Runtime query_typed/execute_typed errors inside an open transaction still re-pin the aborted connection (the #170 cascade class, from a different source) #181 fixes rely on. All other 1.54.0 changes are additive or internal; none touch the APIs the plugin uses. MSRV bumped to 1.85.Docs
Verification
This is a version-bump + CHANGELOG commit (no behavior change). All four component PRs (#180, #184, #182, #183) landed green on CI. Pre-release local DB verification on the post-merge
main(the part CI can't give —client_live_testsisn't in CI):client_live_tests20/20 (in-process live; guards Failed connection attempt poisons the pool cache: retry with the correct password keeps failing #132/Bug: Regression in plugin v1.0.0-rc.10 table hangs while opening but works in v1.0.0-rc.8 #160/Query timeout followed by health-check disconnect after repeated cancellations #163/fix: pin backend for transaction-pooler result queries on non-builtin column types (#160, #163) #164/fix: pre-resolve column types on direct connections to stop enum-table hang (#166) #168/fix: pre-resolve column types on batch/session pooler path (#169) #172/fix: keep bare [SET/CREATE TEMP, SELECT] batch on the shared client on a transaction pooler (#173) #174/Direct-path pre-resolve .ok() swallow can reintroduce the hang; no plugin-level timeout (asymmetry with pooler path) #170/Runtime query_typed/execute_typed errors inside an open transaction still re-pin the aborted connection (the #170 cascade class, from a different source) #181)query_tests47/47, lib+bins 445live_db37/37 (stock PG) + 39/39--include-ignored(pgvector DB)#126cancel contract ✅,worker_starvation2/2 (fix: route ping/connect/cancel to dedicated lanes so stuck queries don't starve them (#167) #176),shutdown3/3 (Bug: Plugin process never exits after Tabularis quits if an RPC is in flight #155)