Skip to content

Refresh the version-adoption document, and rename it out of two majors (#390) - #411

Open
ChronicallyJD wants to merge 1 commit into
commandprompt:mainfrom
ChronicallyJD:fix/390-pg-adoption
Open

Refresh the version-adoption document, and rename it out of two majors (#390)#411
ChronicallyJD wants to merge 1 commit into
commandprompt:mainfrom
ChronicallyJD:fix/390-pg-adoption

Conversation

@ChronicallyJD

Copy link
Copy Markdown
Collaborator

Closes #390. Sequenced after #397, #398 and #399 reported, as I said on the issue, because
two of those three changed what the document should say.

Renamed

PG18_19_OPPORTUNITIES.md to POSTGRESQL_VERSION_ADOPTION.md. The old name pinned the
file to two majors and was already wrong in the filename, which is the least fixable place
to be wrong.

A rename leaves dangling links, so every reference is updated: design/ROADMAP.md (three),
design/gaps/29-read-stream-aio.md (two), test/generated_columns.sh (one). Grep for the
old name returns nothing but the sentence recording the rename.

Status table, dated, saying what became of each item

Three items now have measurements rather than expectations behind them:

item state
7. Partial-path startup costs (19) measured, changes no plan of ours (#397)
8. Parallel autovacuum (19) measured, parameter accepted and ignored (#398)
5. REPACK investigated, and the conclusion was wrong (#399)

Item 5 is corrected in place, not deleted

How it went wrong is the useful part, and it is the reason the rest of the file changed
shape.

It reasoned that REPACK dispatches through relation_copy_for_cluster, and that
pgColumnar implements that callback, therefore REPACK "should work". The dispatch
reasoning was correct. The callback is registered and is a stub that raises, so the
claim was true of the symbol and false of the behaviour.

That is why the file now records what was measured and carries dates on every status
note. A note without a date has not been checked, and the file says so.

Eight items from the 19 notes it never mentioned

Including the one that would have broken the build: get_relation_info_hook is removed
in 19
and replaced by build_simple_rel_hook. We already gate it. The gate is now
recorded with its file and line, because nothing else explains why the
#if PG_VERSION_NUM >= 190000 is there, and the next person to tidy it up should know.

A watching section for 20, with no feature list

Deliberate. PostgreSQL 19 is not released, master has had one commitfest, freeze is around
April 2027, and anything in it can be reverted. A list would be invention that someone
reads as a commitment.

One thing is worth watching: 19 made index AM handlers use a static IndexAmRoutines. A
TableAmRoutine counterpart would touch our handler directly.

The revised order

Nothing from 19 is urgent. Both items measured this week came back negative for us, and
#398 is the only one with a user-visible defect attached.

Design docs and one comment in a test. No user-facing documents changed, ste_check clean.

Renamed PG18_19_OPPORTUNITIES.md to POSTGRESQL_VERSION_ADOPTION.md. The old name
pinned the file to two majors and was already wrong in the filename, which is the
least fixable place to be wrong. Every reference to the old name is updated, in
ROADMAP.md, gaps/29-read-stream-aio.md and generated_columns.sh.

A status table at the top, dated, saying what became of each item rather than
only that it closed. Three of them now have measurements behind them:

  7. partial-path startup costs (19)  measured, changes no plan of ours (commandprompt#397)
  8. parallel autovacuum (19)         measured, parameter accepted and ignored (commandprompt#398)
  5. REPACK                           investigated, and the conclusion was wrong (commandprompt#399)

Item 5 is corrected in place rather than deleted, because how it went wrong is
the useful part. It reasoned that REPACK dispatches through
relation_copy_for_cluster and that pgColumnar implements that callback. The
dispatch was right. The callback is registered and is a stub that raises, so the
claim was true of the symbol and false of the behaviour. That is why the file now
records what was measured and carries dates.

Eight items from the 19 release notes that the document never mentioned,
including the one that would have broken us: get_relation_info_hook is removed in
19 and replaced by build_simple_rel_hook. We already gate it, and the gate is now
recorded with its file and line, because nothing else explains why the #if is
there.

A watching section for PostgreSQL 20 with no feature list, deliberately. 19 is
not released, master has had one commitfest, freeze is around April 2027, and
anything in it can be reverted. The one thing worth watching is whether the
static IndexAmRoutines change grows a TableAmRoutine counterpart, which would
touch our handler.

The suggested order is revised: nothing from 19 is urgent, since both items
measured this week came back negative for us.
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.

Analyze PostgreSQL 18, 19 and the upcoming 20 branch for features we can support

1 participant