Skip to main content

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.

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.

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:
  • INSERT events become multi-row INSERT statements, chunked to stay under 60,000 query parameters.
  • DELETE events become a single DELETE ... WHERE pk = ANY($1::type[]) for single-column primary keys, or DELETE ... WHERE (a,b) IN ((..),(..)) for composite primary keys.
  • Rows with NULL identity values fall back to individual DELETE statements.
Note: This applies only to the Postgres target; Elasticsearch, Kafka, and webhook targets are unchanged. Only 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 to wal2json at the source Postgres. Excluded tables are not decoded into JSON, which reduces CPU and network overhead before events enter the pgstream pipeline. YAML:
source:
  postgres:
    replication:
      plugin:
        add_tables: "public.*"
        filter_tables: "pipelines.*,private.*"
Environment variables:
PGSTREAM_POSTGRES_REPLICATION_PLUGIN_ADD_TABLES="public.*"
PGSTREAM_POSTGRES_REPLICATION_PLUGIN_FILTER_TABLES="pipelines.*,private.*"
Configuration reference updated in PR #803.

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_db no longer drops the pgstream schema on the target (PR #740, fixes #736).
  • pg_restore surfaces the underlying exec error when its output contains no parseable ERROR lines, instead of emitting error restoring dump: %!w(<nil>) (PR #771).
  • UPDATE ... WHERE clauses against the target now emit IS NULL instead of = NULL for 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