Skip to main content
Release Date: June 16th, 2026 pgstream v1.1.0 is a minor release focused on configuration ergonomics and operability. YAML configuration accepts environment variables, byte-size settings accept human-readable units, logs can be emitted as JSON, and the process exposes /health and /ready endpoints. It also adds a stdout target for debugging pipelines, an optional null-byte sanitizer, ltree and cube type support, custom TLS for search stores, and an --upgrade flag that migrates a v0.9.x installation to v1.x. No migration is required when upgrading from v1.0.x.

Environment Variables in YAML Configuration

PR #790, contributed by @mvanhorn. Any ${VAR} reference in a YAML configuration file — including the transformation rules file — is replaced with the value of that environment variable before the configuration is parsed. Credentials no longer have to be committed alongside the rest of the configuration:
Only the braced form is expanded, and a variable that is not set expands to an empty string.

Human-Readable Byte Sizes

PR #823, by @kvch. Byte-size settings — batch sizes, auto-tuning bounds — accept a unit suffix instead of a raw byte count. Units are case-insensitive and binary (1MiB is 1048576 bytes). Plain integers keep working:

Configurable Log Format

PR #880, by @kvch. --log-format selects between the human-readable console output (the default) and structured json for log collectors. It can also be set with PGSTREAM_LOG_FORMAT or logging.format.type. A companion --no-color flag disables ANSI codes in console output.

Health and Readiness Endpoints

PR #882, by @kvch. The run and snapshot commands can start a small HTTP server exposing /health (liveness, always 200) and /ready (readiness, which pings the source database when one is configured). Responses are JSON. This makes pgstream deployable behind Kubernetes probes without a sidecar:
The server is disabled by default and listens on localhost:9910 unless an address is given.

New stdout Target

PR #883, by @kvch. A stdout target writes WAL events as NDJSON — one JSON object per line — so a pipeline, its filters and its transformation rules can be validated without provisioning a real target:

Null-Byte Sanitizer

PR #871, contributed by @AasheeshLikePanner. Postgres text values may contain null bytes (0x00) that other targets reject. An optional processor strips them from string column values:
The processor is off by default, so pipelines that carry null bytes deliberately are unaffected.

New Type Support

  • ltree (PR #834) and cube (PR #831), by @kvch. Both types are now replicated instead of failing on an unknown type.
  • pgvector (PR #809), contributed by @rieg-ec. The pgvector types are registered on the connection, so vector columns replicate without a custom codec.

Custom TLS for Search Stores

PR #832, by @kvch. Elasticsearch and OpenSearch targets accept explicit TLS settings — CA certificate, client certificate and key — instead of relying on the system trust store, which is what self-managed clusters with a private CA need.

--upgrade Flag for v0.9.x Installations

PR #788, by @tsg. Moving from the 0.9 line to 1.x required a manual destroy/init cycle. pgstream init --upgrade now cleans up the v0.9 objects left behind by the schema-log architecture and re-initializes in one step. See the v1.0.0 release notes for what changes between the two lines.

Bug Fixes

  • Precision loss on large integers and bigint (PR #833). Values beyond the exact range of a float64 were rounded in transit; they are now carried without loss.
  • Composite primary keys in WAL metadata (PR #805), contributed by @blurskye. All columns of a composite key are recorded, instead of only the first.
  • Constraints restored before snapshot conflict updates (PR #806), contributed by @blurskye. An ON CONFLICT update needs the constraint it targets to exist, so constraint restore now happens first.
  • Transformer panics with multiple workers (PR #884). Greenmask’s generators keep state that is not safe for concurrent use; transformers now take an instance per execution, so snapshots with more than one worker no longer panic.
  • All error messages are collected before shutdown (PR #841). A failing pipeline reported the first error only; the rest are now surfaced too.
  • includeGlobalDBObjects with schema: all (PR #760), by @tsg.
  • CVEs in jackc/pgx (PR #810), contributed by @fiws. pgx is updated to v5.9.2.

New Contributors

Upgrade

No configuration changes are required when upgrading from v1.0.x. Replace the binary and restart pgstream. Existing configurations keep working: environment-variable expansion, human-readable sizes, the sanitizer and the health server are all opt-in. Users still on the 0.9 line can migrate with pgstream init --upgrade, which removes the v0.9 objects and re-initializes for v1.x.

Support