New parser
New parser is now enabled by default. Please test this release before launching in production. You should see 6x-8x speed improvements resulting in lower latency for query cache misses, and up to 90% memory usage reduction overall. This is not a typo! We fixed quite a few things here.
This also makes the query_parser_engine setting redundant and obsolete. It will now be ignored.
By @sgrif
Bug fixes
- Fix negative interval text format parsing in cross-shard aggregates @bryanmehall
- Connection pools were giving clients closed server connections, causing intermittent errors @nsavvide
- In
role = "auto"mode, set all hosts torole = "replica"until proven otherwise; this unblocks reads faster during configuration changes @murex971 - [New parser] Fix
GRANTandCREATE STATISTICSDDL handling @levkk - When using schema-based sharding, ignore the inconsistent omnisharded tables write check @levkk
- Include
sv_idle_xactcalculation into the example Datadog dashboard @zacharywelch - Fix crash when a cross-shard
avg()calculation was done on empty tables @sgrif RESET PREPAREDadmin command wasn't doing anything @IgorOhrimenko- Fix Mac OS build for the new parser @jkaczman
- Fix pipelined queries using Postgres portals; specifically affected the Node JS Postgres drivers @nsavvide
- Sending portal close messages could potentially close prepared statements that were identically named @meskill
- Schema synchronization during resharding now restores
REPLICA IDENTITYindexes in the post-data phase @rlittlefield - Cross-shard aggregates with passthrough columns now work correctly @jkaczman
PREPAREwas leaking memory in the prepared statements cache @meskill- Fix incorrect handling of errors in mixed simple/extended protocol exchange @jkaczman
Performance
- Lower the number of memory allocations in prepared statements cache @meskill
- Remove unnecessary statement allocation in the parser (50% allocation reduction in the hot path) @sgrif
Features
- Track selected, inserted and deleted rows, as reported by server connections @murex971
- Support prepared statements cache TTL (time to live), automatically re-planning statements periodically; this sidesteps the stale execution plan problem @meskill
Misc
- Clippy pass over new parser code @sgrif
- Bump Mac OS runner to
macos-26(macos-14is about to be deprecated) @jkaczman - Docker compose demo wasn't saving Postgres data correctly @andyatkinson
- Small refactor of pool health tracking @sgrif
New Contributors
- @bryanmehall made their first contribution in #1321
- @zacharywelch made their first contribution in #1333
- @jkaczman made their first contribution in #1336
- @andyatkinson made their first contribution in #1343
Full Changelog: v0.1.52...v0.1.53