Repository navigation
test: recluster recomputes the column extent, in both twins (#1341 item 75) - #1410
Conversation
jdatcmd
left a comment
There was a problem hiding this comment.
Reproduced at ecf5efe on PG18. column_extent is 42/42. With PgColumnarExtentMarkRecompute removed from PgColumnarRetireGroup, it's 36 + 6: the two new recluster arms (after recluster the extent is the live rows', and it did move) plus the four existing expire, compact_rewrite and VACUUM arms, as you report.
One non-blocking note on the ledger: re-merging the shared mutation moves the four existing rows' dates from 2026-10-14 to 2026-10-15. Nothing breaks, but those rows were already dated by the same mutation, so the change is churn in rows this PR doesn't otherwise touch, and every concurrent ledger PR has to resolve it. Next time, merging the log with --target naming only the new checks keeps main's rows as they are. I'm not asking for a change here.
Approving. Restate onto main and I'll merge.
🤖 Generated with Claude Code
|
Correction to my review note: 🤖 Generated with Claude Code |
ecf5efe to
289f5fc
Compare
|
Rebased onto 57f6e0e (#1401), on top of #1403. The new head is 289f5fc. Only the count files changed, so this needs your re-approval.
🤖 Generated with Claude Code |
|
Re-run finished on the tree after #1403 (758039f or later). Everything is green, so the head above stands:
🤖 Generated with Claude Code |
289f5fc to
76d7d2d
Compare
|
Rebased onto 7da848d (#1432, #1409). The new head is 76d7d2d; only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
76d7d2d to
7153782
Compare
|
Rebased onto 1f7b5da (#1411, #1412, #1417, #1418). The new head is 7153782. Only the count files changed, plus TESTS.md section numbers where main took 115, so please re-approve this head.
🤖 Generated with Claude Code |
|
The PG18 re-run on this head (7153782, on 1f7b5da with #1412's index-build change) is all green:
🤖 Generated with Claude Code |
|
Rebased onto 37ea557 (#1414, #1425). The new head is 27ae78c. Only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
7153782 to
27ae78c
Compare
|
Rebased onto f2bd5f1 (#1427). The new head is 8952bd7. Only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
27ae78c to
8952bd7
Compare
|
Rebased onto d5c0a5e (#1391). The new head is 271e45f, so please re-approve this head.
🤖 Generated with Claude Code |
271e45f to
b03efe1
Compare
|
Rebased onto 2d1a77f (#1413–#1424). The new head is b03efe1, so please re-approve this head.
🤖 Generated with Claude Code |
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at b03efe1, the rebase onto 2d1a77f. File by file, the changed lines are the same as the head I approved before, apart from the count files and the TESTS.md section number.
🤖 Generated with Claude Code
…ws are reworded The mutation column is a ';'-separated set, written back sorted. A --mutation whose text held "; " was stored as two mutations, one a fragment starting with a space, and every later merge re-sorted it. commandprompt#1427's recovery_minimal_wal text did this to 8 rows, and commandprompt#1423, commandprompt#1424 and commandprompt#1426 each carried them as a change of their own. Four older harness_selftest rows were split the same way. - merge refuses a --mutation holding ';' (rc 2, ledger untouched). - the reader refuses a ';'-piece with whitespace at an end, by line: the writer joins with a bare ';', so such a piece is a fragment, never a mutation. - the 12 rows are reworded without ';', from their original text in history. Only field 6 changes; the census stays 3007 / 2282 / 725. Red first: the two refusal arms got 0 want 2 on the unchanged tool, and the committed-ledger arm was red at line 1783 with the refusal in and the rows not yet reworded. guard_tests 435 -> 438 by collection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rompt#1341 item 75) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…ment-mark mutation (commandprompt#1341 item 75) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
|
Restated for the chain you asked for. The new head is 639fc19, so please re-approve this head.
🤖 Generated with Claude Code |
b03efe1 to
639fc19
Compare
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at 639fc19, its place in the chain on 17420be. This PR's own commits, measured from the link below it, change the same lines as the head I approved before, apart from the count files and the TESTS.md section number.
🤖 Generated with Claude Code
Closes item 75 on #1341.
The changelog says that every operation that drops or rewrites row groups (
expire,compact_rewrite,VACUUM,recluster) recomputes the column extent before commit. So the extent is never narrower than the data, and wider only by rows deleted but still stored.column_extent.shandtest_column_extent.pyhad arms for the first three and none for recluster.The product already does it: all four go through the one mark in
PgColumnarRetireGroup. So this PR adds the missing arm, in both twins, and dates it by removing that mark.Arms, independent fixtures in each twin. A table whose deleted rows hold the timestamp minimum is reclustered on
(ts, v):recluster rewrites the table's row groups(≥ 1);after recluster the extent is the live rows', which iscolumn_extent()againstmin/maxover the data;and it did move: the deleted rows held the old minimum, so an extent that was never written can't pass.Evidence:
column_extent.sh42/42 on each of PG15–19, andtest_column_extent.py7 passed on PG17 and PG18.PgColumnarExtentMarkRecomputeremoved from group retirement. The shell twin is 36 + 6: the two new recluster arms, plus the four existing expire, compact_rewrite and VACUUM arms. The pytest twin stops at its first arm, expire. A recluster-only run of its new block under the same mutant is red atafter recluster the extent is the live rows'(the old minimum is kept).Ledger:
cluster_testsis unchanged.🤖 Generated with Claude Code