Repository navigation
A minor bump, and the rule at the top of this file is why. The ClickBench planner route stops charging firepanda for reading its grammar tables on every timed query, which takes one to one and a half milliseconds off each query through that route. It is a fixed amount a query, so it moves the fast half of the planner comparison and not the slow half, and a planner number written before this is not comparable with one written after it. The engine table is the hand written route and nothing in it moves. The driver needs firepanda 0.8.26 or later.
The ClickBench planner route stops paying for firepanda's grammar tables on every query
The planner route called firepanda.sql.run, which built the grammar, the jump table built from it and the function catalog on every statement and threw them away. Those three are read out of generated tables, do not depend on the statement, the catalog or the data, and are never written to after they are built. The driver now builds one Dialect for the process, next to the catalog registration that was already outside the clock, and run_clickbench_sql takes it. Parsing, binding, optimizing and lowering are still timed, and the suite README writes down the test for which side of the clock something falls on.
This is what every other engine here already gets. A DuckDB connection carries its parser tables and its function registry, the suite opens it in load and times connection.execute, and pandas and Polars parse no SQL here at all.
Two drivers built from the same source with and without the change, run back to back, six interleaved rounds of five runs a query: the paired median saving was 1.15 ms on q21, 1.15 on q24, 1.55 on q30, 1.05 on q38 and 1.51 on q42, and 29 of the 30 pairs went the same way. A full planner pass agrees on all 43 answers. It is a fixed amount a query, so it moves the fast half of the suite and not the slow half, and planner numbers from before and after this are not comparable. That is why the release carrying it is a minor one.
The driver needs firepanda 0.8.26 or later, which is the release that added Dialect. Closes #108.