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 20th, 2026 pgstream v1.0.3 is a patch release. It adds tsvector support to the Postgres-to-Postgres DML adapter, fixes schema snapshots of partitioned tables, introduces a --data-only snapshot flag, and resolves a regression that broke updates on always-identity columns.

tsvector Replication Support

Closes #576 via PR #796, contributed by @utafrali. Tables with tsvector columns previously failed to replicate because the DML adapter had no handler for that type. The adapter now converts tsvector values arriving as []byte from the WAL into strings before they are used in the copy operation, and passes existing string values through unchanged.

Partitioned Table Snapshots and --data-only Flag

PR #775, contributed by @blakewatters. This release fixes a schema-restore failure on databases that use declarative partitioning (PostgreSQL 17/18) and adds a flag for data-only snapshots.
  • Partitioned table restore fix. pg_dump -Fp output for partitioned tables emits both CREATE TABLE ... PARTITION OF and a redundant ALTER TABLE ... ATTACH PARTITION, which fails with "already a partition". That message was not matched by the existing ignorable-error patterns, so the restore was treated as critical and aborted. These errors are now classified as harmless idempotent errors, alongside "already exists".
  • --data-only flag. A new --data-only boolean flag for pgstream run performs a data-only initial snapshot when combined with --snapshot-tables. It sets the snapshot mode to data instead of full, skipping the schema-restore phase. This is useful when the schema is restored separately (for example via pg_dump --schema-only | psql) or is managed independently on the target.
# Schema already exists on target — only snapshot data, then start CDC
pgstream run \
  --source postgres --source-url "postgres://..." \
  --target postgres --target-url "postgres://..." \
  --snapshot-tables "public.*,private.*" \
  --data-only

Bug Fixes

  • Updates on GENERATED ALWAYS AS IDENTITY columns no longer fail. A regression introduced in PR #754 caused UPDATE statements that included an always-identity column in the SET clause to be rejected by Postgres. buildUpdateQuery now drops always-identity columns from the SET clause, leaving INSERT, bulk INSERT, and COPY paths unchanged (PR #820, fixes #821).

CLI and Documentation

  • The snapshot and run command descriptions, examples, and error messages now clarify that snapshot performs one-time snapshots only and does not support snapshot_and_replication or replication mode; use run for continuous or combined replication (PR #807, relates #332).
  • cnpg_pooler_pgbouncer, the CloudNativePG PgBouncer service account, is now documented as a Xata-managed role excluded from snapshots (PR #819).

Other Changes

  • go.opentelemetry.io/otel 1.41.0 → 1.43.0 (PR #761).
  • go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc (PR #815).
  • github.com/bytedance/sonic 1.15.0 → 1.15.1 (PR #814).
  • github.com/tidwall/gjson 1.18.0 → 1.19.0 (PR #812).
  • docker/login-action 3 → 4 (PR #768).
  • goreleaser/goreleaser-action 6 → 7 (PR #738).
  • clickhouse/clickhouse-server Docker image bump (PR #816).
  • opensearchproject/opensearch-dashboards Docker image bump (PR #793).

Upgrade

No migration is required when upgrading from v1.0.x. Replace the binary and restart pgstream.

Support