v14.2 / 13.4 (Aug 2026)

What’s new in Citus 14.2 and 13.4?

Welcome to the combined release notes for Citus 14.2 and Citus 13.4. These paired minor releases bring shared features and fixes to the 14.x line (PostgreSQL 16, 17, and 18) and the 13.x line (PostgreSQL 14, 15, 16, and 17).

Citus 14.2.0 and Citus 13.4.0 are available now on GitHub.

This page covers the highlights in both versions:

Distribute existing objects to workers

Citus 14.2 / 13.4 adds citus_internal.distribute_object(), a superuser-only repair UDF that manually propagates an existing object to the worker nodes as a distributed object.

This is useful when an object that should already exist on the workers is missing there. Rather than recreating the object, an administrator can use the UDF to repair its distribution.

Tracked in #8621.

Opt in to more INSERT ... SELECT pushdown

The new citus.allow_unsafe_insert_select_pushdown setting allows shard-local batched INSERT ... SELECT pushdown for colocated tables in workloads that call expensive batch-oriented UDFs.

The setting is opt-in because Citus cannot guarantee that every UDF used by the query is safe to evaluate in the pushed-down plan. Enable it only when the UDFs in the workload are safe to run this way.

Tracked in #8625.

Operational improvements

  • Fewer coordinated transactions for eligible procedure calls. Single-statement, single-shard procedure calls can now avoid 2PC when PL/pgSQL static analysis determines that a coordinated transaction is unnecessary. Tracked in #8566.

  • Safer sequence handling when promoting a clone node. Citus re-ranges sequences to the new group ID so distributed, reference, and Citus local tables keep globally unique sequence values. Tracked in #8638.

  • Cleanup after promoting a coordinator clone. Citus drops orphaned Citus local table shard copies on a worker promoted from a clone of the coordinator. Tracked in #8651.

  • Consistent ownership checks for internal UDFs. Citus now enforces object ownership for more citus-internal UDFs. Tracked in #8587.

Notable fixes

  • Correct results when recursive planning projects columns as NULL. Fixes incorrect results for restrictions such as NOT (x IS DISTINCT FROM y). Fixed in #8497.

  • Safer UPDATE and DELETE planning. Fixes a crash and could not find valid entry for shard errors when distribution-key equality is combined with an always-false predicate. Fixed in #8692.

  • No stale-snapshot race in shard cleanup. Fixes a race where a stale catalog snapshot could cause an in-use shard to be dropped. Fixed in #8594.

  • Correct typing with COLLATE and casts. Fixes a type mismatch in distributed queries that use COLLATE together with a type cast. Fixed in #8498.

  • Stable EXPLAIN for correlated subqueries. Fixes a segfault for queries with a LEFT JOIN and correlated subqueries. Fixed in #8556.

  • Writes on a standby coordinator no longer crash. Fixes a crash when writing to a coordinator-local shard on a writable standby coordinator. Fixed in #8561.

Citus 14.2 also fixes an unexpected must be owner of extension error when CREATE EXTENSION IF NOT EXISTS targets an already-distributed extension. The ownership check is skipped in that case. Fixed in #8465.