github pg-sharding/spqr 3.0.0

6 hours ago

We are excited to announce SPQR 3.0.0! All the goals outlined in the SPQR 3.0 Roadmap have been implemented — distributed and reference tables, distributed query support, and two-phase commit for DDL/migrations across shards.

There are no breaking changes between 2.9.x and 3.0.0. We are simply opening a new chapter for SPQR and moving forward.

This release covers all changes from 2.9.9 to 3.0.0, including intermediate patch releases: 2.9.10, 2.9.11, 2.9.12

What's Changed

JOIN Routing & CTE Support

  • Fix JOIN ON clause routing and add tests by @reshke #2365
  • Move tuple routing logic to separate function and add test for JOIN by @reshke #2408
  • Support LEFT and RIGHT join with aux-values multishard by @reshke #2409
  • Fix JOIN adjust logic & add tests by @reshke #2466
  • Support JOIN CTE adjust for transitive aux values routing by @reshke #2467
  • Support multiple AUX CTE with one common ancestor for JOIN adjust by @reshke #2468
  • Fix CTE alias referencing by @reshke #2415
  • Fix relation alias resolve and add regress test by @reshke #2543

Extended Protocol & Multi-Portal

  • Partially support multi-portal binding by @reshke #2519
  • Stub implementation for portal suspension by @reshke #2522
  • Use ProcessOneMsgCarefully for Describe by @reshke #2442
  • Remove custom processing in Execute by @reshke #2443
  • Fix pgproto message copy for simple query & parse by @reshke #2492
  • Greasify protocol negotiation in startup processing by @reshke #2608
  • Respect result format code in virtual pg_is_in_recovery() by @reshke #2517

Two-Phase Commit (2PC)

Implicit Transactions

Auto-Linearize for Multi-Shard DML

  • Auto-linearize hazard multi-shard upserts by @reshke #2512
  • Fix auto-linearize on INSERT INTO .. RETURNING by @reshke #2527
  • Reimplement dispatch linearize as plan hinting rather than GUC injection by @reshke #2560
  • Support correct command complete tag in multishard UPDATE by @reshke #2618 #2622
  • Fix multishard insert command complete tag by @reshke #2626

Data Transfer & Balancer

  • Allow context cancellation for data transfer workers by @reshke #2386
  • Allow to cancel data transfer task in any execution phase by @reshke #2390
  • Cancel data move task only on IMMEDIATE flag by @reshke #2456
  • Recheck key range status for in-flight data chunk by @reshke #2569
  • GUCify in-flight data access option by @reshke #2571
  • Do not perform parallel transactions on both shards in copyData by @EinKrebs #2627
  • Trace all data transfer goroutines in coordinator by @reshke #2385

Metadata & Key Range Management

Console & SQL Enhancements

Monitoring & Observability

spqr-monitor

Shard Management & Networking

Error Reporting

  • Modernize coding around error reporting by @reshke #2372
  • Switch errComplexQuery to use spqrerror infrastructure by @reshke #2414
  • Use SPQR-specific error format for general error report by @reshke #2433
  • Report key range id as errdetail by @reshke #2423
  • Set QUERY field in SPQR-specific error for simple proto by @reshke #2535

Configuration

  • Support UUID HASH column type in distributions by @Denchick #2588
  • Support disabling idle_in_transaction_session_timeout by @EinKrebs #2617
  • Support no-op distribution column update by @reshke #2621
  • Cache schema in relay and share between executions by @reshke #2524

Stability & Panic Fixes

Code Quality & Linting

Tests

Documentation

DevOps & CI

New Contributors

Full Changelog: 2.9.9...3.0.0

Don't miss a new spqr release

NewReleases is sending notifications on new releases.