Repository navigation
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request due to rate limiting. Please try again later. See Usage limits for GitHub Copilot for details.
psiha
force-pushed
the
feat/duckdb-full-recalc
branch
2 times, most recently
from
November 4, 2026 20:43
667e376 to
a7bca7a
Compare
…ecalculates all of them DuckDB has no incremental calculation, so the entry no longer stands in for one: calculated tables are ordinary tables in the database file instead of in-memory TEMP tables, and a write, a load of new data or a model change runs all of calculate.sql instead of only the tables it reaches. R8 opens the file and builds nothing. The rebuild/ SQL is no longer generated for this entry, and its migrations build every table. The tests that recalculate everything export recalc: 'full'. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
psiha
force-pushed
the
feat/duckdb-full-recalc
branch
from
November 5, 2026 00:02
a7bca7a to
3a0ab15
Compare
A test result can carry "recalc": "full", copied by the runner from the test file's recalc export. The website draws such bars and cells grey with diagonal stripes, with the text 'not supported - full recalc results' in a legend and a tooltip, in both themes and at phone width. The time stays in the score. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…agged Describe the DuckDB entry's new setup, define the recalc marker and its presentation in the method, and remove the in-memory and partial-rebuild claims that applied to DuckDB. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
psiha
force-pushed
the
feat/duckdb-full-recalc
branch
from
November 5, 2026 03:26
3a0ab15 to
7062782
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DuckDB has no incremental calculation. The benchmark was working around that: it kept DuckDB's calculated tables as in-memory
TEMPtables and rebuilt only the tables a write reaches. That is help the system does not have, so this PR removes it and shows the gap instead.What changes
sql/calculate.sql). The partial-rebuild SQL (sql/rebuild/) is no longer generated for this entry, and the M1/M4 migrations build every table. Loads, reads, integer member ids and the other settings are unchanged.calc_state, says whether the calculated tables are current. A write commits its input change together withcalculated = false, calculates every table outside any transaction (DuckDB commits each statement by itself), then commitscalculated = true. An open that findsfalse, because the process died in a recalculation, calculates every table again before the first read. After a crash the first open pays one full recalculation; R8 normally builds nothing. A reader opens the file only after the write has returned, so it never reads a half-built state as valid."recalc": "full", set by a test file'srecalcexport and copied by the runner. Only the DuckDB entry sets it, on L2, L3, W1 to W8 and M1 to M4.tests/method.mddefines it.The mechanism is generic. The ClickHouse and PostgreSQL entries are not changed.
Caveats of DuckDB (also in the entry README,
results/README.mdand the website notice)BEGIN ... COMMIT(463 s withthreads = 1) against about 4 s with each statement committing by itself. On a 24-core machine it took 17 to 28 s. CPU-bound, no I/O wait. The cause is not established.Results (n2d-standard-4, local NVMe SSD, one run each, all 29 tests passed)
Run times: 10m 11.4 min (before 4.3 min), 100m 56.7 min (before 21.0 min). Peak resident memory of the run: 0.69 GB at 10m, 2.2 GB at 100m. The "before" numbers are the earlier setup (calculated tables in memory, only affected tables rebuilt).
Checks
generate.mjs --check(all generators) andwebsite/build.mjs --checkpass.calculated = false. The next start printed that the last recalculation did not finish, calculated every table again (7.3 s at 10m) and settrue. The proving read, the total EBIT, matched the same write run without a kill to the last digit of a double (relative difference 1.7e-16, summation order).Draft, open points
results/README.mdsay so. A 1b run is still to do.🤖 Generated with Claude Code