Skip to content

test: differential's float sum/avg arm asks for two numbers, and its text-bloom C arm probes a value that is there (#1339) - #1490

Merged
jdatcmd merged 1 commit into
mainfrom
test/1339-differential-float-shape
Oct 17, 2026
Merged

jdatcmd merged 1 commit into
mainfrom
test/1339-differential-float-shape

Conversation

@jdatcmd

@jdatcmd jdatcmd commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

Fixes two #1339 entries for test_differential.py, both [vacuous]: :291 and :842. The box's :895 [inaccurate] stays open.

:291: "c_f4|c_f8 sum/avg returns the same shape"

It compared len() of a two-column row, which is 2 whatever the data.

  • Fixture mutant: c_f4 / c_f8 set to NULL in the columnar table only.
  • Main: the accounting records the arm as pass, then the test dies on an unnamed TypeError in the tolerance arithmetic.
  • Here: the arm is now " sum/avg returns two numbers on both sides". Under the mutant it's a named red with the values: columnar (None, None) heap (33773584.0, 2990.23…).

:842: "textbloom C eq"

It probed tc = 'c123'. tc holds 16,000 distinct values out of 50,000, and c123 isn't one of them (computed from the generator), so both sides counted 0. A bloom filter wrongly skipping the chunk couldn't show. Both twins now probe row 7's value, 'c' || ((7*40503)%50000), the way "textbloom present" already probes tk. The name is kept for parity and the ledger.

Measured, PG17, with mutants of the reader's bloom check (columnar_reader.c):

mutant main here
skip every chunk shell: "textbloom C eq" green shell: red
skip only under the C collation pytest: 7/7 green pytest: red, got ['(0,)'] want ['(1,)']; shell: red, its only red (203 + 1)

Ledger

The C-only shell log dates "textbloom C eq", and that check is its only red. Census: never 2990 → 2989, dated 1199 → 1200. No row is added, removed or renamed. This PR's budget paragraph will be re-anchored after whichever ledger PR lands first.

Matrix

  • both twins green on PG15–19 (shell 204/204, pytest 85 tests / 232 checks);
  • harness_selftest 1246;
  • collection 722;
  • guards 438/438;
  • ledger gate rc 0.

The PG17 legs were rerun on a clean install, because a mutant build of mine overlapped the first run.

🤖 Generated with Claude Code

@jdatcmd

jdatcmd commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator Author

Re-anchored onto main 15c6eaf after #1484 and #1486 landed: 63ebe72. Bookkeeping only. The budget paragraph now reads 2972 → 2971 never and 1217 → 1218 dated; the gate returns rc 0 and the guards pass, 438/438.

@OffgridwithJD OffgridwithJD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jdatcmd Approve, at 63ebe72. I reviewed bb5b510 on PG17 and PG18. Your re-anchor keeps both twin files' patches byte-identical, and the census is 4189 / 2971 / 1218, which equals checks_never_observed_red 2971 on main 15c6eaf3.

  • Head: both twins green on both majors (shell 204/204, pytest 85).
  • :842: checked in SQL on the generator, 'c123' is in 0 rows and row 7's c33521 is in exactly 1. With the reader's bloom check skipping only under the C collation, the new probe reddens both twins on both majors. In the shell it is the only red; in pytest it is got ['(0,)'] want ['(1,)']. The origin/main files stay fully green under that mutant. With the skip-every-chunk mutant the shell reddens it too, and main's does not. In pytest, "textbloom present" goes red first there, which your table already says.
  • :291: with c_f4/c_f8 NULL in the columnar table only, the new arm is a named red with the values (columnar (None, None) heap (33773584.0, 2990.23…)). Main's file counts "same shape" as a pass, then dies on the TypeError. The name says what it checks: both rows are two numbers.
  • Ledger: the dated row's mutation has no ;, and the C-only shell log's only red is that row. Parity has 0 missing, the grader gives 40/40, and the guards 438/438.

🤖 Generated with Claude Code

@jdatcmd

jdatcmd commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, your stack has landed (main 915c19d), so I've restated my two ledger PRs as a chain on it. Both need only a bookkeeping re-approval:

PR approved new head stacked on
#1490 63ebe72 29387c2 main
#1501 a9d0acd cf918a7 #1490

Verified for each, against the head you approved:

  • the patches of every non-budget file are byte-identical;
  • the ledger rows changed are identical (sorted diff, md5 match);
  • only the budget paragraph is re-anchored.

Census: #1490 at 4388 / 3057 / 1331; #1501 on top at 4394 / 3059 / 1335. The gate returns rc 0 for each, and the guards pass, 438/438.

I'll merge #1490 and then #1501 once you've re-approved both.

@jdatcmd

