Repository navigation
Conversation
5 of 17 tasks
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.
Part of #1.
What changes
src/answers.rsholds the answer set format and the answer check of spec/20 section 20.5. An answer set has one<query>.tsvfile for each query: a header line, then the rows in the text format of PostgreSQLCOPY, with\Nfor NULL. The check compares two answers as multisets of rows. It sorts both by all columns, with numbers sorted by value. Floats match within a relative 1e-9.dbgen/answers/q*.out) and applies TPC-H clause 2.1.3.5. Column values and counts must be equal. Sums may differ by 100. Averages may differ by 1 percent after rounding to 2 decimals. Ratios of sums (Q8, Q14, Q17) must pass both rules.sum(l_quantity)(Q1, Q18) must be equal (comment 4 of the clause). The column name in the answer file gives the kind of value.rupg-bench answers --expected PATH --actual PATHcompares a file or a directory and prints one line for each query. A wrong answer makes the command fail.src/report.rsis the report generator. It writesreports/<date>/<commit>-<machine>-<suite>.jsonand a Markdown file from the JSON file only. A smoke run gets-smokein its name and a line at the top that says that its numbers are not baselines. Text that the style check does not allow in Markdown goes into a code block or is escaped.rupg-bench report --result FILEwrites the two files from the--jsonoutput of a command.--suite,--machine,--commitand--smokefill the fields that the file does not have.src/json.rsgets a parser with a depth limit, and the writer now escapes every character that is not ASCII.Test
srvtestpassed on server3: clippy is clean and 34 tests pass.Answer check on server3, 7 October 2026. This was a test of the checker and not a baseline. I generated TPC-H SF1 in memory with the
tpchextension of DuckDB 1.5.6. Then I wrote the 22 answers withCOPY (<query>) TO 'actual/qN.tsv' (FORMAT csv, DELIMITER '\t', HEADER true, NULLSTR '\N', QUOTE '', ESCAPE ''). The query texts came fromtpch_queries(). Then I compared them to the 22 answer files ofduckdb/duckdb-tpchat0743d9b3.The other 17 queries pass. The 5 failures are real differences in the data. The built-in generator of DuckDB makes other address strings and other order comments than
dbgen3.0.1. Its own answer table,tpch_answers(), also gives 50004 for the first row of Q13, where the official set gives 50005. So the TPC-H driver must load the data of the pinneddbgenand not the data of a built-in generator. The first try also showed that the CSV writer of DuckDB quotes values that contain#. That is why the export usesQUOTE ''.Report on server3, 7 October 2026.
rupg-bench measure --unit cron.service --idle --jsonmeasured 10.0 s with 100 samples. Thenrupg-bench report --result idle-cron.json --suite idle-base --machine server3 --smokewrote2026-10-07/236a8e18-server3-idle-base-smoke.mdand.json.check.pyreports 0 issues on both files.