Repository navigation
Releases: pg-sharding/spqr
Release list
3.1.0
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
- Add
spqr-redistributorby @EinKrebs #2648 - Add checks to
spqr-redistributorby @EinKrebs #2675 - Add
spqr-redistributor generate-task runcommand by @EinKrebs #2717 - Add commands to verify locked key ranges and recover failed task groups to
spqr-monitorby @EinKrebs #2638 - Disable recovering key range moves by default by @EinKrebs #2634
- Fix unlocking key range in
spqr-monitor verifyby @EinKrebs #2651 - Fix
spqr-monitor recoverdeletion of key range moves by @EinKrebs #2688 - Fix task group restart when transferring a key range in one go by @EinKrebs #2718
- Add
DROP REDISTRIBUTE TASK ALLcommand by @EinKrebs #2786 - Check that key range is locked before inserting/deleting data during redistribution by @EinKrebs #2813
- Make recoverable transfer errors SPQR-specific by @reshke #2787
- Make most insert-time redistribution errors recoverable by @reshke #2788
- Improve key range move and data transfer error reporting by @reshke #2714 #2727 #2728 #2750 #2783
- Split operation lock and write lock for key ranges by @EinKrebs #2871
- Await PIDs before locking key range during move by @EinKrebs #2722
Key Range & Shard Management
- Introduce
CREATE KEY RANGES FOR DISTRIBUTIONby @diPhantxm #2604 - Support SQL for
CREATE KEY RANGES FOR DISTRIBUTIONby @diPhantxm #2639 - Add documentation for
CREATE KEY RANGES FOR DISTRIBUTIONby @diPhantxm #2739 - Support
CREATE SHARD ... FORCEto ignore shard checks by @diPhantxm #2635 - Check shard migrations on
CREATE SHARDby @diPhantxm #2595 - Add
MOVE KEY RANGE ... META ONLYcommand by @EinKrebs #2825 - Update
MOVE KEY RANGEdocumentation by @EinKrebs #2846 - Drop key range move status from QDB by @diPhantxm #2830
- Fix key range left locked after
RENAMEfailure by @diPhantxm #2867 - Update key range metadata on shards when deleting all key ranges by @diPhantxm #2883
- Delete tables from spqrguard metadata on
DROP TABLEby @EinKrebs #2740
Advisory Locks & Connection Pinning
- Add initial
pg_advisory_locksupport by @reshke #2661 - Create common infrastructure for connection pinning by @reshke #2751
- Implement connection pinning by @reshke #2768
- Automatically pin connections for advisory locks by @reshke #2775
- Add tests for auto-pinning by @reshke #2801
- Add advisory lock stress testing by @reshke #2802
Two-Phase Commit (2PC)
- Add
__spqr__allow_autoprotect_2pcGUC 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
SHOWtarget 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 FILTERby @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
MaxRowsby @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
ParseCompletein 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
INT2bind parameter parsing and named portal binds by @reshke #2940
Console & SQL
- Implement generic string GUCs by @reshke #2663
- Add
log_queryrouter configuration option by @reshke #2702 - Fix
spqr-consolehandling of empty queries by @reshke #2791 - Reject invalid
UNITE KEY RANGE ALL/SPLIT KEY RANGE ALLcommands by @reshke #2808 - Improve console grammar and reject additional invalid SQL by @reshke #2798 #2814
- Make
SPQR_DEFAULT_ROUTE_BEHAVIOURa 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_NOTICEa generic GUC by @reshke #2836 - Make
__spqr__sharding_keya generic GUC by @reshke #2844 - Make maintenance parameters generic GUCs by @reshke #2918
- Make
SHOWnotice message format configurable through GUC by @reshke #2908
Monitoring & Observability
- Add mean key range lock time statistics by @EinKrebs #2636
- Add counter for authentication and TLS initialization errors by @reshke #2664
- Add structured test reports and automatic flaky-test candidate tracking by @Denchick #2670 #2677 #2687 #2692
- Add instance start time and last reload time to
SHOW INSTANCEby @reshke #2683 - Add
total non-virtual queriescounter by @reshke #2699 - Add Prometheus
summarymetric type by @xelavopelk #2585 - Add client alive time metric by @reshke #2719
- Add client network address to disconnection messages by @reshke #2720
- Add metrics from
ConnectionStatMgrby @xelavopelk #2742 - Improve SPQR-specific error logging and data-transfer logging by @reshke #2674 #2714 #2728
- Fix log message loss during shutdown by @reshke #2906
- Rate-limit cancel request processing by @reshke #2917
Configuration, Security & Networking
- Add gRPC TLS configuration types and credential adapter by @Denchick #2748
- Configure TSA recheck frequency through
dbpool_tsa_recheck_periodby @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
- Use graceful shutdown for failed-auth client pools by @reshke #2656
- Fix adapter
UNITEimplementation by @reshke #2723 - Fix task worker goroutine leaks by @Denchick #2784
- Fix index-out-of-range panic when parsing shard host addresses by @Denchick #2840
- Fix potential goroutine leak in connection acquisition by @reshke #2852
- Fix pool data race during host parsing by @reshke #2857
- Fix panic caused by nil connection on listener error by @diPhantxm #2824
- Cleanup backend connections after search path hazards by @reshke #2899
- Fix malformed
DISTRIBUTION REPLICATEDhandling by @Denchick #2777 - Fix bootstrap error logging by @EinKrebs #2923
Documentation & CI
- Revise Docker image promotion documentation by @Denchick #2628
- Add documentation for enabling spqrguard by @Denchick #2889
- Run benchmarks on schedule and relevant file changes by @diPhantxm #2632 #2662
- Make benchmark CI retryable by @diPhantxm #2676
- Speed up generated-code checks by @Denchick #2730
- Update CodeQL configuration by @Denchick #2746
Full Changelog: 3.0.0...3.1.0
3.0.0
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
ProcessOneMsgCarefullyfor 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)
- Simple happy-path error recovery in two phase commit by @reshke #2480
- Fix transaction deploy on ROLLBACK by @reshke #2481
- Support client feedback for 2pc commit flow by @reshke #2531
- Add
__spqr__set_next_2pc_gidand use it in tests by @reshke #2536 - Fix two phase recovery utility function by @reshke #2574
- Fix 2pc tx state recovery by @reshke #2578
- Add isolation tests for 2pc failure recovery by @reshke #2482 #2485
Implicit Transactions
- Support implicit tx blocks by @reshke #2557
- Add notice message for router implicit tx feature by @reshke #2561
- Fix implicit transaction error recovery flow by @reshke #2564
Auto-Linearize for Multi-Shard DML
- Auto-linearize hazard multi-shard upserts by @reshke #2512
- Fix auto-linearize on
INSERT INTO .. RETURNINGby @reshke #2527 - Reimplement dispatch linearize as plan hinting rather than GUC injection by @reshke #2560
- Support correct command complete tag in multishard
UPDATEby @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
- Metadata version management basics by @EinKrebs #2395
- Implement router rebootstrap through SQL by @EinKrebs #2398
- Update key range metadata in spqrguard by @EinKrebs #2424
- Maintain key range meta on rename by @EinKrebs #2594
- Separate spqrguard meta update from external writes lock in config by @EinKrebs #2611
- Add a check for an exact key match in qdb/etcd by @Pavloxes #2552
Console & SQL Enhancements
HELPfor register/unregister routers, misc commands by @Denchick #2367 #2371- Enforce 80-char line limit in
HELPby @Denchick #2453 - Deprecate
ADDkeyword, useCREATEinstead by @Denchick #2038 - Implement
LOCAL&GLOBALshow kinds by @reshke #2440 - Support multistatement SQL in console by @reshke #2541
- Add
ALTER SYSTEM ROTATEfor spqr-console log rotation by @reshke #2558 - Add
SHOW SHARDS_EXTENDEDcommand by @diPhantxm #2562 - Support
ALTER SHARDin router with coordinator by @diPhantxm #2428 #2445 - Add
discard countcolumn toSHOW poolsby @reshke #2615 - Add
server_lifetimesetting to backend rules by @reshke #2616 - Improve shard-not-found errors in console by @Minetoff #2175
- SQL part of
GRANT& alter system re-bootstrap by @reshke #2381
Monitoring & Observability
- Prometheus metrics for router (MVP) by @xelavopelk #2497
- Reimplement RPS counting as part of statistics package by @reshke #2475
- Fix router tx/shard statement quantiles by @reshke #2493
- Add simple query log time on INFO level by @reshke #2532
- Add and use
TRACEseverity for some debug messages by @reshke #2533 - Write log asynchronously (router only) by @reshke #2491 #2501
- Downgrade unmatched TSA host log level from Error to Debug by @Denchick #2488
spqr-monitor
Shard Management & Networking
- Handle hosts with AZ in shard hosts validation by @diPhantxm #2486
- Pass hosts' AZ to distributed mgr by @diPhantxm #2498
- Send host list with AZ on router sync by @diPhantxm #2579
- Add gRPC validation rules by @diPhantxm #2450
- Fix memqdb rebootstrap losing shards by @diPhantxm #2441
- Make shard replicas synchronous by @EinKrebs #2515
- Change
synchronous_committoremote_applyon shards by @EinKrebs #2521 - Pin client catalog queries to dedicated shard on setup by @reshke #2609
Error Reporting
- Modernize coding around error reporting by @reshke #2372
- Switch
errComplexQueryto usespqrerrorinfrastructure 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_timeoutby @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
- Fix panic in
SHOW relation& refactor by @EinKrebs #2407 - Fix panic in multishard conversion by @reshke #2526
- Fix router startup panic by @xelavopelk #2494
- Fix panic: unexpected proto version message size by @diPhantxm #2537
- Fix panic & release goroutines on route obsoletion by @reshke #2577
- Fix/out of range binds panic by @Ledatu #2556
- Remove panic from stat collector by @reshke #2476
- Make ICP panic action to be
os.Exit()by @reshke #2499
Code Quality & Linting
- Fix var-naming linting issues, parts 1–4 by @Denchick #2378 #2420 #2427 #2431
- Fix unchecked-type-assertion, parts 1–2 by @Denchick #2392 #2394
- Fix unexported-naming, receiver-naming, var-declaration, unnecessary-if lint issues by @Denchick #2377 #2412 #2432 #2402
- Replace
golang.org/x/exp/sliceswith stdlibslicesby @Denchick #2473 - Remove dead code by @reshke #2404 #2477 #2539
- Remove
ShardMapping, useTopologyManagerinstead by @reshke #2437
Tests
- Extended protocol tests: Copy, Close, Execute(MaxRows), simple-in-extended, BEGIN+extended and more by @rkhapov #2379 #2387 #2388 #2397 #2406 #2416 #2417 #2438 #2542 #2582 #2583
- Tests: Oid Field Description by @saneczkab #2425
- Add unit test
CmpRangesLessStringDeprecatedby @Vinter-mach #2502 - Add unit test: WHERE MatchRow by @NeSawer #2540
- Mock
ClientInfo,RuleRouterand testListClients,ListBackendConnections,ListPoolsby @AnastasiaKostareva #2451 - Fix flaky feature tests by @xelavopelk #2439 #2444 #2458 #2464
- Fix feature test flakes by isolating auth fixtures by @Denchick #2573
Documentation
- Add manual resharding guide by @singl3focus #2435
- Fix LOCK KEY RANGE behavior description by @Denchick #2448
- Fix typo in get_started guide by @kolzuk #2586
- Add isolation tests README by @Denchick #2603
DevOps & CI
- Use content hash for shard image cache by @Denchick #2452
- Fix mismatched hashFiles inputs between feature_prepare and feature runs by @Denchick #2465
- Fix CI unhealthy container log collection by @Denchick #2597
- Fix regress test teardown in
schema_qual.sqlby @Denchick #2592 - Bump PostgreSQL version by @reshke #2546
- Bumps by @dependabot #2373 #2469 #2470 #2511 #2530 #2565 #2589 #2593 #2602 #2607
New Contributors
- @saneczkab made their first contribution in #2425
- @singl3focus made their first contribution in #2435
- @Vinter-mach made their first contribution in #2502
- @NeSawer made their first contribution in #2540
- @kolzuk made their first contribution in #2586
- @Pavloxes made their first contribution in #2552
Full Changelog: 2.9.9...3.0.0
2.9.9
This is one of final release before 3.0.0 target.
Changes include experimental post processing support, 2pc improvements, QDB in pg initial support, JOIN routing fixes, SQL level prepared queries support and much more.
What's Changed
- Update memqdb.feature by @reshke in #2115
- Key range versioning basics by @EinKrebs in #2072
- Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #2118
- Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #2117
- Bump lyx by @reshke in #2119
- Preparation refactoring for QDB migration. by @reshke in #2116
- Support storing FQN relations in MemQDB. by @reshke in #2121
- Add HELP command PoC by @Denchick in #2057
- Support FQN relations for distribution in ETCD by @reshke in #2124
- Improve visibility for
SHOW redistribute_tasksby @reshke in #2123 - Add isolation test for data move with schema-qualified relation by @reshke in #2126
- Fix state conversion bug by @reshke in #2127
- Add isolation test for data move with schema-qualified relation (#2126) by @reshke in #2128
- Fix panic in RedistributeTasksVirtualRelationScan by @EinKrebs in #2129
- Add key range commands MDX generation by @Denchick in #2125
- fixed create reference relation for regress with coordinator by @xelavopelk in #2092
- Automatic TPC-C benchmarks on label
performanceby @diPhantxm in #2113 - Tests for ./router/server.ShardServer.Name() by @futig in #2132
- Support routing of insert-from-aux-values. by @reshke in #2134
- More tests on CTE+aux values processing by @reshke in #2135
- Add unit tests for StmtLogger.shouldLogStatement by @Minetoff in #2114
- Add unit test for split-VALUES() INSERT logic by @reshke in #2136
- Add rewrite support for aux CTE feature by @reshke in #2137
- Idempotent RedistributeKeyRange call by @EinKrebs in #2133
- Clustered detach relation from sequence support by @xelavopelk in #2122
- converting drop key range command into 2 phase execution by @xelavopelk in #2120
- Setup FDW to a master host by @EinKrebs in #2138
- Bump yc-actions/yc-cr-login from 2 to 3 by @dependabot[bot] in #2139
- Bump peter-evans/create-or-update-comment from 4 to 5 by @dependabot[bot] in #2142
- Bump hashicorp/setup-terraform from 3 to 4 by @dependabot[bot] in #2140
- Bump actions/checkout from 2 to 6 by @dependabot[bot] in #2141
- Fix log message by @EinKrebs in #2143
- Reorder & improve operations in RunCoordiantor by @EinKrebs in #2144
- GetSequenceRelations implemented in adapter by @xelavopelk in #2145
- fix error message for regress in clustered mode by @xelavopelk in #2146
- Drop task group lock after its exit by @EinKrebs in #2147
- Support CTE rewrite by @reshke in #2148
- Bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #2150
- Bump docker/login-action from 3 to 4 by @dependabot[bot] in #2149
- Support transitive CTE for aux values. by @reshke in #2152
- Bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #2155
- Fix panic in RuleRouterImpl.PreRoute by @EinKrebs in #2154
- Fix support for insert from aux values by @reshke in #2156
- Support QdbAddrs with multiple choice in Coordinator config by @diPhantxm in #2153
- Send proper SQL state for erroneous begin/rollback statements. by @reshke in #2158
- Small cleanup patch by @reshke in #2159
- Hold redistribute task lock with its execCtx + cancel it by @EinKrebs in #2157
- Bump lyx by @reshke in #2162
- Bump google.golang.org/grpc from 1.79.1 to 1.79.2 by @dependabot[bot] in #2160
- Bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #2161
- Fix CTE routing support for hashed distributions by @reshke in #2163
- Add limit processing for multi-shard queries by @reshke in #2165
- Bump golang.org/x/sync from 0.19.0 to 0.20.0 by @dependabot[bot] in #2168
- Fix routing for aux-values-insert with hashed distribution by @reshke in #2166
- Add regression suite for clustered installation. by @xelavopelk in #2151
- Use lyx types for console sort support by @reshke in #2170
- move retries "keyrange locks" BL to meta layer by @xelavopelk in #2164
- Experimental support for cluster-wide ORDER BY by @reshke in #2171
- tests: add tests on DropDistribution by @Daewoow in #2172
- Add ALTER REFERENCE TABLE SET STORAGE method by @EinKrebs in #2173
- Bump golang.org/x/crypto from 0.48.0 to 0.49.0 by @dependabot[bot] in #2176
- Set up spqrguard to forbid direct queries to shards by @EinKrebs in #2174
- fix EtcdQDB.GetRelationSequence by @xelavopelk in #2179
- Add
cancel_pidcolumn toshow clientsby @reshke in #2180 - Support extended protocol for virtual functions calls. by @reshke in #2185
- Add experimental support for
pg_isolation_test_session_is_blockedby @reshke in #2187 - Release transaction in case of out error by @reshke in #2188
- Fixes for 890ebf8 by @reshke in #2189
- Fix expression routing data move by @EinKrebs in #2190
- Check extension versions by @EinKrebs in #2191
- MemQDB.packMemqdbCommands is beautified by @xelavopelk in #2182
- move retries "keyrange locks" BL to meta layer (step 2) by @xelavopelk in #2183
- fix: deep-copy pgproto3 message byte slices to prevent cross-client data contamination by @Ledatu in #2177
- Proper support for frontend prepared statement close by @reshke in #2192
- Add extended protocol test for Flush messages. by @reshke in #2193
- Bump google.golang.org/grpc from 1.79.2 to 1.79.3 by @dependabot[bot] in #2196
- Add simple tests for protocol Close {statement, portal} by @reshke in #2194
- Bump github.com/go-ldap/ldap/v3 from 3.4.12 to 3.4.13 by @dependabot[bot] in #2195
- CreateSequence in tranMngr by @xelavopelk in #2181
- Support pg isolation tester util function in xproto. by @reshke in #2197
- Support ICP 'wait' action. by @reshke in #2200
- Cleanup & refactoring in docker configs by @EinKrebs in #2199
- Fix panic in MemQDB.CloseRouter method by @EinKrebs in #2201
- Support ICP-lock in
pg_isolation_test_session_is_blockedby @reshke in #2202 - Support SPQR virtual function calls in legacy planner by @reshke in #2203
- Bump github.com/lib/pq from 1.11.2 to 1.12.0 by @dependabot[bot] in #2204
- Support empty from-list in pure virtual selects by @reshke in #2205
- Introduce
show two_phase_txfor handy 2pc feature testing & visibility by @reshke in #2206 - Docs for
__spqr__maintain_paramshint by @Denchick in #2208 - Fix extensions setup on sha...
2.9.0
What's Changed
Engine V2, Planner & Execution
- Support target list routing for engine v2 by @reshke (#1685)
- Support simple virtual function scan by @reshke (#1738)
- Refactor & simplify reference relation insertion code in planner v2 by @reshke (#1745)
- Support simple INSERT INTO .. VALUES in planner V2 by @reshke (#1746)
- Support BATCH INSERT for engine V2 by @reshke (#1811)
- Split executor gang bind & executor run in stages by @reshke (#1747)
- Make query analyze earlier in planning by @reshke (#1769)
- Move all constant-based routing logic to Analyze phase by @reshke (#1770)
- Remove procExpr by @reshke (#1773)
- Introduce TupleTableSlot and use it across execution and SHOW processing by @reshke (#1705, #1706, #1707, #1710, #1711, #1718, #1721)
- Add shard-match to DefaultRouteBehaviour by @reshke (#1837)
- Named cursors support by @reshke (#1841)
Reference Relations & Distributed DML
- Refactor rewrite query support for reference relation modification by @reshke (#1752)
- Add test for reference relation sync by @EinKrebs (#1762)
- Support returning clause for UPDATE of reference relations by @reshke (#1766)
- Support distributed relation batch insert by @reshke (#1786)
- DROP SEQUENCE ... CASCADE by @diPhantxm (#1788)
- Correct reference table locks in spqrguard regress test by @EinKrebs (#1833)
- Prevent reference relation modification on sync by @EinKrebs (#1836)
- Rewrite spqrguard interaction to support 2.0 by @EinKrebs (#1855)
Transactions & 2PC
- Refactor Unlocks by @xelavopelk (#1665)
- Meta transactions: prepare etcd by @xelavopelk (#1753)
- Introduce Instance Control Protocol / Instance Control Points by @reshke (#1780)
- Create interfaces for 2pc recovery by @reshke (#1782)
- Implement 2pc recovery watchdog by @reshke (#1797)
- Use state keeper to record 2pc tx state by @reshke (#1803)
- TwoPhase recovery POC by @reshke (#1805)
- Refactoring CreateDistribution for 2-phase execution by @xelavopelk (#1835)
Networking
- Refactor proxying requests to control-plane from regular connections by @reshke (#1767)
- Cache router gRPC connections in coordinator by @Denchick (#1787)
- Add gRPC keep-alive settings to coordinator by @Denchick (#1792)
- JSON logging by default in coordinator by @cypny (#1807)
- Check TCP connection aliveness and add client pool watchdog by @reshke (#1814, #1834)
- Fix TCP aliveness check using TCP_INFO by @Denchick (#1852)
- Fix panic on un-attached client by @reshke (#1831)
Console, SHOW & Routing Semantics
- Add reference_relations to __spqr__show function by @reshke (#1696)
- Use lyx a_expr grammar for console WHERE handling by @reshke (#1719)
- Make GROUP BY logic independent of SHOW statement type by @reshke (#1720)
- Support more virtual processing in __spqr__show by @reshke (#1723)
- Support and fixes for SequencesStr by @Mot1x (#1756, #1825)
- Add is_alive field to SHOW clients and fix related commands by @reshke (#1818, #1820, #1821, #1822, #1824)
Balancer, Shards & Key Ranges
- Store multiple move tasks and task groups by @EinKrebs (#1697)
- Sync key range lock state by @EinKrebs (#1735)
Tests, Stability & Fixes
- Add tests for MemQDB key range operations by @Iesht (#1776)
- regress tests with coordinator instalation by @xelavopelk (#1717)
- Large batch of regression and feature test fixes by @reshke, @EinKrebs and @xelavopelk (#1728, #1729, #1739, #1744)
- Add missing DDL test by @reshke (#1740)
- Run console regress tests in coordinator by @EinKrebs (#1760)
- Fix unlocks, parsing errors, quoted client ids, add hosts to shard by @reshke (#1730, #1731, #1732)
- Do not allocate memory on bind in xproto (#1793)
- Fix oversights and edge cases by @reshke (#1798, #1799, #1800, #1801, #1802)
- Add tests for RestoreQDB by @kla1mn (#1826)
- Balancer: add unit tests, fix adjacency logic, make fit coefficient configurable by @KKittyCatik (#1830)
Docs
- Deployment and production usage guide by @Denchick (#1690)
- Documentation for composite sharding keys by @Denchick (#1692)
- Documentation for distributed transactions and commit strategies by @Denchick (#1694)
- Document routing priority hierarchy by @Denchick (#1709)
- Add SYNC REFERENCE TABLE command documentation by @Denchick (#1785)
- Update coordinator configuration docs by @Denchick (#1772)
- Better default shard docs by @Denchick (#1832)
- Add GitHub Copilot instructions by @Denchick (#1704)
Other
- Add net/http/pprof to coordinator by @Denchick (#1699)
- Add promote-nightly script by @Denchick (#1722)
- Update Dockerfile and fix image builds by @Denchick (#1765, #1840)
- Remove PG 13, add PG 18 by @EinKrebs (#1853)
- Bumps by @dependabot in #1712 #1734 #1736 #1742 #1743 #1761 #1768 #1775 #1819 #1828 #1829 #1838 #1839 #1844 #1845 #1858 #1859
New Contributors
- @cypny (#1750)
- @Mot1x (#1755)
- @kla1mn (#1826)
- @Firsikita (#1790)
- @Iesht (#1776)
- @KKittyCatik (#1830)
Full Changelog: 2.8.0...2.9.0
2.8.0
What's Changed
Reference & Replicated Relations
- Add replicated relations to constraints check and ignore nonexistent ones by @EinKrebs #1556 #1567
- Change
ALTER RELATIONsemantics by @EinKrebs #1557 - Do not fail on schema-qualified reference relations by @reshke #1571
- Show column sequence mapping in
SHOW reference_relationsby @reshke #1598 - Fix describe for xproto+ref relation autoinc by @reshke #1620
- Add schema information to reference tables in QDB by @EinKrebs #1645
- Explicit selection of columns in copyReferenceTable data by @EinKrebs #1647
- Support router-coord proxy for drop reference relations by @reshke #1603
- Add sequence starting values to bootstrap by @reshke #1599
Planner, Analyzer & Execution Refactoring
- Move all analyze logic to planner module and refactor query planning by @reshke #1653 #1682
- Split planning and parameters binding in planqueryv1 @reshke #1670
- Analyze CTE before top-level query and fix analysis for NOT expressions @reshke #1672 #1673
- Refactor planner v1 virtual func logic, add support for virtual func in engine v2 @reshke #1601 #1602
- Make
EXPLAINactually work @reshke #1683
Balancer & Move Task Improvements
- Generate move task group dynamically by @EinKrebs #1631
- Add ‘STOP TASK GROUP’ command by @EinKrebs #1662
- Add move task group stop processing to balancer by @EinKrebs #1663
- Batch select bounds for move tasks and show more detailed stats by @EinKrebs #1664 #1671
- Get move task group info from etcd by @EinKrebs #1625
Query Rewrite & Virtual Processing
- Properly implement query rewrite feature by @reshke #1609
- Support virtual processing for SPQR metadata in regular connections by @reshke #1678
- Support virtual function
hostsin engine v2 by @reshke #1684
Console & CLI Enhancements
- Support marking backends as stale and
__spqr__host_statusfunction by @reshke #1560 #1561 - Support
WHEREclause forSHOW backend_connectionsby @reshke #1564 - Add
notice_message_formatsetting by @Denchick #1531 - Update
SHOWcommand entities by @Denchick #1635 - Add documentation for
REGISTER ROUTER/UNREGISTER ROUTERby @Denchick #1677 - Add key range lock state to
SHOWcommand by @Denchick #1577
Stability, Fixes & Cleanup
- Fix memory leaks for client-quantiles feature by @reshke #1569
- Proper handle duplicate shard creation by @xelavopelk #1581
- Delete sequences from QDB with
DROP REFERENCE RELATIONstmt @xelavopelk #1587 - NoWaitLockKeyRange @xelavopelk #1573
- Fix lasting key range lock in routers by @EinKrebs #1659
- Fix wrondly virtualized plans by @reshke #1642
- Remove redundant libs (
sqlx,uuid,juju/errors,pkg/errors) by @xelavopelk #1554 #1568 #1574 #1578 - Fix
SHOW versionoutput by @u5surf #1627 - Retry fix for insert into schema-qualify by @reshke #1676
- Fix copy for local executor by @reshke #1680
Performance & Connection Handling
- Introduce priority-based host selection logic by @reshke #1588
- Add connection allocation time to
SHOW backend_connections@reshke #1559 - Eagerly erase stale hosts from running pool @reshke #1563
DevOps & Infrastructure
- Add Docker image workflows by @Denchick #1681
- Dummy pprof endpoint by @reshke #1566
- Add sh3/sh4 configs to router YAML @EinKrebs #1580
- Update Dockerfile: bump Postgres @reshke #1675
- Add FAQ section @Denchick #1660
- Bumps by @dependabot in #1583 #1586 #1589 #1593 #1594 #1643 #1644 #1686 #1687 #1688
New Contributors
Full Changelog: 2.7.0...2.8.0
2.7.0
What's Changed
Features
- implement prefer-replica by @Denchick in #1476
- Proto for routing by expr by @reshke in #1480
- Separate query processing for Copy by @reshke in #1481
- Issue 1441. MVP by @xelavopelk in #1452
- handle slow SHOW transaction_read_only case by @Denchick in #1491
- Add log_min_duration_statement config parameter by @EinKrebs in #1525
- SHOW tsa_cache by @Denchick in #1529
- Simple support for SET LOCAL with virtual params by @reshke in #1534
- add DbpoolCheckInterval and DbpoolCacheTTL by @Denchick in #1541
- Recover dead hosts in dbpool by @Denchick in #1544
- Set quantiles by string represenation in config by @EinKrebs in #1500 #1528 #1539
REDISTRIBUTE & MOVE KEY RANGE
- Better warning message for MOVE KEY RANGE. by @Denchick in #1503
- Add hashed column move feature test by @EinKrebs in #1520
- Support city-hashed columns in key range moves by @EinKrebs in #1522
- Remove excessive use of WithPrefix in etcd queries by @EinKrebs in #1537
- Write move task IDs separately from move task group by @EinKrebs in #1546
- Add etcd max request size param to coordinator config by @EinKrebs in #1547
- Add UUID column type processing to 'REDISTRIBUTE KEY RANGE' command by @EinKrebs in #1551
- Defer constraints on key range move by @EinKrebs in #1555
Fixes, Tests, Documentation
- Fix qualified name parsing by @reshke in #1477
- fix panic: unknown column type by @Denchick in #1478
- Start to validate input in models translation utilities by @reshke in #1479
- Fix multishard routing for Auxular expression in routing by expression by @reshke in #1483
- Multi-comment query hint params fix by @reshke in #1485
- Fix multistatement query processing for SET and SHOW statements by @reshke in #1486
- Fix regression test by @reshke in #1489
- try improve feature test perfomance, step 1 by @xelavopelk in #1490
- Fixed wrong link to Docs in README.md by @asmyasnikov in #1494
- Add go mod tidy check to CI pipeline by @kifril-ltd in #1495
- proxy errors from shard test by @Denchick in #1496
- fix: shards healthcheck (docker-compose sample) by @nryanov in #1492
- Fix TLS cert load error msg by @EinKrebs in #1501
- Fix coordinator.feature by @EinKrebs in #1504
- Migrate from bitnami's etcd docker image by @EinKrebs in #1506
- Migrate from bitnami/openldap to osixia/openldap in feature tests by @EinKrebs in #1507
- Fix proxy_console feature test by @EinKrebs in #1508
- Fix nolints & remove redundants by @EinKrebs in #1509
- Many refactorings & small improvements by @EinKrebs in #1510
- Use spqrerror.Newf instead of fmt.Errorf in meta.go by @EinKrebs in #1511
- Swallow NOT expr in route-by-select logic by @reshke in #1516
- Use spqrhash instead of pg_hashlib by @EinKrebs in #1519
- use go 1.25.0 by @Denchick in #1524
- Fix 'CREATE REFERENCE TABLE' command output in docs by @EinKrebs in #1530
- fix stop service in feature test by @xelavopelk in #1532
- Debug in the enviroment similar enviroment of feature tests by @xelavopelk in #1526
- fix panic in adapter by @xelavopelk in #1536
- Bumps by @dependabot[bot] #1493 #1497 #1499 #1498 #1502 #1517 #1514 #1521 #1523 #1527 #1540 #1535 #1538 #1545 #1550 #1549 #1548 #1553
New Contributors
- @asmyasnikov made their first contribution in #1494
- @kifril-ltd made their first contribution in #1495
- @nryanov made their first contribution in #1492
Full Changelog: 2.6.7...2.7.0
2.6.0
What's Changed
Features
- REDISTRIBUTE KEY RANGE [CHECK|APPLY] by @EinKrebs in #1087 #1088
- Sequences by @diPhantxm and @Denchick in #1111 #1120
- Read Only console until coordinator lock acquired by @diPhantxm in #1122
- Show is_read_only by @diPhantxm in #1123
- UUID by @diPhantxm in #1127
- Add RETRY MOVE TASK GROUP command by @EinKrebs in #1149
- Syntax for SYNC REFERENCE TABLES by @Denchick in #1176
- AUTO INCREMENT START syntax by @Denchick in #1169
- spqr-ping by @Denchick in #1168
Multi-column sharding feature
- prepation for coluticolumn routing support in copy by @reshke in #1113
- Support multi-column copy processing by @reshke in #1115
- Direct routing for inserts, multicolumn logic support back. by @reshke in #1106
- Add multicoulmn routing with different types by @reshke in #1116
Better balancing
- Add schema metadata to distributed relations by @EinKrebs in #1125
- Fail if relation not found on source cluster in redistribute check by @EinKrebs in #1133
- Add schema name to 'SHOW RELATIONS' output by @EinKrebs in #1134
- Check for distribution key columns in redistribute by @EinKrebs in #1138
- Fix multiple tuples on one distribution key in redistribute by @EinKrebs in #1141
- Fix getNextKeyRange by @EinKrebs in #1144
- Fix move status update by @EinKrebs in #1145
- Fixes in datatransfers.MoveKeys by @EinKrebs in #1146
Better routing
- Use no-check-routing-rules optimization for single-shard setups by @reshke in #1162
- Refactor comment parse processing and set TSA aliases by @reshke in #1166
- Bump lyx by @reshke in #1182 (TODO)
- Add reset support for spqr tsa param by @reshke in #1180
- Support for res target by @reshke in #1183
- Throw error when failed getting schema cache by @EinKrebs in #1188
- Add POC version of read-only-to-replica feature check facility by @reshke in #1193
- Route read-only to replicas by @reshke in #1195 // smart-read-write
Virtual processing
- Virtual processing preparational patch. Support sub-select correcly. by @reshke in #1126
- pg_is_in_recovery virtual processing by @reshke in #1132
- Select 1 virtual proc by @reshke in #1174
- test for spqr virtual param processing and fixes by @reshke in #1178
- Fix for pure virtual processing by @reshke in #1181
- Fix bind processing of preudo commands by @reshke in #1198
- Fix virtual param transaction bound handling by @reshke in #1191
Fixes, Tests, Documentation
- Prelimitary refactoring for multi-column routing by @reshke in #1094
- Remove queue from routeByClause. Use dfs instead of bfs by @reshke in #1096
- Split routing logic into two stages: relations analyze and predicate … by @reshke in #1098
- One more little refactoing to mulit-column routing by @reshke in #1100
- More refac: bring common select analyze logic to plan/analyze utilities by @reshke in #1101
- Add reference and replicated table docs by @Denchick in #1102
- Add public talks by @Denchick in #1105
- Fix routing by where clause by @reshke in #1103
- Fix systemd notify without coordinator lock by @diPhantxm in #1107
- Check if distribution empty when creating in coordinator by @diPhantxm in #1109
- fetchKeyRange: possible data corruption handling by @Denchick in #1112
- Rewrite copy tests for 4 shard setup by @reshke in #1114
- ListShards unittest by @miaarb in #1110
- Minor fixes by @EinKrebs in #1128
- Rewrite multishard tests by @reshke in #1131
- Add spqrguard to build by @reshke in #1137
- Fix panic on rollback by @reshke in #1147
- Fix panic on client failure cleanup by @reshke in #1148
- Refactor base coordinator by @diPhantxm in #1121
- add DisableObsoleteClient option by @Denchick in #1151
- Temp fix uvarint bytes encoding by @reshke in #1152
- TestEncodeUInt64 by @Denchick in #1153
- Fix hash (copy) test routing issues by @reshke in #1156
- Fix inconsistent copy-on-error rollback by @reshke in #1157
- Fixup defaults to be pgbench-friendly by @reshke in #1160
- Update 4shardproxy.yaml: more fix for sane defaults by @reshke in #1161
- Teach worldmock to handle select 1 pgbench by @reshke in #1163
- Teach worldmock to respond to read-write check by @reshke in #1164
- Lock-free shard connection management in single shard server by @reshke in #1165
- Refactor TSA checkers by @Denchick and @reshke in #1142 #1187
- Fix double-free in multidbpool by @EinKrebs in #1192
- Exit on error in any router interfaces by @EinKrebs in #1202
- Fix kr intersect check by @diPhantxm in #1136
- Fix expect by @reshke in #1173
- specify connection_limit everywhere by @Denchick in #1177
- Remove unneeded mutex by @reshke in #1179
- Fix regression test by @reshke in #1184
- Fix coordinator_show.feature by @EinKrebs in #1189
- More presice join scatter tests by @reshke in #1190
- Little refactoring by @reshke in #1196
- Add replicas to shards in tests by @EinKrebs in #1185
- Add test for binding unprepared statement by @reshke in #1203
- Target session attrs query on standby tests by @reshke in #1204
- Simplify docker images by @EinKrebs in #1208
- Update Dockerfile: bump postgresql version by @reshke in #1209
- Add CmpRangesLess tests by @SolinMaxim in #1199
- Update router.mdx by @reshke in #1205
- Bumps by @dependabot in #1082 #1089 #1090 #1091 #1093 #1099 #1104 #1108 #1117 #1118 #1119 #1124 #1135 #1139 #1155 #1167 #1170 #1194 #1197 #1200
New Contributors
- @miaarb made their first contribution in #1110
- @SolinMaxim made their first contribution in #1199
Full Changelog: 2.5.0...2.6.0
2.5.0
What's Changed
Features
- Support sub-select logic in router by @reshke in #1052
- Add exit_on_init_sql router setting by @Denchick in #1045
- add pretty logging option to the router config by @Denchick in #1062
spqr-router run [-P|--pretty-log]enables pretty logging by @Denchick in #1048- Two phase commit support by @reshke in #1078
- Add REDISTRIBUTE CHECK command by @EinKrebs in #1075
- Support LIMIT X OFFSET Y by @reshke pg-sharding/lyx#46
- Support ILIKE by @reshke pg-sharding/lyx#47
- Support more CREATE/DROP cases pg-sharding/lyx#48
- Support UPDATE AS pg-sharding/lyx#49
Roles support
- Fix frontend and backend rules reloading by @Denchick in #1056
- minor client refactoring by @Denchick in #1058
- Simple role system (router only) by @Denchick in #1059
- Move grant logic from config/ to pkg/catalog/grant.go by @Denchick in #1061
- Simple role system, the second iteration by @Denchick in #1064
- move router/rule/rulemgr.go -> pkg/rulemgr/rulemgr.go by @Denchick in #1080
- Add frontend rules to the coordinator's config by @Denchick in #1081
Fixes, Tests, Documentation
- Do not process comment lines in initsql by @reshke in #1029
- Add docs/routing/hints.mdx by @Denchick in #1033
- REDISTRIBUTE: Put server name in double quotes by @diPhantxm in #1034
- Update
daemonizeandconsoleoption descriptions by @Denchick in #1040 - Use rcfg.MemqdbBackupPath instead of persist flag by @Denchick in #1037
- add some order in tests workflow running by @Denchick in #1041
- Remove
persistoption and addmemqdb-backup-pathto the spqr-router by @Denchick in #1038 - use config.RouterConfig() in cmd/router/main.go by @Denchick in #1043
- Migrate from golang/mock to uber/mock by @EinKrebs in #1042
- minor cmd/router/main.go refactoring by @Denchick in #1044
- pgproto-debug and show-notice-messages CLI options by @Denchick in #1046
- Add spell checker to workflows by @EinKrebs in #1036
- Minor spqrlog.ReloadLogger refactoring by @Denchick in #1049
- minor console refactoring by @Denchick in #1057
- Fix func application queries by @reshke in #1072
- Better options for coordinator logging by @Denchick in #1074
- Minor etcdqdb log enhancement by @Denchick in #1079
- Bumps by @dependabot in #1028 #1035 #1047 #1053 #1054 #1067 #1066 #1068 #1065
Full Changelog: 2.4.0...2.5.0
2.4.0
What's Changed
Features
- Support
SELECT version()query by @Denchick in #988 - Support TRUNCATE, bump lyx by @reshke in #994
- CREATE SCHEMA support. by @reshke in #1006
- Support schema-qualified column reference routing by @reshke in #1007
- Support routing based purely on target list. by @reshke in #1009
- Support multi-line init SQL parsing by @reshke in #1011
- Support GRANT SELECT ON TABLE, bump lyx by @reshke in #1016
Engine v2
- Little code tweak by @reshke in #978
- Small refactoring around begin tx logic by @reshke in #979
- Simplify relay internals. by @reshke in #980
- Small refactoring around ProcessExtendedBuffer by @reshke in #984
- Add test & fix virtual TX command status reporting by @reshke in #985
- Small prelimitary refactorings by @reshke in #989
- Refactor relay-queryExecutor. Remove complete relay param. by @reshke in #990
- Move txmanagement code into executor by @reshke in #996
- Transfer setup & teardown copy statement aux functions to executor by @reshke in #999
- Complete relay fixes. untoute client even on deploy errors. by @reshke in #1004
- Add tx with error test by @reshke in #1005
- Multishard tx processing in Engine V2 by @reshke in #1000
- Update router: enable engine v2 regression test by @reshke in #1008
- Remove ExpRoute from CopyState by @reshke in #1013
- Bump golang.org/x/crypto from 0.32.0 to 0.33.0 by @dependabot in #1014
- Remove RouteCB method from PoolMgr by @reshke in #1017
- Remove function UnrouteRoutes by @reshke in #1018
- Refactor routing internals by @reshke in #1019
- Skip subplan routing instead of error by @reshke in #1020
- Refactor relay internals by @reshke in #1021
- Update relay.go: remove unreachable code by @reshke in #1023
- Expand transaction with __spqr__engine_v2 Part one by @reshke in #1022
- Expand transaction part2 by @reshke in #1024
- Encapsulate query params into one struct by @reshke in #1025
- Execute expanded transaction query on specified execution targets by @reshke in #1026
- Fix partial execution multishard sync state by @reshke in #1027
Fixes, tests, other
- Add more regression tests by @EinKrebs in #966
- MultiDB pool by @diPhantxm in #987
- Remove dead code by @reshke in #992
- Update README.md by @reshke in #993
- Update relay.go: fix theoretical TOCTOU by @reshke in #995
- Fix possible null dereference. by @reshke in #998
- Update missing picture by @sdil in #1001
- regress tests for schema cache by @diPhantxm in #1002
- Enable hash routing tests for integer by @reshke in #1003
- Bump golang.org/x/sync from 0.10.0 to 0.11.0 by @dependabot in #1010
- Bump google.golang.org/protobuf from 1.36.4 to 1.36.5 by @dependabot in #1012
- Add unit test by @reshke in #1015
New Contributors
Full Changelog: 2.3.0...2.4.0
2.3.0
What's Changed
Reference relations
- Add additional reference relation syntax & test by @reshke in #858 #904
- Fix reference relation processing + add test by @reshke in #916 #919
- More tests cases for reference relations by @reshke in #943
Debug features
- Add router config validation by @EinKrebs in #883
- Add test-config command to SPQR binaries by @EinKrebs in #884
- Multi-shard DDL support v2 by @Denchick in #892
- Watch routers iteration timeout by @Denchick in #903
- Add Ignore_cancel param to router by @Denchick in #937 #938 #939
- Add
show instancesupport by @reshke in #942 - Add acceptor buffer size by @Denchick in #944
- Limit concurrent TLS handshake etc activities by @reshke in #960
Engine v2
- Engine v2 support for reference relation modification by @reshke in #946
- One step towards engine v2 by @reshke in #950
- Support engine v2 distributed relation sql. Refactor internals by @reshke in #951
- Add error param to engine V2 planner. Remove DummyPlan. by @reshke in #955
- Refactor. Unite MultiShardState with Scatter plan by @reshke in #956
- Import ddl logic from Planner V1 into engine V2 by @reshke in #971
- Futher split Qrouter logic into reusable parts by @reshke in #973
- Futher refactor proxy routing logic by @reshke in #975
Fixes, Tests, Documentation
- Add unit tests to proxy_routing.go by @Denchick in #877
- Refactored & simplyfied ugly hack in proxy_routing.go by @Denchick in #875
- Small code tweak by @reshke in #879
- Add regression tests for part tables by @reshke in #881
- minor pkg/datashard/datashard.go refactoring by @Denchick in #878
- Return correct logic to proxy routing by @reshke in #880
- better 'not implemented' messages by @Denchick in #889 #890
- Fix & enable JDBC integration test by @EinKrebs in #893
- Fix some typos by @EinKrebs in #896
- Remove clmp mutex by @reshke in #899
- better panic message by @Denchick in #900
- Remove lock by @reshke in #901
- Drop RequestData() by @Denchick in #895
- more DBPool Tests by @reshke in #906
- Minor enhancement of coordinator log messages by @Denchick in #898
- Topology refactoring by @Denchick in #908
- Explain InsecureSkipVerify by @Denchick in #909
- Remove locking in route pool by @reshke in #905
- Update dbpool.go: remove shuffle host from auxular creartion methoods. by @reshke in #907
- Do not miss error messages handling cancel request by @Denchick in #910
- Router config reload fixes by @Denchick and @reshke in #917 #929 #941
- Update interactor.go: fix typo by @reshke in #918
- Tweaks by @reshke in #922
- Rename variable by @reshke in #923
- Remove world shard support (temporary) by @reshke in #924
- Virtual param fixes by @reshke in #925
- Add REDISTRIBUTE command documentation by @Denchick in #926
- Remove relay.TxActive() by @Denchick in #927
- Safe remove some fields from relay.go by @Denchick in #928
- Do not pass config.router to MatchConnectionPooler by @Denchick in #930
- Fix schema cache for local router. Fix copy for already-routed connections. by @reshke in #931
- Add pooler tests (LOCAL router) by @reshke in #932
- Remove contension on client pool by @reshke in #934
- Fix coordinator log msg by @reshke in #935
- Better id for logging by @reshke in #940
- Lower logging level of specific types of errors by @reshke in #945
- Add another feature test for 'REDISTRIBUTE KEY RANGE' by @EinKrebs in #947
- Add more shards to regress tests by @reshke in #952
- remove routingstate.DatashardRoute. by @reshke in #953
- Remove routingstate package by @reshke in #954
- More logging for connection setup phase by @reshke in #959
- Fix linter by @EinKrebs in #961
- Versioned pg regression tests by @EinKrebs in #964
- Add COPY FROM documentation by @Denchick in #969
- Always allow distributed bulk copy by @Denchick in #968
- Refactor query routing internals. Separate rmeta-related logic. by @reshke in #970
- Fix errors in comments by @visill in #972
- Remove ununed structs by @reshke in #974
Other
- Prepared statements with multishard DDL by @EinKrebs in #958 #962
- INVALIDATE CACHE by @diPhantxm and @Denchick in #874 #886
- Bumps by @dependabot in #876 #872 #888 #885 #902 #914 #915 #936 #933 #949 #967 #963 #977 #976
- Bump lyx by @reshke in #948
Full Changelog: 2.2.0...2.3.0