44"""CLI for benchmark orchestration."""
55
66from datetime import datetime , timedelta
7- from typing import Annotated
7+ from typing import Annotated , List
88
99import pandas as pd
1010import typer
@@ -67,23 +67,25 @@ def run(
6767 exclude_queries : Annotated [str | None , typer .Option ("--exclude-queries" , help = "Queries to skip" )] = None ,
6868 iterations : Annotated [int , typer .Option ("--iterations" , "-i" , help = "Iterations per query" )] = 5 ,
6969 label : Annotated [str | None , typer .Option ("--label" , "-l" , help = "Label for this run" )] = None ,
70- scale_factor : Annotated [
71- str | None , typer .Option ("--scale-factor" , "-s" , help = "Scale factor for TPC benchmarks" )
72- ] = None ,
7370 track_memory : Annotated [bool , typer .Option ("--track-memory" , help = "Track memory usage" )] = False ,
7471 build : Annotated [bool , typer .Option ("--build/--no-build" , help = "Build binaries before running" )] = True ,
7572 verbose : Annotated [bool , typer .Option ("--verbose" , "-v" , help = "Log underlying commands" )] = False ,
73+ options : Annotated [list [str ] | None , typer .Option ("--opt" , help = "Engine or benchmark specific options" )] = None ,
7674) -> None :
7775 """Run benchmarks with specified configuration."""
7876 engines = parse_engines (engine )
7977 formats = parse_formats (format )
8078 query_list = parse_queries (queries )
8179 exclude_list = parse_queries (exclude_queries )
82-
80+ bench_opts = {}
8381 # Build options dict
84- options : dict [str , str ] = {}
85- if scale_factor :
86- options ["scale_factor" ] = scale_factor
82+ if options :
83+ for opt in options :
84+ for s in opt .split ("," ):
85+ k , v , * rest = s .split ("=" )
86+ if rest :
87+ raise RuntimeError ("Options must be key-value pairs separated by =" )
88+ bench_opts [k ] = v
8789
8890 config = RunConfig (
8991 benchmark = benchmark ,
@@ -93,7 +95,7 @@ def run(
9395 exclude_queries = exclude_list ,
9496 iterations = iterations ,
9597 label = label ,
96- options = options ,
98+ options = bench_opts ,
9799 track_memory = track_memory ,
98100 )
99101
0 commit comments