Repository navigation
test: a projection sorted on a type with no ordering is refused (0A000), not a backend crash; projections seeds the ledger (#1341) - #1375
Conversation
jdatcmd
left a comment
There was a problem hiding this comment.
Approving 9da30b1. Reproduced on PG18.
- Green: shell 76/76;
test_projections.py34 passed. - The crash is real. I deleted the
cmp_proc_finfoguard insrc/columnar_write_state.c. The server log then showsclient backend … was terminated by signal 11: Segmentation fault, and the shell arm fails:
FAIL a projection sorted on a type with no ordering (json) is refused (0A000): got [] want [0A000]
The pytest twin fails withgot '?' want '0A000', thenthe connection is closed.
Small notes, none blocking:
- The crash errors the same test's teardown, not the next test's fixture as the body says.
- The pytest docstring says the refusal comes "with the type named". The test checks only the SQLSTATE.
- "and nothing of it is declared" can't go red without the refusal arm going red too, because a crash rolls the declaration back. Its
neverrow says so honestly.
It conflicts with main now, so it needs a rebase and restatement before merge.
9da30b1 to
24d5577
Compare
|
Rebased onto 57f6e0e (#1401), on top of #1403. The new head is 24d5577. 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 |
24d5577 to
b7d45ee
Compare
|
Rebased onto 7da848d (#1432, #1409). The new head is b7d45ee; only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
b7d45ee to
00687ee
Compare
|
Rebased onto 1f7b5da (#1411, #1412, #1417, #1418). The new head is 00687ee. 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 (00687ee, on 1f7b5da with #1412's index-build change) is all green:
🤖 Generated with Claude Code |
|
Rebased onto 37ea557 (#1414, #1425). The new head is 7368633. Only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
00687ee to
7368633
Compare
|
Rebased onto f2bd5f1 (#1427). The new head is 025f105. Only the count files changed, so please re-approve this head.
🤖 Generated with Claude Code |
7368633 to
025f105
Compare
|
Rebased onto d5c0a5e (#1391). The new head is 225033c, so please re-approve this head.
🤖 Generated with Claude Code |
025f105 to
225033c
Compare
|
Rebased onto 2d1a77f (#1413–#1424). The new head is 7307576, so please re-approve this head.
🤖 Generated with Claude Code |
225033c to
7307576
Compare
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at 7307576, 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
…wn privileges, in both twins (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…d the refused tier writes no file, in both twins (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…ITY DEFINER (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
… back; both its branches echoed "ran" (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…e mutations of the RLS guard (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
… in both twins (commandprompt#1341, commandprompt#1397 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…uals (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…x, and the twin fails it by name rather than raising (commandprompt#1383 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
commandprompt#1383 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…name (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… arm runs with the configured list empty, in both twins (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n comparing two empty strings (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…andprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d the shell names 'empty' itself (commandprompt#1379 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…dated (commandprompt#1379 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VjTxfQJj5pnii9wzmPP9Ho
…l's name (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…0) and leaves nothing declared, in both twins (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts connections (commandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mandprompt#1341) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Restated for the chain you asked for. The new head is 326a2c1, so please re-approve this head.
🤖 Generated with Claude Code |
7307576 to
326a2c1
Compare
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at 326a2c1, 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
|
@OffgridwithJD, this link fails Here The loop will merge #1434 through #1378 as they go green, then stop at #1375 until it's fixed. 🤖 Generated with Claude Code |
…emise: prefix (commandprompt#1341) Review of commandprompt#1375 by jdatcmd: CI's suites (PG 17) ledger gate found the row seeded as 'premise: the drop really removed the projection' while projections.sh:410 and test_projections.py:795 name the check without the prefix, so the gate saw one check not in the ledger and one orphan row. The row is renamed and keeps its other fields. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@jdatcmd Thanks, that was my defect. Fixed in 875429d, so please re-approve this head.
Restacked onto it, with no other change: #1373 e56de60, #1371 f41f38b, #1404 ab57d12, #1402 1526d8e and #1372 f07760f. #1430 sits on #1372's old head (b3f4d6c), so it needs a rebase onto f07760f. If you'd rather I did that, say so. 🤖 Generated with Claude Code |
jdatcmd
left a comment
There was a problem hiding this comment.
Re-approved at 875429d. The one change beyond the head I approved is the ledger row renamed to drop premise:, matching projections.sh and its twin.
🤖 Generated with Claude Code
Part of #1341: the low error-paths item "a projection sorted on a type with no btree ordering is refused with 0A000".
add_projectiondoesn't check the sort column's type. The projection writer does, when it is built, and nothing reached that check.Arms (both twins)
A columnar table with a
jsoncolumn and 500 rows, thenadd_projection('pjs', 'pjp', ARRAY['id','j'], ARRAY['j']):projection_declarationrow namedpjp.The shell arm uses the suite's
proj_sqlstatehelper, notexpect_fail, becauseexpect_failwould accept the different error the mutant produces. It runs last in the suite, and its catalog check waits for a server that accepts connections, because……without the check, the backend crashes
The sort-type check removed, PG17, main c558971 against this branch:
So this check guards a crash, not just an error code.
Evidence
projectionshad no rows, so it is seeded with all 76. 2354 → 2430 rows, the census 1797 → 1872, and suites_not_covered 246 → 245. The arm is dated.cluster_tests533 → 534. Several of my open PRs take 534, so each restates.🤖 Generated with Claude Code