jdatcmd commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, a nudge, since you're back: #1490 (29387c2) → #1501 (cf918a7) still need only the bookkeeping re-approval described above. Both are green and CLEAN. #1510 (native_skip twin completed, plus a real shell defect it found) is waiting on your review too.

@jdatcmd
jdatcmd force-pushed the test/1339-differential-float-shape branch from 29387c2 to 0b7394b Compare October 16, 2026 20:03
@jdatcmd

jdatcmd commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, #1511 landed, so the chain is restated once more, on main 5f38bbe. Both are bookkeeping-only against the heads you approved: the twin patches and ledger rows are unchanged, and only the budget paragraph is re-anchored.

PR new head census
#1490 0b7394b 4396 / 3054 / 1342
#1501 05a8c2d (on #1490) 4402 / 3056 / 1346

The gate returns rc 0 for each, and the guards pass, 439/439. This restate churn is #1431's subject; it's three rounds for this chain now.

@jdatcmd

jdatcmd commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator Author

@OffgridwithJD, the review queue, in the order I will merge. All six are green and CLEAN:

  1. test: differential's float sum/avg arm asks for two numbers, and its text-bloom C arm probes a value that is there (#1339) #1490 at 0b7394b6: re-approval (approved at 63ebe726).
  2. test: native_parquet_pushdown checks the row-group edges, where an inclusive bound read as exclusive skips the match (#1496 review) #1501 at 05a8c2d3: re-approval (approved at a9d0acd8). It is stacked on test: differential's float sum/avg arm asks for two numbers, and its text-bloom C arm probes a value that is there (#1339) #1490.
  3. test: native_skip's pytest twin covers every shell arm, and the shell's non-C half runs at last (#1341) #1510 at d6ef25bb: re-review. Your A–D asks from 2bfd5150 are answered on the PR.
  4. test: native_agg's pytest twin covers every shell arm (#1341) #1514 at 5e413ba6: first review (native_agg twin).
  5. test: the loop-coverage sweep's premise reads what the sweep saw (#1339) #1515 at c0ab1087: first review (three pytest audit: 260 confirmed checks that cannot fail, prove something else, or carry the wrong label #1339 entries in test_loop_coverage_premise.py).
  6. test: latest_reading holds the GROUP BY recipe to reading the table once (#1339) #1516 at d256a33b: first review (pytest audit: 260 confirmed checks that cannot fail, prove something else, or carry the wrong label #1339 High entry, latest_reading).

#1513 (yours) is approved at b3ec495e and waits on your rebase.

#1501 and #1516 both touch check_ledger_budget.txt, so whichever merges second gets rebased.

@jdatcmd
jdatcmd force-pushed the test/1339-differential-float-shape branch from 0b7394b to 9e0e755 Compare October 16, 2026 23:25
@jdatcmd
jdatcmd force-pushed the test/1339-differential-float-shape branch 2 times, most recently from 07837e6 to d1beb00 Compare October 17, 2026 00:35
…text-bloom C arm probes a value that is there (#1339)

Two #1339 entries for test_differential.py, both [vacuous].

:291. "c_f4|c_f8 sum/avg returns the same shape" compared len() of a
two-column row, which is 2 whatever the data. With the columnar float
column set to NULL (a fixture mutant), main's arm PASSED, then the test
died on an unnamed TypeError in the tolerance below. It is now "<col>
sum/avg returns two numbers on both sides", and under that mutant it is
red with the values: "columnar (None, None) heap (33773584.0, ...)".

:842. "textbloom C eq" probed tc = 'c123'. tc holds 16,000 distinct
values of 50,000 and 'c123' is not one, so both sides counted 0, and a
bloom wrongly skipping the chunk could not show. Both twins now probe
row 7's value, 'c' || ((7*40503)%50000), the way "textbloom present"
probes tk. Measured, PG17:
- the reader's bloom check skipping every chunk: main's shell passes
  "textbloom C eq"; this shell reddens it;
- the same, only under the C collation: main's pytest passes 7/7; this
  pytest reddens it, "got ['(0,)'] want ['(1,)']", and this shell
  reddens it as its only red (203 + 1 = 204). That log dates the row;
  census 2990 -> 2989 never, 1199 -> 1200 dated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jdatcmd
jdatcmd force-pushed the test/1339-differential-float-shape branch from d1beb00 to 5e8ccf0 Compare October 17, 2026 01:22

@OffgridwithJD OffgridwithJD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jdatcmd Re-approving at 5e8ccf0. The range-diff against 63ebe72, the commit I approved, shows only the restate over #1521: 3079 -> 3078 never, 1369 -> 1370 dated, 4448 rows. 3078 + 1370 == 4448, and CI is green.

🤖 Generated with Claude Code

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