tursodatabase/turso · error · SystemExit
no results found
Error message
no results found
What it means
Generic input validation in the TPC-H plotting script's main(): after parsing the benchmark result CSV files, no rows matched the expected result set (e.g. the CSVs are empty, malformed, or contain different engine/query labels than the plot expects), so there is nothing to plot and the script aborts. It fires whenever the supplied CSV files yield zero usable result entries.
Source
Thrown at perf/tpc-h/plot/plot-tpch.py:66
# column of engine names at its left is, in cm.
TABLE_ROW_HEIGHT = 0.36
TABLE_LABEL_WIDTH = 0.95
def main():
parser = argparse.ArgumentParser()
parser.add_argument("csv_files", type=Path, nargs="+")
parser.add_argument("--out", type=Path, default=Path("tpch"), metavar="PREFIX",
help="write PREFIX.png, PREFIX.pdf and PREFIX.tikz (default tpch)")
parser.add_argument("--name", action="append", default=[], metavar="ENGINE=NAME",
help="legend name for an engine, e.g. limbo=Turso")
args = parser.parse_args()
names = dict(name.split("=", 1) for name in args.name)
runs = [read_run(path) for path in args.csv_files]
columns = runs[0].columns
if not runs[0].rows or not columns:
raise SystemExit("no results found")
for run in runs[1:]:
if run.columns != columns:
raise SystemExit(f"{run.path} has columns {run.columns}, {runs[0].path} has {columns}")
figure = Figure(runs, columns, names)
for suffix in (".png", ".pdf"):
output = args.out.with_suffix(suffix)
figure.matplotlib(output)
print(f"wrote {output}")
output = args.out.with_suffix(".tikz")
output.write_text(figure.tikz())
print(f"wrote {output}")
class Run:
"""One CSV: the queries in file order and every engine's time for each."""
def __init__(self, path, columns, rows):View on GitHub (pinned to 492c4a71cd)
Solutions
- Check the CSV file actually contains a header row plus data rows: `wc -l results.csv` and `head results.csv`.
- Re-run the TPC-H benchmark to produce fresh results before plotting.
- Verify the --csv-files arguments point at completed benchmark outputs, not placeholder files.
- If partial results are expected, ensure at least the first CSV has rows (the first file drives column validation).
Example fix
// before python plot-tpch.py --csv-files empty_run.csv -o out // after python plot-tpch.py --csv-files results/full_run.csv -o out
Defensive patterns
Strategy: validation
Validate before calling
import csv
def csv_has_rows(path) -> bool:
with open(path, newline="") as f:
r = csv.reader(f)
header = next(r, None)
return bool(header) and next(r, None) is not None Prevention
- Confirm the benchmark run completed before plotting its CSV
- Check `wc -l` and `head` on result files passed to plotting scripts
- Fail fast in the benchmark runner when zero queries complete
When it happens
Trigger: Running plot-tpch.py with CSV files that are empty, header-only, or that failed to parse into rows/columns (read_run produced an empty run).
Common situations: Benchmark run crashed or was interrupted before any query completed, so results.csv contains only a header or is empty; wrong CSV path passed on the command line; results directory from a fresh/failed run.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- no query finished on any engine
- {run.path} has columns {run.columns}, {runs[0].path} has {co
- pyturso's SQLAlchemy dialects require SQLAlchemy >= 2.0.45 (
- Cannot get raw connection from SQLAlchemy connection
- Expected turso.sync.ConnectionSync, got {type(dbapi_conn).__
AI-assisted analysis of tursodatabase/turso@492c4a71cd (2026-09-13).
Data as JSON: /api/errors/1726a2a4d8443cce.
Report an issue: GitHub.