[CI only] Bump PG minors to 16.15 / 17.11 / 18.6 - #8777
Open
ibrahim halatci (ihalatci) wants to merge 5 commits into
Open
[CI only] Bump PG minors to 16.15 / 17.11 / 18.6#8777ibrahim halatci (ihalatci) wants to merge 5 commits into
ibrahim halatci (ihalatci) wants to merge 5 commits into
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## release-14.0 #8777 +/- ##
================================================
- Coverage 88.55% 79.01% -9.54%
================================================
Files 289 289
Lines 64566 64583 +17
Branches 8116 8119 +3
================================================
- Hits 57177 51031 -6146
- Misses 5048 10740 +5692
- Partials 2341 2812 +471 🚀 New features to boost your workflow:
|
PostgreSQL 14.24/15.19/16.15/17.11/18.6 changed psql so that a COPY ... FROM STDIN which fails before entering copy-data mode now silently swallows every following line up to and including the next backslash-dot. Previously psql read those lines as SQL and reported "invalid command \.". Three shapes are affected: * .sql files where a deliberately-failing COPY had no terminator: add one. * expected/ files that recorded the now-vanished data / terminator / invalid-command lines: drop them. * multi_multiuser_copy.sql had a stray bare ";" after the terminator, which under the new behaviour re-enters copy mode and swallows the rest of the file: remove it. No test coverage is lost; only psql echo artefacts change.
PostgreSQL 14.24, 15.19, 16.15, 17.11 and 18.6 only allow the logical decoding output plugins listed in "output_plugin_libraries". Citus uses the "citus" plugin for non-blocking shard splits, so splits now fail up front with an actionable error instead of a bare PostgreSQL error after shards, publications and replication slots have been created. Also allow the plugin in the regression and CDC test harnesses, and add a check-split-output-plugin-denied CI job that deliberately leaves it out so the new error keeps negative coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7c6370b2-06fd-4491-bf92-ecb811d34518
- split_output_plugin_denied: DROP SCHEMA reports the unqualified table name, so drop the schema prefix from the expected NOTICE. - failure_copy_to_reference / failure_copy_on_hash: terminate the psql \copy blocks that send no data. Newer psql swallows everything up to the next \. when a COPY fails, which silently skipped the following test blocks. - shard_split.c: two blank lines between top-level definitions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7c6370b2-06fd-4491-bf92-ecb811d34518
The PostgreSQL minor bumps have merged in the-process, so switch from the pull-request dev image tags to the release tags built from the merge commits. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7c6370b2-06fd-4491-bf92-ecb811d34518
ibrahim halatci (ihalatci)
marked this pull request as ready for review
August 19, 2026 20:57
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Validation PR for the-process #242. Repoints CI at the freshly built dev images carrying the new PostgreSQL minors published 2026-08-14/15.
image_suffix:-dev-b970981Note: PostgreSQL 18.5 was never released (withdrawn after a regression), so 18.4 -> 18.6 is the correct step.
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
COPYfails 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_librariesGUC. Only the libraries it lists may be used as logical decoding output plugins. It defaults topgoutput, test_decodingand issuperuser-settable, so it takes a reload rather than a restart.Upgrade note for operators. Citus uses an output plugin named
citusfor 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 thepgoutputshim is unaffected; CDC throughwal2jsonneeds the same treatment, exactly as it does on vanilla PostgreSQL.Remediation, on every node:
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 SYSTEMhint.Testing
The regression and CDC harnesses start their own clusters, so in CI we are the operator:
pg_regress_multi.plandcdctestlib.pmnow write the allowlist themselves, guarded by a probe ofpostgresql.conf.sampleso 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-deniedjob deliberately skips that override (viaCITUS_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 #242 is merged and this PR is repointed at the resulting release image tag.