github pg-sharding/spqr 3.1.0

4 hours ago

We are excited to announce SPQR 3.1.0!

This release focuses on production operations and reliability: improved redistribution tooling and recovery, connection pinning and PostgreSQL advisory lock support, stronger two-phase commit recovery, new key range management commands, extended protocol improvements, and better observability.

This release covers all changes from 3.0.0 to 3.1.0.

What's Changed

Data Redistribution & Recovery

Key Range & Shard Management

Advisory Locks & Connection Pinning

Two-Phase Commit (2PC)

  • Add __spqr__allow_autoprotect_2pc GUC by @reshke #2641
  • Improve transaction deployment error reporting by @reshke #2671
  • Add deployment context to transaction utilities by @reshke #2694
  • Improve 2PC recovery logic by @reshke #2865 #2866
  • Remove two-phase metadata for successfully reverted transactions by @reshke #2909
  • Remove transaction metadata for successfully committed 2PC transactions with eager cleanup by @reshke #2921
  • Add eager 2PC cleanup GUC and tests by @reshke #2920
  • Add transaction listing methods and extended two-phase transaction SHOW target by @reshke #2922
  • Optionally persist only 2PC transaction data in MemQDB by @EinKrebs #2924
  • Allow the 2PC watchdog to work without a backend rule by @EinKrebs #2925
  • Use compare-and-swap for transaction status changes by @EinKrebs #2926

Query Routing & Execution

  • Support in-router aggregate functions by @reshke #2754
  • Add default read-only transaction support by @reshke #2842
  • Add SPQR EXECUTE HOST FILTER by @reshke #2905
  • Fix query cancellation in multishard queries by @reshke #2703
  • Match catalog queries case-insensitively by @reshke #2732
  • Try already acquired routes for route-oblivious plans by @reshke #2930
  • Fix command tag handling for reference relation modifications by @reshke #2762

Extended Protocol & Portals

  • Invalidate portal description cache on parse by @reshke #2645
  • Fix multiple portal execution iterations with non-zero MaxRows by @reshke #2680
  • Fix portal suspension hazards for single-shard queries by @reshke #2682
  • Fix slice description for multi-slice virtual plans by @reshke #2779
  • Support extended protocol during query analysis by @reshke #2833
  • Support ParseComplete in xproto message copy by @reshke #2885
  • Fix dummy prepared statement parameter substitution by @reshke #2919
  • Hash parameter OIDs in prepared statement names by @reshke #2933
  • Fix INT2 bind parameter parsing and named portal binds by @reshke #2940

Console & SQL

  • Implement generic string GUCs by @reshke #2663
  • Add log_query router configuration option by @reshke #2702
  • Fix spqr-console handling of empty queries by @reshke #2791
  • Reject invalid UNITE KEY RANGE ALL / SPLIT KEY RANGE ALL commands by @reshke #2808
  • Improve console grammar and reject additional invalid SQL by @reshke #2798 #2814
  • Make SPQR_DEFAULT_ROUTE_BEHAVIOUR a generic string GUC by @reshke #2818
  • Make preferred execution engine a generic GUC by @reshke #2820
  • Add assign hooks for generic GUCs by @reshke #2826
  • Make SPQR_REPLY_NOTICE a generic GUC by @reshke #2836
  • Make __spqr__sharding_key a generic GUC by @reshke #2844
  • Make maintenance parameters generic GUCs by @reshke #2918
  • Make SHOW notice message format configurable through GUC by @reshke #2908

Monitoring & Observability

Configuration, Security & Networking

  • Add gRPC TLS configuration types and credential adapter by @Denchick #2748
  • Configure TSA recheck frequency through dbpool_tsa_recheck_period by @reshke #2849
  • Properly implement TSA checker timeouts by @reshke #2853
  • Do not hold pool lock while checking connections for TSA match by @reshke #2665
  • Redact secrets in configuration output by @Denchick #2845
  • Remove invalid pool settings from backend rules by @Denchick #2900
  • Add validation for empty shard on client connection by @Denchick #2726

Stability & Correctness

Documentation & CI

Full Changelog: 3.0.0...3.1.0

Don't miss a new spqr release

NewReleases is sending notifications on new releases.