Skip to content

Reconnect 13.4-1 as an upgrade node in the extension update graph - #8649

Open
ihalatci wants to merge 3 commits into
mainfrom
ihalatci-sql-upgrade-path-gaps
Open

Reconnect 13.4-1 as an upgrade node in the extension update graph#8649
ihalatci wants to merge 3 commits into
mainfrom
ihalatci-sql-upgrade-path-gaps

Conversation

@ihalatci

@ihalatci ihalatci commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Problem

A GA'd 13.4 cluster cannot ALTER EXTENSION citus UPDATE into the 14.x/15.x line. 13.4-1 has no incident SQL scripts, so it is not a node in the extension update graph and Postgres path-finding fails with "no update path".

multi_extension upgrade tests do not catch this because they only walk edges that are present in the graph.

Fix

Reconnect 13.4-1 as a node by adding two empty version-bump scripts, byte-identical to the pattern already shipped on release-13.2:

  • src/backend/distributed/sql/citus--13.3-1--13.4-1.sql (forward)
  • src/backend/distributed/sql/downgrades/citus--13.4-1--13.3-1.sql (downgrade)

Plus a no-op multi_extension test excursion (13.3 → 13.4 → 13.3) asserting the reconnection is a pure no-op.

The Makefile auto-globs sql/*.sql and sql/downgrades/*.sql, so the new scripts install with no Makefile change.

Verification

  • Both SQL scripts are blob-hash identical to origin/release-13.2.
  • multi_extension regression: clean pass, no diffs.
  • The excursion leaves prev_objects at 13.3, so all downstream .out output is provably unaffected → (0 rows).

Scope: 4 files, +19 lines — only the 13.4-1 reconnection; no other edits.

A released 13.4 cluster could not ALTER EXTENSION citus UPDATE into the 15.0 line because 13.4-1 had no incident SQL scripts, so it was not a node in the extension update graph and Postgres path-finding failed with "no update path".

Add empty version-bump scripts (byte-identical mirrors of release-13.2's) so 13.4-1 becomes a resolvable node: sql/citus--13.3-1--13.4-1.sql and sql/downgrades/citus--13.4-1--13.3-1.sql.

Add a no-op 13.3->13.4->13.3 excursion to multi_extension; it leaves prev_objects at 13.3 so print_extension_changes() returns (0 rows) and downstream output is unaffected. Verified by a clean multi_extension regression.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@codecov

codecov Bot commented Jul 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.73%. Comparing base (204ce6f) to head (655b1e7).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8649      +/-   ##
==========================================
+ Coverage   88.72%   88.73%   +0.01%     
==========================================
  Files         288      288              
  Lines       64385    64385              
  Branches     8108     8109       +1     
==========================================
+ Hits        57125    57133       +8     
+ Misses       4915     4911       -4     
+ Partials     2345     2341       -4     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

14.2-1 had no incident SQL scripts on main, so it was not a node in the

extension update graph and 'ALTER EXTENSION citus UPDATE' from 14.2-1

failed with 'no update path'. Add empty version-bump scripts (byte-identical

to release-14.0) to reconnect the node, plus a no-op multi_extension test

excursion (14.1 -> 14.2 -> 14.1). Mirrors the 13.4-1 reconnection.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@ihalatci ihalatci added this to the 15.0 milestone Jul 8, 2026
@ihalatci
ihalatci marked this pull request as ready for review July 8, 2026 12:10
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.

2 participants