benchbox 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- benchbox/__init__.py +1 -1
- benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query72.tpl +1 -1
- benchbox/_binaries/tpc-ds/{darwin-x86_64/query_templates/ansi.tpl → templates/query_templates/sqlserver.tpl} +1 -1
- benchbox/_binaries/tpc-ds/templates/query_variants/README +6 -0
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query10.tpl → templates/query_variants/query10a.tpl} +13 -14
- benchbox/_binaries/tpc-ds/{darwin-x86_64/query_templates/query14.tpl → templates/query_variants/query14a.tpl} +30 -26
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query18.tpl → templates/query_variants/query18a.tpl} +40 -19
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query22.tpl → templates/query_variants/query22a.tpl} +31 -9
- benchbox/_binaries/tpc-ds/{darwin-x86_64/query_templates/query27.tpl → templates/query_variants/query27a.tpl} +23 -10
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query35.tpl → templates/query_variants/query35a.tpl} +9 -8
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query36.tpl → templates/query_variants/query36a.tpl} +24 -12
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query51.tpl → templates/query_variants/query51a.tpl} +37 -20
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query5.tpl → templates/query_variants/query5a.tpl} +15 -10
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query67.tpl → templates/query_variants/query67a.tpl} +46 -18
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query70.tpl → templates/query_variants/query70a.tpl} +31 -27
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query77.tpl → templates/query_variants/query77a.tpl} +22 -15
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query80.tpl → templates/query_variants/query80a.tpl} +22 -8
- benchbox/_binaries/tpc-ds/{linux-arm64/query_templates/query86.tpl → templates/query_variants/query86a.tpl} +22 -13
- benchbox/_binaries/tpc-h/templates/dists.dss +836 -0
- benchbox/_binaries/tpc-h/templates/queries/1.sql +28 -0
- benchbox/_binaries/tpc-h/templates/queries/10.sql +38 -0
- benchbox/_binaries/tpc-h/templates/queries/11.sql +34 -0
- benchbox/_binaries/tpc-h/templates/queries/12.sql +35 -0
- benchbox/_binaries/tpc-h/templates/queries/13.sql +27 -0
- benchbox/_binaries/tpc-h/templates/queries/14.sql +20 -0
- benchbox/_binaries/tpc-h/templates/queries/15.sql +40 -0
- benchbox/_binaries/tpc-h/templates/queries/16.sql +37 -0
- benchbox/_binaries/tpc-h/templates/queries/17.sql +24 -0
- benchbox/_binaries/tpc-h/templates/queries/18.sql +39 -0
- benchbox/_binaries/tpc-h/templates/queries/19.sql +42 -0
- benchbox/_binaries/tpc-h/templates/queries/2.sql +50 -0
- benchbox/_binaries/tpc-h/templates/queries/20.sql +44 -0
- benchbox/_binaries/tpc-h/templates/queries/21.sql +46 -0
- benchbox/_binaries/tpc-h/templates/queries/22.sql +44 -0
- benchbox/_binaries/tpc-h/templates/queries/3.sql +29 -0
- benchbox/_binaries/tpc-h/templates/queries/4.sql +28 -0
- benchbox/_binaries/tpc-h/templates/queries/5.sql +31 -0
- benchbox/_binaries/tpc-h/templates/queries/6.sql +16 -0
- benchbox/_binaries/tpc-h/templates/queries/7.sql +46 -0
- benchbox/_binaries/tpc-h/templates/queries/8.sql +44 -0
- benchbox/_binaries/tpc-h/templates/queries/9.sql +39 -0
- benchbox/_binaries/tpc-h/templates/variants/12a.sql +27 -0
- benchbox/_binaries/tpc-h/templates/variants/13a.sql +30 -0
- benchbox/_binaries/tpc-h/templates/variants/14a.sql +18 -0
- benchbox/_binaries/tpc-h/templates/variants/15a.sql +39 -0
- benchbox/_binaries/tpc-h/templates/variants/8a.sql +77 -0
- benchbox/base.py +88 -121
- benchbox/cli/benchmarks.py +3 -3
- benchbox/cli/commands/calculate_qphh.py +55 -14
- benchbox/cli/commands/checks.py +1 -4
- benchbox/cli/commands/convert.py +8 -3
- benchbox/cli/commands/metrics.py +55 -14
- benchbox/cli/commands/results.py +131 -3
- benchbox/cli/commands/run.py +157 -22
- benchbox/cli/commands/visualize.py +3 -3
- benchbox/cli/composite_params.py +1 -1
- benchbox/cli/config.py +13 -3
- benchbox/cli/database.py +3 -3
- benchbox/cli/dryrun.py +30 -4
- benchbox/cli/exceptions.py +2 -1
- benchbox/cli/execution_pipeline.py +2 -1
- benchbox/cli/orchestrator.py +25 -71
- benchbox/cli/tuning.py +1 -1
- benchbox/core/ai_primitives/benchmark.py +53 -0
- benchbox/core/ai_primitives/dataframe_operations.py +1217 -0
- benchbox/core/base_benchmark.py +90 -68
- benchbox/core/coffeeshop/queries.py +1 -1
- benchbox/core/coffeeshop/schema.py +1 -1
- benchbox/core/comparison/plotter.py +5 -4
- benchbox/core/dataframe/__init__.py +26 -0
- benchbox/core/dataframe/benchmark_suite.py +5 -4
- benchbox/core/dataframe/context.py +45 -0
- benchbox/core/dataframe/data_loader.py +180 -79
- benchbox/core/dataframe/maintenance_interface.py +866 -0
- benchbox/core/dryrun.py +152 -22
- benchbox/core/expected_results/registry.py +22 -5
- benchbox/core/manifest/io.py +4 -3
- benchbox/core/metadata_primitives/__init__.py +31 -0
- benchbox/core/metadata_primitives/benchmark.py +337 -0
- benchbox/core/metadata_primitives/dataframe_operations.py +1824 -0
- benchbox/core/platform_registry.py +134 -45
- benchbox/core/read_primitives/benchmark.py +56 -4
- benchbox/core/read_primitives/dataframe_queries.py +6547 -0
- benchbox/core/results/__init__.py +47 -6
- benchbox/core/results/builder.py +909 -0
- benchbox/core/results/database.py +5 -5
- benchbox/core/results/exporter.py +58 -96
- benchbox/core/results/filenames.py +102 -0
- benchbox/core/results/loader.py +10 -9
- benchbox/core/results/metrics.py +211 -0
- benchbox/core/results/models.py +3 -1
- benchbox/core/results/normalizer.py +346 -0
- benchbox/core/results/platform_info.py +235 -0
- benchbox/core/results/query_normalizer.py +200 -0
- benchbox/core/results/schema.py +368 -69
- benchbox/core/runner/conversion.py +2 -0
- benchbox/core/runner/dataframe_runner.py +135 -131
- benchbox/core/runner/runner.py +111 -18
- benchbox/core/schemas.py +145 -3
- benchbox/core/ssb/generator.py +14 -2
- benchbox/core/tpc_compliance.py +4 -4
- benchbox/core/tpc_metrics.py +9 -4
- benchbox/core/tpcdi/generator/manifest.py +15 -2
- benchbox/core/tpcds/benchmark/runner.py +3 -7
- benchbox/core/tpcds/c_tools.py +34 -28
- benchbox/core/tpcds/dataframe_queries/queries.py +44 -21
- benchbox/core/tpcds/generator/filesystem.py +23 -11
- benchbox/core/tpcds/generator/manager.py +3 -2
- benchbox/core/tpcds/maintenance_test.py +281 -0
- benchbox/core/tpcds/power_test.py +21 -11
- benchbox/core/tpcds/throughput_test.py +27 -9
- benchbox/core/tpcds_obt/etl/transformer.py +24 -5
- benchbox/core/tpch/dataframe_queries.py +46 -43
- benchbox/core/tpch/generator.py +21 -8
- benchbox/core/tpch/maintenance_test.py +87 -0
- benchbox/core/tpch/power_test.py +21 -5
- benchbox/core/tpch/queries.py +2 -7
- benchbox/core/tpch/streams.py +3 -19
- benchbox/core/transaction_primitives/benchmark.py +99 -0
- benchbox/core/transaction_primitives/dataframe_operations.py +1294 -0
- benchbox/core/transaction_primitives/generator.py +11 -4
- benchbox/core/visualization/__init__.py +2 -2
- benchbox/core/visualization/charts.py +4 -4
- benchbox/core/visualization/dependencies.py +1 -12
- benchbox/core/visualization/exporters.py +15 -26
- benchbox/core/visualization/result_plotter.py +90 -49
- benchbox/core/visualization/templates.py +6 -6
- benchbox/core/write_primitives/__init__.py +13 -0
- benchbox/core/write_primitives/benchmark.py +66 -0
- benchbox/core/write_primitives/dataframe_operations.py +912 -0
- benchbox/core/write_primitives/generator.py +11 -4
- benchbox/mcp/__init__.py +5 -1
- benchbox/mcp/errors.py +29 -0
- benchbox/mcp/resources/registry.py +12 -7
- benchbox/mcp/schemas.py +62 -0
- benchbox/mcp/server.py +17 -14
- benchbox/mcp/tools/__init__.py +3 -0
- benchbox/mcp/tools/analytics.py +550 -582
- benchbox/mcp/tools/benchmark.py +603 -611
- benchbox/mcp/tools/discovery.py +156 -205
- benchbox/mcp/tools/results.py +332 -533
- benchbox/mcp/tools/visualization.py +449 -0
- benchbox/platforms/__init__.py +740 -622
- benchbox/platforms/adapter_factory.py +6 -6
- benchbox/platforms/azure_synapse.py +3 -7
- benchbox/platforms/base/adapter.py +189 -49
- benchbox/platforms/base/cloud_spark/config.py +8 -0
- benchbox/platforms/base/cloud_spark/mixins.py +96 -0
- benchbox/platforms/base/cloud_spark/session.py +4 -2
- benchbox/platforms/base/cloud_spark/staging.py +15 -7
- benchbox/platforms/base/data_loading.py +315 -1
- benchbox/platforms/base/format_capabilities.py +37 -2
- benchbox/platforms/base/utils.py +6 -4
- benchbox/platforms/bigquery.py +5 -6
- benchbox/platforms/clickhouse_cloud.py +263 -0
- benchbox/platforms/databricks/adapter.py +16 -15
- benchbox/platforms/databricks/dataframe_adapter.py +4 -1
- benchbox/platforms/dataframe/__init__.py +31 -0
- benchbox/platforms/dataframe/benchmark_mixin.py +779 -0
- benchbox/platforms/dataframe/cudf_df.py +3 -3
- benchbox/platforms/dataframe/dask_df.py +3 -3
- benchbox/platforms/dataframe/datafusion_df.py +152 -15
- benchbox/platforms/dataframe/delta_lake_maintenance.py +341 -0
- benchbox/platforms/dataframe/ducklake_maintenance.py +402 -0
- benchbox/platforms/dataframe/expression_family.py +47 -8
- benchbox/platforms/dataframe/hudi_maintenance.py +437 -0
- benchbox/platforms/dataframe/iceberg_maintenance.py +605 -0
- benchbox/platforms/dataframe/modin_df.py +3 -3
- benchbox/platforms/dataframe/pandas_df.py +3 -3
- benchbox/platforms/dataframe/pandas_family.py +59 -8
- benchbox/platforms/dataframe/platform_checker.py +16 -49
- benchbox/platforms/dataframe/polars_df.py +14 -12
- benchbox/platforms/dataframe/polars_maintenance.py +630 -0
- benchbox/platforms/dataframe/pyspark_df.py +15 -0
- benchbox/platforms/dataframe/pyspark_maintenance.py +613 -0
- benchbox/platforms/datafusion.py +5 -6
- benchbox/platforms/duckdb.py +2 -1
- benchbox/platforms/fabric_warehouse.py +15 -15
- benchbox/platforms/firebolt.py +3 -2
- benchbox/platforms/influxdb/adapter.py +7 -3
- benchbox/platforms/motherduck.py +3 -2
- benchbox/platforms/onehouse/__init__.py +39 -0
- benchbox/platforms/onehouse/onehouse_client.py +509 -0
- benchbox/platforms/onehouse/quanton_adapter.py +646 -0
- benchbox/platforms/postgresql.py +5 -9
- benchbox/platforms/presto.py +2 -2
- benchbox/platforms/pyspark/session.py +3 -3
- benchbox/platforms/pyspark/sql_adapter.py +2 -3
- benchbox/platforms/redshift.py +7 -7
- benchbox/platforms/snowflake.py +4 -4
- benchbox/platforms/snowpark_connect.py +2 -1
- benchbox/platforms/trino.py +2 -2
- benchbox/release/__init__.py +17 -0
- benchbox/release/content_validation.py +745 -0
- benchbox/release/workflow.py +17 -0
- benchbox/utils/VERSION_MANAGEMENT.md +1 -1
- benchbox/utils/cloud_storage.py +7 -5
- benchbox/utils/compression.py +8 -8
- benchbox/utils/compression_mixin.py +2 -1
- benchbox/utils/data_validation.py +23 -14
- benchbox/utils/dependencies.py +47 -7
- benchbox/utils/file_format.py +407 -0
- benchbox/utils/format_converters/__init__.py +5 -1
- benchbox/utils/format_converters/ducklake_converter.py +227 -0
- benchbox/utils/format_converters/vortex_converter.py +168 -0
- benchbox/utils/tpc_compilation.py +43 -0
- benchbox/utils/version.py +14 -2
- {benchbox-0.1.0.dist-info → benchbox-0.1.1.dist-info}/METADATA +15 -15
- benchbox-0.1.1.dist-info/RECORD +839 -0
- {benchbox-0.1.0.dist-info → benchbox-0.1.1.dist-info}/WHEEL +1 -1
- benchbox/_binaries/tpc-ds/darwin-arm64/query_templates/sqlserver.tpl +0 -37
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/README +0 -4
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/db2.tpl +0 -38
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/netezza.tpl +0 -38
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/oracle.tpl +0 -38
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query1.tpl +0 -62
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query10.tpl +0 -98
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query11.tpl +0 -119
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query12.tpl +0 -72
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query13.tpl +0 -89
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query15.tpl +0 -56
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query16.tpl +0 -76
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query17.tpl +0 -80
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query18.tpl +0 -73
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query19.tpl +0 -64
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query2.tpl +0 -94
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query20.tpl +0 -67
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query21.tpl +0 -65
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query22.tpl +0 -54
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query23.tpl +0 -144
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query24.tpl +0 -147
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query25.tpl +0 -84
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query26.tpl +0 -61
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query28.tpl +0 -90
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query29.tpl +0 -85
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query3.tpl +0 -58
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query30.tpl +0 -66
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query31.tpl +0 -88
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query32.tpl +0 -65
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query33.tpl +0 -113
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query34.tpl +0 -77
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query35.tpl +0 -98
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query36.tpl +0 -74
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query37.tpl +0 -57
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query38.tpl +0 -58
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query39.tpl +0 -93
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query4.tpl +0 -154
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query40.tpl +0 -63
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query41.tpl +0 -90
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query42.tpl +0 -64
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query43.tpl +0 -55
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query44.tpl +0 -72
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query45.tpl +0 -56
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query46.tpl +0 -78
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query47.tpl +0 -89
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query48.tpl +0 -104
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query49.tpl +0 -164
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query5.tpl +0 -165
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query50.tpl +0 -96
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query51.tpl +0 -80
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query52.tpl +0 -59
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query53.tpl +0 -64
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query54.tpl +0 -95
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query55.tpl +0 -52
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query56.tpl +0 -108
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query57.tpl +0 -87
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query58.tpl +0 -101
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query59.tpl +0 -79
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query6.tpl +0 -62
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query60.tpl +0 -115
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query61.tpl +0 -83
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query62.tpl +0 -71
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query63.tpl +0 -64
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query64.tpl +0 -157
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query65.tpl +0 -62
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query66.tpl +0 -261
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query67.tpl +0 -81
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query68.tpl +0 -82
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query69.tpl +0 -85
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query7.tpl +0 -60
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query70.tpl +0 -73
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query71.tpl +0 -74
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query72.tpl +0 -67
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query73.tpl +0 -69
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query74.tpl +0 -99
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query75.tpl +0 -107
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query76.tpl +0 -64
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query77.tpl +0 -145
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query78.tpl +0 -94
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query79.tpl +0 -60
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query8.tpl +0 -144
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query80.tpl +0 -131
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query81.tpl +0 -68
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query82.tpl +0 -56
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query83.tpl +0 -104
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query84.tpl +0 -58
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query85.tpl +0 -121
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query86.tpl +0 -60
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query87.tpl +0 -56
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query88.tpl +0 -128
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query89.tpl +0 -75
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query9.tpl +0 -88
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query90.tpl +0 -58
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query91.tpl +0 -68
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query92.tpl +0 -68
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query93.tpl +0 -53
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query94.tpl +0 -67
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query95.tpl +0 -71
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query96.tpl +0 -52
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query97.tpl +0 -62
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query98.tpl +0 -70
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/query99.tpl +0 -69
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/sqlserver.tpl +0 -37
- benchbox/_binaries/tpc-ds/darwin-x86_64/query_templates/templates.lst +0 -99
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/README +0 -4
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/ansi.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/db2.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/netezza.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/oracle.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query1.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query11.tpl +0 -119
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query12.tpl +0 -72
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query13.tpl +0 -89
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query14.tpl +0 -247
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query15.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query16.tpl +0 -76
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query17.tpl +0 -80
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query19.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query2.tpl +0 -94
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query20.tpl +0 -67
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query21.tpl +0 -65
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query23.tpl +0 -144
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query24.tpl +0 -147
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query25.tpl +0 -84
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query26.tpl +0 -61
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query27.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query28.tpl +0 -90
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query29.tpl +0 -85
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query3.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query30.tpl +0 -66
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query31.tpl +0 -88
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query32.tpl +0 -65
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query33.tpl +0 -113
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query34.tpl +0 -77
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query37.tpl +0 -57
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query38.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query39.tpl +0 -93
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query4.tpl +0 -154
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query40.tpl +0 -63
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query41.tpl +0 -90
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query42.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query43.tpl +0 -55
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query44.tpl +0 -72
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query45.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query46.tpl +0 -78
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query47.tpl +0 -89
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query48.tpl +0 -104
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query49.tpl +0 -164
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query50.tpl +0 -96
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query52.tpl +0 -59
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query53.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query54.tpl +0 -95
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query55.tpl +0 -52
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query56.tpl +0 -108
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query57.tpl +0 -87
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query58.tpl +0 -101
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query59.tpl +0 -79
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query6.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query60.tpl +0 -115
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query61.tpl +0 -83
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query62.tpl +0 -71
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query63.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query64.tpl +0 -157
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query65.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query66.tpl +0 -261
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query68.tpl +0 -82
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query69.tpl +0 -85
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query7.tpl +0 -60
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query71.tpl +0 -74
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query72.tpl +0 -67
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query73.tpl +0 -69
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query74.tpl +0 -99
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query75.tpl +0 -107
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query76.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query78.tpl +0 -94
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query79.tpl +0 -60
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query8.tpl +0 -144
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query81.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query82.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query83.tpl +0 -104
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query84.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query85.tpl +0 -121
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query87.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query88.tpl +0 -128
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query89.tpl +0 -75
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query9.tpl +0 -88
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query90.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query91.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query92.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query93.tpl +0 -53
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query94.tpl +0 -67
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query95.tpl +0 -71
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query96.tpl +0 -52
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query97.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query98.tpl +0 -70
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/query99.tpl +0 -69
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/sqlserver.tpl +0 -37
- benchbox/_binaries/tpc-ds/linux-arm64/query_templates/templates.lst +0 -99
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/README +0 -4
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/ansi.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/db2.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/netezza.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/oracle.tpl +0 -38
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query1.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query10.tpl +0 -98
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query11.tpl +0 -119
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query12.tpl +0 -72
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query13.tpl +0 -89
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query14.tpl +0 -247
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query15.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query16.tpl +0 -76
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query17.tpl +0 -80
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query18.tpl +0 -73
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query19.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query2.tpl +0 -94
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query20.tpl +0 -67
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query21.tpl +0 -65
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query22.tpl +0 -54
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query23.tpl +0 -144
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query24.tpl +0 -147
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query25.tpl +0 -84
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query26.tpl +0 -61
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query27.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query28.tpl +0 -90
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query29.tpl +0 -85
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query3.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query30.tpl +0 -66
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query31.tpl +0 -88
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query32.tpl +0 -65
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query33.tpl +0 -113
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query34.tpl +0 -77
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query35.tpl +0 -98
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query36.tpl +0 -74
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query37.tpl +0 -57
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query38.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query39.tpl +0 -93
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query4.tpl +0 -154
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query40.tpl +0 -63
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query41.tpl +0 -90
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query42.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query43.tpl +0 -55
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query44.tpl +0 -72
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query45.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query46.tpl +0 -78
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query47.tpl +0 -89
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query48.tpl +0 -104
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query49.tpl +0 -164
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query5.tpl +0 -165
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query50.tpl +0 -96
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query51.tpl +0 -80
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query52.tpl +0 -59
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query53.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query54.tpl +0 -95
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query55.tpl +0 -52
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query56.tpl +0 -108
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query57.tpl +0 -87
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query58.tpl +0 -101
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query59.tpl +0 -79
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query6.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query60.tpl +0 -115
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query61.tpl +0 -83
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query62.tpl +0 -71
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query63.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query64.tpl +0 -157
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query65.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query66.tpl +0 -261
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query67.tpl +0 -81
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query68.tpl +0 -82
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query69.tpl +0 -85
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query7.tpl +0 -60
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query70.tpl +0 -73
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query71.tpl +0 -74
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query72.tpl +0 -67
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query73.tpl +0 -69
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query74.tpl +0 -99
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query75.tpl +0 -107
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query76.tpl +0 -64
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query77.tpl +0 -145
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query78.tpl +0 -94
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query79.tpl +0 -60
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query8.tpl +0 -144
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query80.tpl +0 -131
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query81.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query82.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query83.tpl +0 -104
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query84.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query85.tpl +0 -121
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query86.tpl +0 -60
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query87.tpl +0 -56
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query88.tpl +0 -128
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query89.tpl +0 -75
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query9.tpl +0 -88
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query90.tpl +0 -58
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query91.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query92.tpl +0 -68
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query93.tpl +0 -53
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query94.tpl +0 -67
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query95.tpl +0 -71
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query96.tpl +0 -52
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query97.tpl +0 -62
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query98.tpl +0 -70
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/query99.tpl +0 -69
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/sqlserver.tpl +0 -37
- benchbox/_binaries/tpc-ds/linux-x86_64/query_templates/templates.lst +0 -99
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/README +0 -4
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/ansi.tpl +0 -38
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/db2.tpl +0 -38
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/netezza.tpl +0 -38
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/oracle.tpl +0 -38
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query1.tpl +0 -62
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query10.tpl +0 -98
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query11.tpl +0 -119
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query12.tpl +0 -72
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query13.tpl +0 -89
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query14.tpl +0 -247
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query15.tpl +0 -56
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query16.tpl +0 -76
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query17.tpl +0 -80
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query18.tpl +0 -73
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query19.tpl +0 -64
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query2.tpl +0 -94
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query20.tpl +0 -67
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query21.tpl +0 -65
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query22.tpl +0 -54
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query23.tpl +0 -144
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query24.tpl +0 -147
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query25.tpl +0 -84
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query26.tpl +0 -61
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query27.tpl +0 -68
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query28.tpl +0 -90
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query29.tpl +0 -85
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query3.tpl +0 -58
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query30.tpl +0 -66
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query31.tpl +0 -88
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query32.tpl +0 -65
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query33.tpl +0 -113
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query34.tpl +0 -77
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query35.tpl +0 -98
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query36.tpl +0 -74
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query37.tpl +0 -57
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query38.tpl +0 -58
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query39.tpl +0 -93
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query4.tpl +0 -154
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query40.tpl +0 -63
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query41.tpl +0 -90
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query42.tpl +0 -64
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query43.tpl +0 -55
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query44.tpl +0 -72
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query45.tpl +0 -56
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query46.tpl +0 -78
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query47.tpl +0 -89
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query48.tpl +0 -104
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query49.tpl +0 -164
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query5.tpl +0 -165
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query50.tpl +0 -96
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query51.tpl +0 -80
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query52.tpl +0 -59
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query53.tpl +0 -64
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query54.tpl +0 -95
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query55.tpl +0 -52
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query56.tpl +0 -108
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query57.tpl +0 -87
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query58.tpl +0 -101
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query59.tpl +0 -79
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query6.tpl +0 -62
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query60.tpl +0 -115
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query61.tpl +0 -83
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query62.tpl +0 -71
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query63.tpl +0 -64
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query64.tpl +0 -157
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query65.tpl +0 -62
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query66.tpl +0 -261
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query67.tpl +0 -81
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query68.tpl +0 -82
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query69.tpl +0 -85
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query7.tpl +0 -60
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query70.tpl +0 -73
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query71.tpl +0 -74
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query72.tpl +0 -67
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query73.tpl +0 -69
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query74.tpl +0 -99
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query75.tpl +0 -107
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query76.tpl +0 -64
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query77.tpl +0 -145
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query78.tpl +0 -94
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query79.tpl +0 -60
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query8.tpl +0 -144
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query80.tpl +0 -131
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query81.tpl +0 -68
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query82.tpl +0 -56
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query83.tpl +0 -104
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query84.tpl +0 -58
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query85.tpl +0 -121
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query86.tpl +0 -60
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query87.tpl +0 -56
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query88.tpl +0 -128
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query89.tpl +0 -75
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query9.tpl +0 -88
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query90.tpl +0 -58
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query91.tpl +0 -68
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query92.tpl +0 -68
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query93.tpl +0 -53
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query94.tpl +0 -67
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query95.tpl +0 -71
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query96.tpl +0 -52
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query97.tpl +0 -62
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query98.tpl +0 -70
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/query99.tpl +0 -69
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/sqlserver.tpl +0 -37
- benchbox/_binaries/tpc-ds/windows-x86_64/query_templates/templates.lst +0 -99
- benchbox-0.1.0.dist-info/RECORD +0 -1192
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/README +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/ansi.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/db2.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/netezza.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/oracle.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query1.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query10.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query11.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query12.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query13.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query14.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query15.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query16.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query17.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query18.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query19.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query2.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query20.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query21.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query22.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query23.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query24.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query25.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query26.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query27.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query28.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query29.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query3.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query30.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query31.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query32.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query33.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query34.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query35.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query36.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query37.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query38.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query39.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query4.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query40.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query41.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query42.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query43.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query44.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query45.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query46.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query47.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query48.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query49.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query5.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query50.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query51.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query52.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query53.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query54.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query55.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query56.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query57.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query58.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query59.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query6.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query60.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query61.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query62.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query63.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query64.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query65.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query66.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query67.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query68.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query69.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query7.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query70.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query71.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query73.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query74.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query75.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query76.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query77.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query78.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query79.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query8.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query80.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query81.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query82.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query83.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query84.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query85.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query86.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query87.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query88.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query89.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query9.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query90.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query91.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query92.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query93.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query94.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query95.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query96.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query97.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query98.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/query99.tpl +0 -0
- /benchbox/_binaries/tpc-ds/{darwin-arm64 → templates}/query_templates/templates.lst +0 -0
- {benchbox-0.1.0.dist-info → benchbox-0.1.1.dist-info}/entry_points.txt +0 -0
- {benchbox-0.1.0.dist-info → benchbox-0.1.1.dist-info}/licenses/LICENSE +0 -0
- {benchbox-0.1.0.dist-info → benchbox-0.1.1.dist-info}/top_level.txt +0 -0
|
@@ -53,7 +53,7 @@ class StoredResult:
|
|
|
53
53
|
geometric_mean_ms: float | None
|
|
54
54
|
power_at_size: float | None
|
|
55
55
|
throughput_at_size: float | None
|
|
56
|
-
|
|
56
|
+
qph_at_size: float | None
|
|
57
57
|
total_cost: float | None
|
|
58
58
|
validation_status: str
|
|
59
59
|
config_hash: str
|
|
@@ -77,7 +77,7 @@ class StoredResult:
|
|
|
77
77
|
geometric_mean_ms=row["geometric_mean_ms"],
|
|
78
78
|
power_at_size=row["power_at_size"],
|
|
79
79
|
throughput_at_size=row["throughput_at_size"],
|
|
80
|
-
|
|
80
|
+
qph_at_size=row["qph_at_size"],
|
|
81
81
|
total_cost=row["total_cost"],
|
|
82
82
|
validation_status=row["validation_status"],
|
|
83
83
|
config_hash=row["config_hash"],
|
|
@@ -238,7 +238,7 @@ class ResultDatabase:
|
|
|
238
238
|
geometric_mean_ms REAL,
|
|
239
239
|
power_at_size REAL,
|
|
240
240
|
throughput_at_size REAL,
|
|
241
|
-
|
|
241
|
+
qph_at_size REAL,
|
|
242
242
|
total_cost REAL,
|
|
243
243
|
validation_status TEXT NOT NULL,
|
|
244
244
|
config_hash TEXT NOT NULL,
|
|
@@ -358,7 +358,7 @@ class ResultDatabase:
|
|
|
358
358
|
execution_id, platform, platform_version, benchmark, scale_factor,
|
|
359
359
|
timestamp, duration_seconds, total_queries, successful_queries,
|
|
360
360
|
failed_queries, geometric_mean_ms, power_at_size, throughput_at_size,
|
|
361
|
-
|
|
361
|
+
qph_at_size, total_cost, validation_status, config_hash, metadata_json
|
|
362
362
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
363
363
|
""",
|
|
364
364
|
(
|
|
@@ -375,7 +375,7 @@ class ResultDatabase:
|
|
|
375
375
|
geometric_mean_ms,
|
|
376
376
|
result.power_at_size,
|
|
377
377
|
result.throughput_at_size,
|
|
378
|
-
result.
|
|
378
|
+
result.qph_at_size,
|
|
379
379
|
total_cost,
|
|
380
380
|
result.validation_status,
|
|
381
381
|
config_hash,
|
|
@@ -17,7 +17,7 @@ import csv
|
|
|
17
17
|
import io
|
|
18
18
|
import json
|
|
19
19
|
import logging
|
|
20
|
-
from collections.abc import Iterable
|
|
20
|
+
from collections.abc import Iterable
|
|
21
21
|
from datetime import datetime
|
|
22
22
|
from pathlib import Path
|
|
23
23
|
from typing import TYPE_CHECKING, Any, Union
|
|
@@ -36,6 +36,7 @@ from benchbox.core.results.anonymization import (
|
|
|
36
36
|
AnonymizationManager,
|
|
37
37
|
)
|
|
38
38
|
from benchbox.core.results.models import BenchmarkResults
|
|
39
|
+
from benchbox.core.results.normalizer import get_query_map, normalize_result_dict
|
|
39
40
|
from benchbox.core.results.schema import (
|
|
40
41
|
SchemaV2ValidationError,
|
|
41
42
|
SchemaV2Validator,
|
|
@@ -177,21 +178,32 @@ class ResultExporter:
|
|
|
177
178
|
return exported_files
|
|
178
179
|
|
|
179
180
|
def _generate_filename_base(self, result: ResultLike, timestamp: str) -> str:
|
|
180
|
-
"""Generate base filename for exports.
|
|
181
|
-
short_name = getattr(result, "benchmark_id", None) or getattr(result, "benchmark_name", "unknown")
|
|
182
|
-
platform = getattr(result, "platform", "unknown")
|
|
183
|
-
|
|
184
|
-
try:
|
|
185
|
-
from benchbox.utils.scale_factor import format_scale_factor
|
|
181
|
+
"""Generate base filename for exports.
|
|
186
182
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
Legacy helper retained for compatibility; delegates to centralized
|
|
184
|
+
filename builder.
|
|
185
|
+
"""
|
|
186
|
+
from benchbox.core.results.filenames import build_result_filename_base
|
|
190
187
|
|
|
188
|
+
benchmark_id = getattr(result, "benchmark_id", None) or getattr(result, "benchmark_name", "unknown")
|
|
189
|
+
platform = getattr(result, "platform", "unknown")
|
|
190
|
+
scale_factor = getattr(result, "scale_factor", 1.0)
|
|
191
191
|
exec_id = getattr(result, "execution_id", None)
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
192
|
+
|
|
193
|
+
# Extract mode from execution_context if available
|
|
194
|
+
mode = None
|
|
195
|
+
exec_ctx = getattr(result, "execution_context", None)
|
|
196
|
+
if isinstance(exec_ctx, dict):
|
|
197
|
+
mode = exec_ctx.get("mode") or exec_ctx.get("execution_mode")
|
|
198
|
+
|
|
199
|
+
return build_result_filename_base(
|
|
200
|
+
benchmark_id=str(benchmark_id).lower(),
|
|
201
|
+
scale_factor=scale_factor,
|
|
202
|
+
platform=str(platform).lower(),
|
|
203
|
+
timestamp=timestamp,
|
|
204
|
+
execution_id=exec_id,
|
|
205
|
+
mode=mode,
|
|
206
|
+
)
|
|
195
207
|
|
|
196
208
|
def _export_json_v2(self, result: ResultLike, filename_base: str) -> Path:
|
|
197
209
|
"""Export result to JSON using schema v2.0 with companion files."""
|
|
@@ -506,12 +518,12 @@ class ResultExporter:
|
|
|
506
518
|
# Detect schema version
|
|
507
519
|
version = data.get("version") or data.get("schema_version", "unknown")
|
|
508
520
|
|
|
509
|
-
if version
|
|
510
|
-
# Schema v2.
|
|
521
|
+
if version in ("2.0", "2.1"):
|
|
522
|
+
# Schema v2.x format
|
|
511
523
|
results.append(
|
|
512
524
|
{
|
|
513
525
|
"file": json_file,
|
|
514
|
-
"version":
|
|
526
|
+
"version": version,
|
|
515
527
|
"benchmark": data.get("benchmark", {}).get("name", "Unknown"),
|
|
516
528
|
"platform": data.get("platform", {}).get("name", "Unknown"),
|
|
517
529
|
"scale_factor": data.get("benchmark", {}).get("scale_factor", 1.0),
|
|
@@ -625,9 +637,9 @@ class ResultExporter:
|
|
|
625
637
|
baseline_version = baseline_result.get("version", "unknown")
|
|
626
638
|
current_version = current_result.get("version", "unknown")
|
|
627
639
|
|
|
628
|
-
# Extract metrics
|
|
629
|
-
perf_baseline = self._extract_performance_metrics(baseline_data
|
|
630
|
-
perf_current = self._extract_performance_metrics(current_data
|
|
640
|
+
# Extract metrics using schema-agnostic normalizer
|
|
641
|
+
perf_baseline = self._extract_performance_metrics(baseline_data)
|
|
642
|
+
perf_current = self._extract_performance_metrics(current_data)
|
|
631
643
|
|
|
632
644
|
comparison: dict[str, Any] = {
|
|
633
645
|
"baseline_file": str(baseline_path),
|
|
@@ -652,8 +664,8 @@ class ResultExporter:
|
|
|
652
664
|
}
|
|
653
665
|
|
|
654
666
|
# Compare individual queries
|
|
655
|
-
baseline_queries = self._extract_query_map(baseline_data
|
|
656
|
-
current_queries = self._extract_query_map(current_data
|
|
667
|
+
baseline_queries = self._extract_query_map(baseline_data)
|
|
668
|
+
current_queries = self._extract_query_map(current_data)
|
|
657
669
|
|
|
658
670
|
for query_id, baseline_query in baseline_queries.items():
|
|
659
671
|
current_query = current_queries.get(query_id)
|
|
@@ -690,85 +702,35 @@ class ResultExporter:
|
|
|
690
702
|
|
|
691
703
|
return comparison
|
|
692
704
|
|
|
693
|
-
def _extract_performance_metrics(self, data: dict[str, Any]
|
|
694
|
-
"""Extract performance metrics from result data.
|
|
695
|
-
if version == "2.0":
|
|
696
|
-
# Schema v2.0 format
|
|
697
|
-
summary = data.get("summary", {})
|
|
698
|
-
timing = summary.get("timing", {})
|
|
699
|
-
queries = summary.get("queries", {})
|
|
705
|
+
def _extract_performance_metrics(self, data: dict[str, Any]) -> dict[str, Any]:
|
|
706
|
+
"""Extract performance metrics from result data.
|
|
700
707
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
if not isinstance(results_block, Mapping):
|
|
712
|
-
return {
|
|
713
|
-
"total_queries": 0,
|
|
714
|
-
"successful_queries": 0,
|
|
715
|
-
"failed_queries": 0,
|
|
716
|
-
"total_execution_time": 0.0,
|
|
717
|
-
"average_query_time": 0.0,
|
|
718
|
-
}
|
|
708
|
+
Uses the shared normalizer for schema-agnostic extraction.
|
|
709
|
+
"""
|
|
710
|
+
normalized = normalize_result_dict(data)
|
|
711
|
+
return {
|
|
712
|
+
"total_queries": normalized.total_queries,
|
|
713
|
+
"successful_queries": normalized.passed_queries,
|
|
714
|
+
"failed_queries": normalized.failed_queries,
|
|
715
|
+
"total_execution_time": (normalized.total_time_ms or 0) / 1000,
|
|
716
|
+
"average_query_time": (normalized.avg_time_ms or 0) / 1000,
|
|
717
|
+
}
|
|
719
718
|
|
|
720
|
-
|
|
721
|
-
|
|
719
|
+
def _extract_query_map(self, data: dict[str, Any]) -> dict[str, dict[str, Any]]:
|
|
720
|
+
"""Extract query results as a map from query ID to query data.
|
|
722
721
|
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
"
|
|
731
|
-
|
|
732
|
-
else 0.0,
|
|
722
|
+
Uses the shared normalizer for schema-agnostic extraction.
|
|
723
|
+
"""
|
|
724
|
+
normalized = normalize_result_dict(data)
|
|
725
|
+
query_map = get_query_map(normalized)
|
|
726
|
+
return {
|
|
727
|
+
query_id: {
|
|
728
|
+
"query_id": query_id,
|
|
729
|
+
"execution_time_ms": q.execution_time_ms or 0,
|
|
730
|
+
"rows_returned": q.rows_returned,
|
|
733
731
|
}
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
"""Extract query results as a map from query ID to query data."""
|
|
737
|
-
if version == "2.0":
|
|
738
|
-
# Schema v2.0 format - queries is a list
|
|
739
|
-
queries = data.get("queries", [])
|
|
740
|
-
result = {}
|
|
741
|
-
for q in queries:
|
|
742
|
-
query_id = q.get("id")
|
|
743
|
-
if query_id:
|
|
744
|
-
result[query_id] = {
|
|
745
|
-
"query_id": query_id,
|
|
746
|
-
"execution_time_ms": q.get("ms", 0),
|
|
747
|
-
"rows_returned": q.get("rows"),
|
|
748
|
-
}
|
|
749
|
-
return result
|
|
750
|
-
else:
|
|
751
|
-
# Legacy v1.x format
|
|
752
|
-
results_block = data.get("results", {})
|
|
753
|
-
if not isinstance(results_block, Mapping):
|
|
754
|
-
return {}
|
|
755
|
-
|
|
756
|
-
queries_block = results_block.get("queries", {})
|
|
757
|
-
if not isinstance(queries_block, Mapping):
|
|
758
|
-
return {}
|
|
759
|
-
|
|
760
|
-
details = queries_block.get("details", [])
|
|
761
|
-
result = {}
|
|
762
|
-
for item in details:
|
|
763
|
-
if isinstance(item, dict):
|
|
764
|
-
query_id = item.get("id") or item.get("query_id")
|
|
765
|
-
if query_id:
|
|
766
|
-
result[str(query_id)] = {
|
|
767
|
-
"query_id": query_id,
|
|
768
|
-
"execution_time_ms": item.get("execution_time_ms", 0),
|
|
769
|
-
"rows_returned": item.get("rows_returned"),
|
|
770
|
-
}
|
|
771
|
-
return result
|
|
732
|
+
for query_id, q in query_map.items()
|
|
733
|
+
}
|
|
772
734
|
|
|
773
735
|
def _assess_performance_change(self, performance_changes: dict[str, Any]) -> str:
|
|
774
736
|
"""Assess overall performance change."""
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"""Result filename utilities.
|
|
2
|
+
|
|
3
|
+
Centralizes result filename construction so all exporters and CLI paths
|
|
4
|
+
use the same format.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
|
|
11
|
+
from benchbox.utils.scale_factor import format_scale_factor
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def normalize_platform_for_filename(platform: str) -> str:
|
|
15
|
+
"""Normalize platform name for use in filenames.
|
|
16
|
+
|
|
17
|
+
- Strips mode suffixes (-df, -sql) to avoid duplication
|
|
18
|
+
- Replaces hyphens with underscores for consistency
|
|
19
|
+
- Lowercases the platform name
|
|
20
|
+
"""
|
|
21
|
+
base = platform.lower()
|
|
22
|
+
for suffix in ("-df", "-sql"):
|
|
23
|
+
if base.endswith(suffix):
|
|
24
|
+
base = base[: -len(suffix)]
|
|
25
|
+
break
|
|
26
|
+
return base.replace("-", "_")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def abbreviate_mode_for_filename(mode: str) -> str:
|
|
30
|
+
"""Abbreviate execution mode for filenames.
|
|
31
|
+
|
|
32
|
+
- 'dataframe' -> 'df'
|
|
33
|
+
- 'sql' -> 'sql'
|
|
34
|
+
- 'data_only' -> 'data'
|
|
35
|
+
"""
|
|
36
|
+
if mode == "dataframe":
|
|
37
|
+
return "df"
|
|
38
|
+
if mode == "data_only":
|
|
39
|
+
return "data"
|
|
40
|
+
return mode
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def build_result_filename_base(
|
|
44
|
+
benchmark_id: str,
|
|
45
|
+
scale_factor: float,
|
|
46
|
+
platform: str,
|
|
47
|
+
timestamp: str | datetime,
|
|
48
|
+
execution_id: str | None = None,
|
|
49
|
+
mode: str | None = None,
|
|
50
|
+
) -> str:
|
|
51
|
+
"""Build a consistent base filename for result exports (no extension).
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
benchmark_id: Benchmark identifier (e.g., 'tpch', 'tpcds')
|
|
55
|
+
scale_factor: Scale factor value
|
|
56
|
+
platform: Platform name (e.g., 'duckdb', 'datafusion-df')
|
|
57
|
+
timestamp: Timestamp string or datetime object
|
|
58
|
+
execution_id: Optional execution identifier
|
|
59
|
+
mode: Optional execution mode ('sql', 'dataframe', 'data_only').
|
|
60
|
+
When provided, includes normalized platform + abbreviated mode.
|
|
61
|
+
"""
|
|
62
|
+
if isinstance(timestamp, datetime):
|
|
63
|
+
timestamp_str = timestamp.strftime("%Y%m%d_%H%M%S")
|
|
64
|
+
else:
|
|
65
|
+
timestamp_str = str(timestamp)
|
|
66
|
+
|
|
67
|
+
sf_str = format_scale_factor(scale_factor)
|
|
68
|
+
|
|
69
|
+
# Normalize platform and include mode if provided
|
|
70
|
+
if mode:
|
|
71
|
+
normalized_platform = normalize_platform_for_filename(platform)
|
|
72
|
+
abbrev_mode = abbreviate_mode_for_filename(mode)
|
|
73
|
+
platform_part = f"{normalized_platform}_{abbrev_mode}"
|
|
74
|
+
else:
|
|
75
|
+
# Legacy behavior: just replace hyphens with underscores
|
|
76
|
+
platform_part = platform.lower().replace("-", "_")
|
|
77
|
+
|
|
78
|
+
base = f"{benchmark_id}_{sf_str}_{platform_part}_{timestamp_str}"
|
|
79
|
+
if execution_id:
|
|
80
|
+
base = f"{base}_{execution_id}"
|
|
81
|
+
return base
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def build_result_filename(
|
|
85
|
+
benchmark_id: str,
|
|
86
|
+
scale_factor: float,
|
|
87
|
+
platform: str,
|
|
88
|
+
timestamp: str | datetime,
|
|
89
|
+
execution_id: str | None = None,
|
|
90
|
+
extension: str = "json",
|
|
91
|
+
mode: str | None = None,
|
|
92
|
+
) -> str:
|
|
93
|
+
"""Build a consistent filename for result exports (with extension)."""
|
|
94
|
+
base = build_result_filename_base(
|
|
95
|
+
benchmark_id=benchmark_id,
|
|
96
|
+
scale_factor=scale_factor,
|
|
97
|
+
platform=platform,
|
|
98
|
+
timestamp=timestamp,
|
|
99
|
+
execution_id=execution_id,
|
|
100
|
+
mode=mode,
|
|
101
|
+
)
|
|
102
|
+
return f"{base}.{extension}"
|
benchbox/core/results/loader.py
CHANGED
|
@@ -68,9 +68,9 @@ def find_latest_result(
|
|
|
68
68
|
with open(filepath) as f:
|
|
69
69
|
data = json.load(f)
|
|
70
70
|
|
|
71
|
-
# Only consider v2.0 files
|
|
71
|
+
# Only consider v2.0/v2.1 files
|
|
72
72
|
version = data.get("version")
|
|
73
|
-
if version
|
|
73
|
+
if version not in ("2.0", "2.1"):
|
|
74
74
|
continue
|
|
75
75
|
|
|
76
76
|
# Extract metadata for filtering (v2.0 format)
|
|
@@ -133,13 +133,13 @@ def load_result_file(filepath: Path | str) -> tuple[BenchmarkResults, dict[str,
|
|
|
133
133
|
except OSError as e:
|
|
134
134
|
raise ResultLoadError(f"Failed to read result file: {e}") from e
|
|
135
135
|
|
|
136
|
-
# Check schema version -
|
|
136
|
+
# Check schema version - v2.0 and v2.1 are supported
|
|
137
137
|
version = data.get("version")
|
|
138
|
-
if version
|
|
138
|
+
if version not in ("2.0", "2.1"):
|
|
139
139
|
legacy_version = data.get("schema_version", version)
|
|
140
140
|
raise UnsupportedSchemaError(
|
|
141
141
|
f"Unsupported schema version: {legacy_version}. "
|
|
142
|
-
f"Only schema v2.0
|
|
142
|
+
f"Only schema v2.0 and v2.1 are supported. "
|
|
143
143
|
f"Please re-export the result using the current version of BenchBox."
|
|
144
144
|
)
|
|
145
145
|
|
|
@@ -232,10 +232,11 @@ def reconstruct_benchmark_results(
|
|
|
232
232
|
tpc_section = summary_section.get("tpc_metrics", {})
|
|
233
233
|
power_at_size = tpc_section.get("power_at_size")
|
|
234
234
|
throughput_at_size = tpc_section.get("throughput_at_size")
|
|
235
|
-
|
|
235
|
+
# Load composite metric (either qphh_at_size or qphds_at_size depending on benchmark)
|
|
236
|
+
qph_at_size = tpc_section.get("qphh_at_size") or tpc_section.get("qphds_at_size")
|
|
236
237
|
|
|
237
|
-
# Geometric mean
|
|
238
|
-
geometric_mean_ms = timing_section.get("geometric_mean_ms")
|
|
238
|
+
# Geometric mean is in timing section (computed from query times)
|
|
239
|
+
geometric_mean_ms = timing_section.get("geometric_mean_ms")
|
|
239
240
|
geometric_mean_execution_time = geometric_mean_ms / 1000.0 if geometric_mean_ms else None
|
|
240
241
|
|
|
241
242
|
# Extract table statistics
|
|
@@ -329,7 +330,7 @@ def reconstruct_benchmark_results(
|
|
|
329
330
|
# TPC metrics
|
|
330
331
|
power_at_size=power_at_size,
|
|
331
332
|
throughput_at_size=throughput_at_size,
|
|
332
|
-
|
|
333
|
+
qph_at_size=qph_at_size,
|
|
333
334
|
geometric_mean_execution_time=geometric_mean_execution_time,
|
|
334
335
|
# Metadata
|
|
335
336
|
test_execution_type=benchmark_section.get("mode", "standard"),
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"""TPC benchmark metrics calculators.
|
|
2
|
+
|
|
3
|
+
This module provides standardized calculation of TPC-compliant benchmark metrics
|
|
4
|
+
including Power@Size, Throughput@Size, and QphH/QphDS composite metrics.
|
|
5
|
+
|
|
6
|
+
Copyright 2026 Joe Harris / BenchBox Project
|
|
7
|
+
|
|
8
|
+
Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import math
|
|
14
|
+
import statistics
|
|
15
|
+
from typing import TYPE_CHECKING
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from collections.abc import Sequence
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class TPCMetricsCalculator:
|
|
22
|
+
"""Calculate TPC-compliant benchmark metrics.
|
|
23
|
+
|
|
24
|
+
Implements metrics as defined in TPC-H and TPC-DS specifications:
|
|
25
|
+
- Power@Size: Single-stream query throughput metric
|
|
26
|
+
- Throughput@Size: Multi-stream concurrent throughput metric
|
|
27
|
+
- QphH/QphDS: Composite metric combining power and throughput
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def calculate_power_at_size(
|
|
32
|
+
query_times_seconds: Sequence[float],
|
|
33
|
+
scale_factor: float,
|
|
34
|
+
) -> float:
|
|
35
|
+
"""Calculate Power@Size metric (TPC-H/TPC-DS specification).
|
|
36
|
+
|
|
37
|
+
Power@Size measures single-stream query performance:
|
|
38
|
+
Power@Size = (SF * 3600) / geometric_mean(query_times)
|
|
39
|
+
|
|
40
|
+
This represents queries per hour at the given scale factor.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
query_times_seconds: List of query execution times in seconds
|
|
44
|
+
scale_factor: Benchmark scale factor (e.g., 0.01, 1, 10, 100)
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
Power@Size metric value, or 0.0 if calculation not possible
|
|
48
|
+
"""
|
|
49
|
+
if not query_times_seconds:
|
|
50
|
+
return 0.0
|
|
51
|
+
|
|
52
|
+
# Filter out zero/negative times which would break geometric mean
|
|
53
|
+
valid_times = [t for t in query_times_seconds if t > 0]
|
|
54
|
+
if not valid_times:
|
|
55
|
+
return 0.0
|
|
56
|
+
|
|
57
|
+
geometric_mean = statistics.geometric_mean(valid_times)
|
|
58
|
+
if geometric_mean <= 0:
|
|
59
|
+
return 0.0
|
|
60
|
+
|
|
61
|
+
return (scale_factor * 3600) / geometric_mean
|
|
62
|
+
|
|
63
|
+
@staticmethod
|
|
64
|
+
def calculate_throughput_at_size(
|
|
65
|
+
total_queries: int,
|
|
66
|
+
total_time_seconds: float,
|
|
67
|
+
scale_factor: float,
|
|
68
|
+
num_streams: int = 1,
|
|
69
|
+
) -> float:
|
|
70
|
+
"""Calculate Throughput@Size metric (TPC-H/TPC-DS specification).
|
|
71
|
+
|
|
72
|
+
Throughput@Size measures concurrent multi-stream performance:
|
|
73
|
+
Throughput@Size = (S * Q * SF * 3600) / T_s
|
|
74
|
+
|
|
75
|
+
Where:
|
|
76
|
+
- S = number of concurrent streams
|
|
77
|
+
- Q = number of queries per stream
|
|
78
|
+
- SF = scale factor
|
|
79
|
+
- T_s = total elapsed time in seconds
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
total_queries: Total queries executed across all streams
|
|
83
|
+
total_time_seconds: Total elapsed wall-clock time
|
|
84
|
+
scale_factor: Benchmark scale factor
|
|
85
|
+
num_streams: Number of concurrent streams
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
Throughput@Size metric value, or 0.0 if calculation not possible
|
|
89
|
+
"""
|
|
90
|
+
if total_time_seconds <= 0 or num_streams <= 0:
|
|
91
|
+
return 0.0
|
|
92
|
+
|
|
93
|
+
# Per TPC spec: (Streams * QueriesPerStream * SF * 3600) / TotalTime
|
|
94
|
+
# But we have total_queries already = Streams * QueriesPerStream
|
|
95
|
+
return (total_queries * scale_factor * 3600) / total_time_seconds
|
|
96
|
+
|
|
97
|
+
@staticmethod
|
|
98
|
+
def calculate_qph(power_at_size: float, throughput_at_size: float) -> float:
|
|
99
|
+
"""Calculate composite QphH/QphDS metric.
|
|
100
|
+
|
|
101
|
+
The composite metric is the geometric mean of Power and Throughput:
|
|
102
|
+
QphH = sqrt(Power@Size * Throughput@Size)
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
power_at_size: Power@Size metric value
|
|
106
|
+
throughput_at_size: Throughput@Size metric value
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
Composite QphH/QphDS metric, or 0.0 if either input is invalid
|
|
110
|
+
"""
|
|
111
|
+
if power_at_size <= 0 or throughput_at_size <= 0:
|
|
112
|
+
return 0.0
|
|
113
|
+
|
|
114
|
+
return statistics.geometric_mean([power_at_size, throughput_at_size])
|
|
115
|
+
|
|
116
|
+
@staticmethod
|
|
117
|
+
def calculate_geometric_mean(times: Sequence[float]) -> float:
|
|
118
|
+
"""Calculate geometric mean of execution times.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
times: Sequence of execution times (in any unit)
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
Geometric mean of times, or 0.0 if not calculable
|
|
125
|
+
"""
|
|
126
|
+
if not times:
|
|
127
|
+
return 0.0
|
|
128
|
+
|
|
129
|
+
valid_times = [t for t in times if t > 0]
|
|
130
|
+
if not valid_times:
|
|
131
|
+
return 0.0
|
|
132
|
+
|
|
133
|
+
return statistics.geometric_mean(valid_times)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class TimingStatsCalculator:
|
|
137
|
+
"""Calculate timing statistics for query results."""
|
|
138
|
+
|
|
139
|
+
@staticmethod
|
|
140
|
+
def calculate(times_ms: Sequence[float]) -> dict[str, float]:
|
|
141
|
+
"""Calculate comprehensive timing statistics.
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
times_ms: List of execution times in milliseconds
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
Dictionary containing:
|
|
148
|
+
- total_ms: Sum of all times
|
|
149
|
+
- avg_ms: Arithmetic mean
|
|
150
|
+
- min_ms: Minimum time
|
|
151
|
+
- max_ms: Maximum time
|
|
152
|
+
- geometric_mean_ms: Geometric mean
|
|
153
|
+
- stdev_ms: Standard deviation (0 if single value)
|
|
154
|
+
- p50_ms: 50th percentile (median)
|
|
155
|
+
- p90_ms: 90th percentile
|
|
156
|
+
- p95_ms: 95th percentile
|
|
157
|
+
- p99_ms: 99th percentile
|
|
158
|
+
"""
|
|
159
|
+
if not times_ms:
|
|
160
|
+
return {}
|
|
161
|
+
|
|
162
|
+
times_list = list(times_ms)
|
|
163
|
+
sorted_times = sorted(times_list)
|
|
164
|
+
n = len(sorted_times)
|
|
165
|
+
|
|
166
|
+
def percentile(p: float) -> float:
|
|
167
|
+
"""Calculate percentile using nearest-rank method."""
|
|
168
|
+
if n == 0:
|
|
169
|
+
return 0.0
|
|
170
|
+
k = max(1, math.ceil(n * p))
|
|
171
|
+
k = min(k, n) # Clamp to valid rank
|
|
172
|
+
k -= 1 # Convert rank to 0-based index
|
|
173
|
+
return sorted_times[k]
|
|
174
|
+
|
|
175
|
+
# Calculate geometric mean (only for positive values)
|
|
176
|
+
positive_times = [t for t in times_list if t > 0]
|
|
177
|
+
geom_mean = statistics.geometric_mean(positive_times) if positive_times else 0.0
|
|
178
|
+
|
|
179
|
+
return {
|
|
180
|
+
"total_ms": sum(times_list),
|
|
181
|
+
"avg_ms": statistics.mean(times_list),
|
|
182
|
+
"min_ms": min(times_list),
|
|
183
|
+
"max_ms": max(times_list),
|
|
184
|
+
"geometric_mean_ms": geom_mean,
|
|
185
|
+
"stdev_ms": statistics.stdev(times_list) if n > 1 else 0.0,
|
|
186
|
+
"p50_ms": percentile(0.50),
|
|
187
|
+
"p90_ms": percentile(0.90),
|
|
188
|
+
"p95_ms": percentile(0.95),
|
|
189
|
+
"p99_ms": percentile(0.99),
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@staticmethod
|
|
193
|
+
def calculate_seconds(times_seconds: Sequence[float]) -> dict[str, float]:
|
|
194
|
+
"""Calculate timing statistics with times in seconds.
|
|
195
|
+
|
|
196
|
+
Convenience method that returns results in seconds instead of milliseconds.
|
|
197
|
+
|
|
198
|
+
Args:
|
|
199
|
+
times_seconds: List of execution times in seconds
|
|
200
|
+
|
|
201
|
+
Returns:
|
|
202
|
+
Same structure as calculate() but with _s suffix instead of _ms
|
|
203
|
+
"""
|
|
204
|
+
if not times_seconds:
|
|
205
|
+
return {}
|
|
206
|
+
|
|
207
|
+
times_ms = [t * 1000 for t in times_seconds]
|
|
208
|
+
stats_ms = TimingStatsCalculator.calculate(times_ms)
|
|
209
|
+
|
|
210
|
+
# Convert back to seconds
|
|
211
|
+
return {key.replace("_ms", "_s"): value / 1000 for key, value in stats_ms.items()}
|
benchbox/core/results/models.py
CHANGED
|
@@ -215,7 +215,7 @@ class BenchmarkResults:
|
|
|
215
215
|
test_execution_type: str = "standard"
|
|
216
216
|
power_at_size: float | None = None
|
|
217
217
|
throughput_at_size: float | None = None
|
|
218
|
-
|
|
218
|
+
qph_at_size: float | None = None # TPC composite metric (QphH for TPC-H, QphDS for TPC-DS)
|
|
219
219
|
geometric_mean_execution_time: float | None = None
|
|
220
220
|
# Validation and metadata
|
|
221
221
|
validation_status: str = "PASSED"
|
|
@@ -256,6 +256,8 @@ class BenchmarkResults:
|
|
|
256
256
|
total_plan_capture_time_ms: float = 0.0 # Total time spent on plan capture
|
|
257
257
|
avg_plan_capture_overhead_pct: float = 0.0 # Average overhead as % of query time
|
|
258
258
|
max_plan_capture_time_ms: float = 0.0 # Maximum single capture time
|
|
259
|
+
# Execution context for reproducibility (captures CLI/MCP/API params)
|
|
260
|
+
execution_context: dict[str, Any] | None = None
|
|
259
261
|
|
|
260
262
|
@property
|
|
261
263
|
def benchmark_id(self) -> str:
|