Release Date: May 11th, 2026 pgstream v1.0.2 is a patch release. It is built using Golang 1.26.3, which includes several security fixes. It also batches WAL operations in stream mode for the Postgres-to-Postgres sink and exposes the wal2json plugin’s source-side table filters. Users on the v0.9.x maintenance line can take the same Go bump from v0.9.12.Documentation Index
Fetch the complete documentation index at: https://xata.io/docs/llms.txt
Use this file to discover all available pages before exploring further.
Batched WAL Operations in Stream Mode
Closes #769 via PR #774. Before this release, the WAL streaming phase executed each DML statement individually against the Postgres target. On high-churn tables, the post-snapshot catch-up phase could not keep up with the WAL backlog and would appear stuck. Stream mode now coalesces same-table operations:INSERTevents become multi-rowINSERTstatements, chunked to stay under 60,000 query parameters.DELETEevents become a singleDELETE ... WHERE pk = ANY($1::type[])for single-column primary keys, orDELETE ... WHERE (a,b) IN ((..),(..))for composite primary keys.- Rows with
NULLidentity values fall back to individualDELETEstatements.
INSERT and DELETE are coalesced. UPDATE and TRUNCATE still process individually, so catch-up workloads dominated by UPDATE traffic can still see backpressure.
Decode-Time Table Filtering via wal2json
PR #791, contributed by @blakewatters. Two new configuration keys pass through directly towal2json at the source Postgres. Excluded tables are not decoded into JSON, which reduces CPU and network overhead before events enter the pgstream pipeline.
YAML:
Go 1.26.3
PR #804 bumps the Go toolchain to 1.26.3 and ships the upstream security fixes that drove this release. v0.9.12 (PR #808) is the same bump backported with no functional changes.Bug Fixes
clean_target_dbno longer drops thepgstreamschema on the target (PR #740, fixes #736).pg_restoresurfaces the underlying exec error when its output contains no parseableERRORlines, instead of emittingerror restoring dump: %!w(<nil>)(PR #771).UPDATE ... WHEREclauses against the target now emitIS NULLinstead of= NULLfor null comparisons.
Other Changes
- Concurrency limit added on the snapshot recorder.
- Schema workers renamed to snapshot workers in the recorder.
Upgrade
No migration is required. Replace the binary and restart pgstream.Support
- Issues: https://github.com/xataio/pgstream/issues
- Documentation: https://github.com/xataio/pgstream/tree/main/docs
- Discussions: https://github.com/xataio/pgstream/discussions