> ## 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.

# v1.2.3

> pgstream v1.2.3 release notes

**Release Date:** July 27th, 2026

pgstream v1.2.3 is a patch release. It fixes bulk ingest on tables with user-defined enum columns, stops Kafka `primary_key` partitioning from collapsing distinct rows onto one message key, corrects two preflight checks that reported false failures, and lets preflight run source-only checks. Kafka pipelines using key-based partitioning need to read the upgrade notes before deploying.

## Bug Fixes

* **Bulk ingest handles user-defined enum columns** ([PR #1035](https://github.com/xataio/pgstream/pull/1035)). Snapshotting a table with an enum column failed on the COPY path because pgx has no codec for a database-specific enum OID. Enum values are now sent as text and cast on the target.
* **Kafka message keys are escaped** ([PR #1036](https://github.com/xataio/pgstream/pull/1036)). With `partition_key: primary_key` or `table`, the key was built by joining identifiers and values with `.`, `:` and `,`. A value containing one of those characters produced the same key as a different row, so distinct rows shared a key and lost their per-row ordering guarantee. The delimiters are now escaped, so they only ever appear as structure.
* **Two preflight checks no longer report false failures** ([PR #1034](https://github.com/xataio/pgstream/pull/1034)). The wal2json and replica identity checks failed on correctly configured sources.
* **The Postgres version check for source size support is corrected** ([PR #1027](https://github.com/xataio/pgstream/pull/1027)).

## Preflight Improvements

* **Source-only checks** ([PR #1025](https://github.com/xataio/pgstream/pull/1025)). `pgstream check --source` runs only the source-side checks, which is what you want when the target does not exist yet.
* **Major version compatibility** ([PR #1026](https://github.com/xataio/pgstream/pull/1026)). Preflight verifies that the source and target major PostgreSQL versions are compatible before a migration starts.

Both by [@kvch](https://github.com/kvch).

## Upgrade

⚠️ **Kafka `partition_key: primary_key` and `table` users only.** Message keys are now escaped so that the `.`, `:` and `,` delimiters can only appear as structure and never as data. Any key whose identifiers or values contain one of the escaped characters is encoded differently than before and therefore hashes to a **different partition** after upgrading.

Integer and UUID primary keys are unaffected. Keys that do change include `bytea` values (replicated in Postgres hex format, `\x...`, so every one contains a backslash), array and composite typed values (which render with commas), and schemas or tables whose quoted identifiers contain `.`, `:` or `\`.

Where this applies, drain consumers to the end of the topic before upgrading: events for one row can otherwise interleave across the restart boundary, and on a **compacted** topic a record written under the old key is never superseded by its replacement under the new one.

Everything else requires no configuration changes.

## Support

* Issues: [https://github.com/xataio/pgstream/issues](https://github.com/xataio/pgstream/issues)
* Documentation: [https://github.com/xataio/pgstream/tree/main/docs](https://github.com/xataio/pgstream/tree/main/docs)
* Discussions: [https://github.com/xataio/pgstream/discussions](https://github.com/xataio/pgstream/discussions)
