Skip to content

Bump PG minor versions on release-13 (15.19 / 16.15 / 17.11) - #241

Merged
ibrahim halatci (ihalatci) merged 1 commit into
release-13from
bump-pg-minors-release-13-20260815
Aug 19, 2026
Merged

Bump PG minor versions on release-13 (15.19 / 16.15 / 17.11)#241
ibrahim halatci (ihalatci) merged 1 commit into
release-13from
bump-pg-minors-release-13-20260815

Conversation

@ihalatci

Copy link
Copy Markdown
Contributor

Bumps the PostgreSQL minor versions tracked on release-13 to the latest 2026-08-14 releases:

Major Was Now
15 15.18 15.19
16 16.14 16.15
17 17.10 17.11

All three minors are available on apt.postgresql.org for bookworm (pgdg12+2).

Only circleci/images/PG_VERSIONS is touched. The GitHub Actions build-test-images workflow will rebuild the matrix on push.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

PG15 15.18->15.19, PG16 16.14->16.15, PG17 17.10->17.11.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@ihalatci
ibrahim halatci (ihalatci) merged commit 7a09c75 into release-13 Aug 19, 2026
26 of 27 checks passed
ibrahim halatci (ihalatci) added a commit to citusdata/citus that referenced this pull request Aug 19, 2026
Validation PR for the-process
[#241](citusdata/the-process#241). Repoints CI
at the freshly built dev images carrying the new PostgreSQL minors
published 2026-08-14/15.

| | before | after |
|---|---|---|
| PG15 | 15.18 | 15.19 |
| PG16 | 16.14 | 16.15 |
| PG17 | 17.10 | 17.11 |

`image_suffix`: `-dev-34d3b6f`

---

## Fallout from the new minors

Validation surfaced two independent PostgreSQL security changes in this
minor set that break Citus.

### 1. psql `COPY FROM STDIN` (fixed here)

When a `COPY` fails early, the new psql silently swallows every line up
to and including the next `\.`. Tests that relied on the old behaviour
were adjusted: a terminating `\.` was added where one was missing, stray
statements after a swallowed block were removed, and expected output was
trimmed for the lines that no longer execute.

### 2. `output_plugin_libraries` (fixed here)

PostgreSQL 14.24, 15.19, 16.15, 17.11 and 18.6 add an
`output_plugin_libraries` GUC. Only the libraries it lists may be used
as logical decoding output plugins. It defaults to `pgoutput,
test_decoding` and is `superuser`-settable, so it takes a reload rather
than a restart.

**Upgrade note for operators.** Citus uses an output plugin named
`citus` for logical replication during non-blocking shard splits. On
these minors the following fail until the plugin is allowed:

* `citus_split_shard_by_split_points(..., 'force_logical')` and `'auto'`
* `create_distributed_table_concurrently()`
* `citus_isolate_tenant_to_new_shard(..., 'force_logical'` / `'auto')`

Shard **moves** and the rebalancer are unaffected -- they use
`pgoutput`. CDC through the `pgoutput` shim is unaffected; CDC through
`wal2json` needs the same treatment, exactly as it does on vanilla
PostgreSQL.

Remediation, on **every** node:

```sql
ALTER SYSTEM SET output_plugin_libraries = pgoutput, test_decoding, citus;
SELECT pg_reload_conf();
```

The GUC is `GUC_LIST_QUOTE`, so quoting the whole list (`'pgoutput,
test_decoding, citus'`) stores it as a single name and does **not**
work. Use the bare list above, or quote each element individually.

This PR does not work around the restriction -- allowing a decoder is
deliberately an operator action. Instead Citus now **fails fast and
clearly**: a preflight check runs against the source node before any
shards, publications or replication slots are created, and raises an
error naming the plugin, the node, the current allowlist value, and a
ready-to-paste `ALTER SYSTEM` hint.

### Testing

The regression and CDC harnesses start their own clusters, so in CI *we*
are the operator: `pg_regress_multi.pl` and `cdctestlib.pm` now write
the allowlist themselves, guarded by a probe of `postgresql.conf.sample`
so they stay compatible with older minors where the GUC does not exist.

To keep the un-remediated path covered, a new
`check-split-output-plugin-denied` job deliberately skips that override
(via `CITUS_TEST_SKIP_OUTPUT_PLUGIN_ALLOWLIST=1`) and asserts that a
non-blocking split fails with the new error and leaks no shards,
publications or replication slots.

---

**Draft:** these are `-dev-` images. Do not merge until the-process
[#241](citusdata/the-process#241) is merged and
this PR is repointed at the resulting release image tag.

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7c6370b2-06fd-4491-bf92-ecb811d34518
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant