Skip to content

D-GLOBAL-WHERE P0 follow-up: fail parity gate on missing comparisons; EXPLAIN after cold (lab) - #1946

Merged
AdaWorldAPI merged 2 commits into
mainfrom
ccr-85acaff0-oszq40-global-where-fix
Nov 3, 2026
Merged

AdaWorldAPI merged 2 commits into
mainfrom
ccr-85acaff0-oszq40-global-where-fix

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Lab only. No production change. This is a narrow follow-up to #1943, which merged before its review fix was pushed. It cherry-picks b7abb74e6 (as 54db91208) onto fresh main; the cherry-pick applied without conflicts. One small commit then recomputes the coverage count.

All changes are under .claude/probes/2026-11-03-d-global-where/, plus the count in the P0 board entry.

What changes

The fixes address the two Codex P2 findings on #1943. Benchmark semantics are unchanged: same SQL, same data, same measurement procedure for every cell.

  • duckdb/compare.py: exits 1 on any missing comparison, in either direction, and when the DuckDB results do not cover exactly threads {1, 4}. DuckDB's W8 is W2 measured before the DELETE, so its answer is now checked against ours W2; those 24 comparisons were previously skipped.
  • duckdb/bench_duckdb.py: EXPLAIN ANALYZE now runs after measure() and floor_us(), on its own fresh connection. It therefore cannot pre-warm the cold figure, and the engine-time profiling mode set on the measuring connection cannot turn the plan text into JSON.
  • results/duckdb.json: the 20 records affected by the pre-warm (dr256_medium and multi_skewed at threads=1) were re-measured with the fixed order and replaced; their answers are identical.
    • No cold verdict changed.
    • One warm wall verdict moved from WIN to PARITY (multi_skewed W7i, route_each).
    • results/explain/ was regenerated, and the 3,726,779 intermediate-row figure still holds.
  • REPORT.md: carries a correction note in §3.2; the two re-measured t=1 figures and the coverage count are updated.

Verified on this tree

input compare.py
complete results exit 0: 360/360 answers agree
empty ours.json exit 1 (120 missing)
empty duckdb.json exit 1 (109 missing)
one ours record dropped (multi_dense W4) exit 1 (1 missing)
thread-1 records removed exit 1 (121 missing)
thread-4 records removed exit 1 (121 missing)
one W8 answer corrupted exit 1 (1 mismatch)
  • Coverage, recomputed: 12 datasets × 10 workloads, 240 DuckDB records and 168 of ours, giving 360 answer comparisons (arm × thread). That is the original 336 plus 24 W8 before-delete checks.
  • EXPLAIN ordering: in run_one, measure (line 191) and floor_us (192) run before EXPLAIN ANALYZE (201), which uses a separate connection (econ, line 198).
  • Report vs results: every DuckDB figure cited in REPORT.md §3.2 matches results/duckdb.json, within 1 µs of rounding.

No merge requested.


Generated by Claude Code

…fter cold

Review fixes (Codex P2 x2):
- compare.py exits 1 on any missing comparison in either direction and on a
  thread set other than {1,4}; DuckDB's W8 (W2 before DELETE) is checked
  against ours W2. Verified: complete results exit 0, empty ours.json and a
  threads=1-only run exit 1, a corrupted W8 answer exits 1.
- bench_duckdb.py collects EXPLAIN ANALYZE after measurement on a separate
  connection, so it no longer pre-warms the cold figure (and the engine-time
  profiling mode cannot turn the plan into JSON). The 20 affected records
  (dr256_medium, multi_skewed, t=1) were re-measured and spliced; answers
  identical, no cold verdict changed, one warm verdict WIN -> PARITY.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…mparisons)

With W8 (W2 before DELETE) now checked against ours W2, the gate compares
360 answers, not 336. REPORT.md and the P0 board entry updated. Verified on
this tree: complete data exit 0; empty ours, empty duckdb, a dropped ours
record, missing thread-1 and missing thread-4 coverage, and a corrupted W8
answer each exit 1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 01274700-c89c-476b-af48-2550e9e67a43
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

AdaWorldAPI pushed a commit that referenced this pull request Nov 3, 2026
…ompare_big

Same rule as the P0 fix (#1946): coverage is enforced in both directions,
DuckDB results must cover exactly threads {1,4}, and any missing comparison
exits 1 instead of becoming a note under an all-agree verdict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review November 3, 2026 21:20
@AdaWorldAPI
AdaWorldAPI merged commit cd0d0fb into main Nov 3, 2026
4 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-03T21:21:53.565939Z 90abc8a Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

AdaWorldAPI pushed a commit that referenced this pull request Nov 3, 2026
…ompare_big

Same rule as the P0 fix (#1946): coverage is enforced in both directions,
DuckDB results must cover exactly threads {1,4}, and any missing comparison
exits 1 instead of becoming a note under an all-agree verdict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
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