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
benchbox/core/schemas.py
CHANGED
|
@@ -140,7 +140,7 @@ class RunConfig(BaseModel):
|
|
|
140
140
|
def validate_convert_format(cls, v: Optional[str]) -> Optional[str]:
|
|
141
141
|
"""Validate convert_format is supported."""
|
|
142
142
|
if v is not None:
|
|
143
|
-
allowed = {"parquet", "delta", "iceberg"}
|
|
143
|
+
allowed = {"parquet", "vortex", "delta", "iceberg"}
|
|
144
144
|
v_lower = v.lower()
|
|
145
145
|
if v_lower not in allowed:
|
|
146
146
|
raise ValueError(f"convert_format must be one of {allowed}, got: {v}")
|
|
@@ -266,7 +266,7 @@ class DatabaseConfig(BaseModel):
|
|
|
266
266
|
driver_version: Optional[str] = None
|
|
267
267
|
driver_version_resolved: Optional[str] = None
|
|
268
268
|
driver_auto_install: bool = False
|
|
269
|
-
execution_mode: Optional[Literal["sql", "dataframe"]] = None
|
|
269
|
+
execution_mode: Optional[Literal["sql", "dataframe", "data_only"]] = None
|
|
270
270
|
|
|
271
271
|
@field_validator("type")
|
|
272
272
|
@classmethod
|
|
@@ -338,7 +338,7 @@ class PlatformInfo(BaseModel):
|
|
|
338
338
|
enabled: bool
|
|
339
339
|
requirements: list[str]
|
|
340
340
|
installation_command: str
|
|
341
|
-
|
|
341
|
+
adoption: str = "niche" # One of: mainstream, established, emerging, niche
|
|
342
342
|
category: str = "database"
|
|
343
343
|
supports: list[str] = Field(default_factory=list)
|
|
344
344
|
driver_package: Optional[str] = None
|
|
@@ -346,6 +346,147 @@ class PlatformInfo(BaseModel):
|
|
|
346
346
|
driver_version_resolved: Optional[str] = None
|
|
347
347
|
|
|
348
348
|
|
|
349
|
+
class ExecutionContext(BaseModel):
|
|
350
|
+
"""Execution context for reproducibility - constructed by all entry points.
|
|
351
|
+
|
|
352
|
+
This model captures all execution parameters needed to reproduce a benchmark run.
|
|
353
|
+
It is constructed at each entry point (CLI, MCP, Python API) and flows through
|
|
354
|
+
core execution to be embedded in results.
|
|
355
|
+
|
|
356
|
+
Example:
|
|
357
|
+
>>> ctx = ExecutionContext(
|
|
358
|
+
... entry_point="cli",
|
|
359
|
+
... phases=["load", "power"],
|
|
360
|
+
... seed=42,
|
|
361
|
+
... compression_type="zstd",
|
|
362
|
+
... )
|
|
363
|
+
>>> ctx.to_cli_string("duckdb", "tpch", 1.0)
|
|
364
|
+
'benchbox run --platform duckdb --benchmark tpch --scale 1.0 --phases load,power --seed 42 --compression zstd'
|
|
365
|
+
"""
|
|
366
|
+
|
|
367
|
+
model_config = ConfigDict(extra="forbid")
|
|
368
|
+
|
|
369
|
+
# Identity & provenance
|
|
370
|
+
entry_point: Literal["cli", "mcp", "python_api"] = "python_api"
|
|
371
|
+
invocation_timestamp: datetime = Field(default_factory=datetime.now)
|
|
372
|
+
|
|
373
|
+
# Phases
|
|
374
|
+
phases: list[str] = Field(default_factory=lambda: ["power"])
|
|
375
|
+
|
|
376
|
+
# Determinism
|
|
377
|
+
seed: Optional[int] = None
|
|
378
|
+
|
|
379
|
+
# Compression
|
|
380
|
+
compression_enabled: bool = False
|
|
381
|
+
compression_type: str = "none"
|
|
382
|
+
compression_level: Optional[int] = None
|
|
383
|
+
|
|
384
|
+
# Execution mode
|
|
385
|
+
mode: Literal["sql", "dataframe"] = "sql"
|
|
386
|
+
|
|
387
|
+
# TPC compliance
|
|
388
|
+
official: bool = False
|
|
389
|
+
|
|
390
|
+
# Validation
|
|
391
|
+
validation_mode: Optional[str] = None
|
|
392
|
+
|
|
393
|
+
# Force flags
|
|
394
|
+
force_datagen: bool = False
|
|
395
|
+
force_upload: bool = False
|
|
396
|
+
|
|
397
|
+
# Query subset (also in RunConfig, but included for complete CLI reconstruction)
|
|
398
|
+
query_subset: Optional[list[str]] = None
|
|
399
|
+
|
|
400
|
+
# Plan capture
|
|
401
|
+
capture_plans: bool = False
|
|
402
|
+
strict_plan_capture: bool = False
|
|
403
|
+
|
|
404
|
+
# Non-interactive
|
|
405
|
+
non_interactive: bool = False
|
|
406
|
+
|
|
407
|
+
# Tuning
|
|
408
|
+
tuning_mode: Optional[str] = None # "tuned", "notuning", "auto", or path
|
|
409
|
+
|
|
410
|
+
def to_cli_args(self) -> list[str]:
|
|
411
|
+
"""Reconstruct CLI arguments from non-default values.
|
|
412
|
+
|
|
413
|
+
Returns:
|
|
414
|
+
List of CLI arguments like ["--phases", "load,power", "--seed", "42"]
|
|
415
|
+
"""
|
|
416
|
+
args: list[str] = []
|
|
417
|
+
|
|
418
|
+
# Phases (default is ["power"])
|
|
419
|
+
if self.phases != ["power"]:
|
|
420
|
+
args.extend(["--phases", ",".join(self.phases)])
|
|
421
|
+
|
|
422
|
+
# Seed
|
|
423
|
+
if self.seed is not None:
|
|
424
|
+
args.extend(["--seed", str(self.seed)])
|
|
425
|
+
|
|
426
|
+
# Compression
|
|
427
|
+
if self.compression_enabled and self.compression_type != "none":
|
|
428
|
+
if self.compression_level is not None:
|
|
429
|
+
args.extend(["--compression", f"{self.compression_type}:{self.compression_level}"])
|
|
430
|
+
else:
|
|
431
|
+
args.extend(["--compression", self.compression_type])
|
|
432
|
+
|
|
433
|
+
# Mode (default is "sql")
|
|
434
|
+
if self.mode != "sql":
|
|
435
|
+
args.extend(["--mode", self.mode])
|
|
436
|
+
|
|
437
|
+
# Official TPC mode
|
|
438
|
+
if self.official:
|
|
439
|
+
args.append("--official")
|
|
440
|
+
|
|
441
|
+
# Validation
|
|
442
|
+
if self.validation_mode:
|
|
443
|
+
args.extend(["--validation", self.validation_mode])
|
|
444
|
+
|
|
445
|
+
# Force flags
|
|
446
|
+
force_parts = []
|
|
447
|
+
if self.force_datagen:
|
|
448
|
+
force_parts.append("datagen")
|
|
449
|
+
if self.force_upload:
|
|
450
|
+
force_parts.append("upload")
|
|
451
|
+
if force_parts:
|
|
452
|
+
args.extend(["--force", ",".join(force_parts)])
|
|
453
|
+
|
|
454
|
+
# Query subset
|
|
455
|
+
if self.query_subset:
|
|
456
|
+
args.extend(["--queries", ",".join(self.query_subset)])
|
|
457
|
+
|
|
458
|
+
# Plan capture
|
|
459
|
+
if self.capture_plans:
|
|
460
|
+
args.append("--capture-plans")
|
|
461
|
+
if self.strict_plan_capture:
|
|
462
|
+
args.extend(["--plan-config", "strict:true"])
|
|
463
|
+
|
|
464
|
+
# Non-interactive
|
|
465
|
+
if self.non_interactive:
|
|
466
|
+
args.append("--non-interactive")
|
|
467
|
+
|
|
468
|
+
# Tuning
|
|
469
|
+
if self.tuning_mode and self.tuning_mode != "notuning":
|
|
470
|
+
args.extend(["--tuning", self.tuning_mode])
|
|
471
|
+
|
|
472
|
+
return args
|
|
473
|
+
|
|
474
|
+
def to_cli_string(self, platform: str, benchmark: str, scale: float) -> str:
|
|
475
|
+
"""Generate complete CLI command string.
|
|
476
|
+
|
|
477
|
+
Args:
|
|
478
|
+
platform: Target platform name
|
|
479
|
+
benchmark: Benchmark name
|
|
480
|
+
scale: Scale factor
|
|
481
|
+
|
|
482
|
+
Returns:
|
|
483
|
+
Complete CLI command like "benchbox run --platform duckdb --benchmark tpch --scale 1.0"
|
|
484
|
+
"""
|
|
485
|
+
base = f"benchbox run --platform {platform} --benchmark {benchmark} --scale {scale}"
|
|
486
|
+
args = self.to_cli_args()
|
|
487
|
+
return f"{base} {' '.join(args)}" if args else base
|
|
488
|
+
|
|
489
|
+
|
|
349
490
|
class DryRunResult(BaseModel):
|
|
350
491
|
"""Contains all information gathered during a dry run."""
|
|
351
492
|
|
|
@@ -375,5 +516,6 @@ __all__ = [
|
|
|
375
516
|
"SystemProfile",
|
|
376
517
|
"LibraryInfo",
|
|
377
518
|
"PlatformInfo",
|
|
519
|
+
"ExecutionContext",
|
|
378
520
|
"DryRunResult",
|
|
379
521
|
]
|
benchbox/core/ssb/generator.py
CHANGED
|
@@ -27,6 +27,7 @@ from pathlib import Path
|
|
|
27
27
|
|
|
28
28
|
from benchbox.utils.cloud_storage import CloudStorageGeneratorMixin, create_path_handler
|
|
29
29
|
from benchbox.utils.compression_mixin import CompressionMixin
|
|
30
|
+
from benchbox.utils.file_format import detect_compression
|
|
30
31
|
|
|
31
32
|
|
|
32
33
|
class SSBDataGenerator(CompressionMixin, CloudStorageGeneratorMixin):
|
|
@@ -305,12 +306,13 @@ class SSBDataGenerator(CompressionMixin, CloudStorageGeneratorMixin):
|
|
|
305
306
|
# Count rows efficiently
|
|
306
307
|
rows = 0
|
|
307
308
|
try:
|
|
308
|
-
|
|
309
|
+
compression = detect_compression(p)
|
|
310
|
+
if compression == "gzip":
|
|
309
311
|
import gzip
|
|
310
312
|
|
|
311
313
|
with gzip.open(p, "rt") as f:
|
|
312
314
|
rows = sum(1 for _ in f)
|
|
313
|
-
elif
|
|
315
|
+
elif compression == "zstd":
|
|
314
316
|
try:
|
|
315
317
|
import zstandard as zstd
|
|
316
318
|
|
|
@@ -321,6 +323,16 @@ class SSBDataGenerator(CompressionMixin, CloudStorageGeneratorMixin):
|
|
|
321
323
|
rows = sum(1 for _ in io.TextIOWrapper(reader))
|
|
322
324
|
except Exception:
|
|
323
325
|
rows = 0
|
|
326
|
+
elif compression == "bzip2":
|
|
327
|
+
import bz2
|
|
328
|
+
|
|
329
|
+
with bz2.open(p, "rt") as f:
|
|
330
|
+
rows = sum(1 for _ in f)
|
|
331
|
+
elif compression == "xz":
|
|
332
|
+
import lzma
|
|
333
|
+
|
|
334
|
+
with lzma.open(p, "rt") as f:
|
|
335
|
+
rows = sum(1 for _ in f)
|
|
324
336
|
else:
|
|
325
337
|
with open(p, "rb") as f:
|
|
326
338
|
rows = sum(1 for _ in f)
|
benchbox/core/tpc_compliance.py
CHANGED
|
@@ -292,9 +292,9 @@ class TPCOfficialMetrics:
|
|
|
292
292
|
power_at_size = (3600.0 * self.scale_factor) / power_time
|
|
293
293
|
throughput_at_size = (num_streams * 3600.0 * self.scale_factor) / throughput_time
|
|
294
294
|
|
|
295
|
-
import
|
|
295
|
+
from benchbox.core.results.metrics import TPCMetricsCalculator
|
|
296
296
|
|
|
297
|
-
return
|
|
297
|
+
return TPCMetricsCalculator.calculate_qph(power_at_size, throughput_at_size)
|
|
298
298
|
|
|
299
299
|
def calculate_qphds_size(self, power_time: float, throughput_time: float, num_streams: int) -> float:
|
|
300
300
|
"""Calculate QphDS@Size metric for TPC-DS."""
|
|
@@ -304,9 +304,9 @@ class TPCOfficialMetrics:
|
|
|
304
304
|
power_at_size = (3600.0 * self.scale_factor) / power_time
|
|
305
305
|
throughput_at_size = (num_streams * 3600.0 * self.scale_factor) / throughput_time
|
|
306
306
|
|
|
307
|
-
import
|
|
307
|
+
from benchbox.core.results.metrics import TPCMetricsCalculator
|
|
308
308
|
|
|
309
|
-
return
|
|
309
|
+
return TPCMetricsCalculator.calculate_qph(power_at_size, throughput_at_size)
|
|
310
310
|
|
|
311
311
|
|
|
312
312
|
class TPCTimer:
|
benchbox/core/tpc_metrics.py
CHANGED
|
@@ -4,7 +4,7 @@ This module implements the official TPC metrics calculation engine that computes
|
|
|
4
4
|
standard TPC metrics according to the official TPC specifications.
|
|
5
5
|
|
|
6
6
|
Key metrics implemented:
|
|
7
|
-
- Power@Size: 3600 × Scale_Factor /
|
|
7
|
+
- Power@Size: 3600 × Scale_Factor / geometric_mean(query_times)
|
|
8
8
|
- Throughput@Size: Num_Streams × 3600 × Scale_Factor / Throughput_Test_Time
|
|
9
9
|
- QphH@Size: sqrt(Power@Size × Throughput@Size) [TPC-H]
|
|
10
10
|
- QphDS@Size: sqrt(Power@Size × Throughput@Size) [TPC-DS]
|
|
@@ -240,7 +240,7 @@ class PowerMetrics:
|
|
|
240
240
|
"""
|
|
241
241
|
Calculate Power@Size metric.
|
|
242
242
|
|
|
243
|
-
Formula: Power@Size = 3600 × Scale_Factor /
|
|
243
|
+
Formula: Power@Size = 3600 × Scale_Factor / geometric_mean(query_times)
|
|
244
244
|
|
|
245
245
|
Args:
|
|
246
246
|
results: PowerTestResults containing test execution data
|
|
@@ -253,8 +253,13 @@ class PowerMetrics:
|
|
|
253
253
|
if validation_errors:
|
|
254
254
|
return 0.0, validation_errors
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
|
|
256
|
+
exec_times = [r.execution_time for r in results.test_results if r.success and r.execution_time > 0]
|
|
257
|
+
if not exec_times:
|
|
258
|
+
validation_errors.append("No valid query execution times for Power@Size calculation")
|
|
259
|
+
return 0.0, validation_errors
|
|
260
|
+
|
|
261
|
+
geometric_mean = statistics.geometric_mean(exec_times)
|
|
262
|
+
power_at_size = (3600.0 * results.scale_factor) / geometric_mean
|
|
258
263
|
|
|
259
264
|
# Additional validation on result
|
|
260
265
|
if power_at_size <= 0:
|
|
@@ -5,6 +5,8 @@ from __future__ import annotations
|
|
|
5
5
|
import json
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
+
from benchbox.utils.file_format import detect_compression
|
|
9
|
+
|
|
8
10
|
|
|
9
11
|
class ManifestMixin:
|
|
10
12
|
"""Provide manifest persistence and validation helpers."""
|
|
@@ -49,12 +51,13 @@ class ManifestMixin:
|
|
|
49
51
|
size = p.stat().st_size if p.exists() else 0
|
|
50
52
|
rows = 0
|
|
51
53
|
try:
|
|
52
|
-
|
|
54
|
+
compression = detect_compression(p)
|
|
55
|
+
if compression == "gzip":
|
|
53
56
|
import gzip
|
|
54
57
|
|
|
55
58
|
with gzip.open(p, "rt") as f:
|
|
56
59
|
rows = sum(1 for _ in f)
|
|
57
|
-
elif
|
|
60
|
+
elif compression == "zstd":
|
|
58
61
|
try:
|
|
59
62
|
import zstandard as zstd
|
|
60
63
|
|
|
@@ -65,6 +68,16 @@ class ManifestMixin:
|
|
|
65
68
|
rows = sum(1 for _ in io.TextIOWrapper(reader))
|
|
66
69
|
except Exception:
|
|
67
70
|
rows = 0
|
|
71
|
+
elif compression == "bzip2":
|
|
72
|
+
import bz2
|
|
73
|
+
|
|
74
|
+
with bz2.open(p, "rt") as f:
|
|
75
|
+
rows = sum(1 for _ in f)
|
|
76
|
+
elif compression == "xz":
|
|
77
|
+
import lzma
|
|
78
|
+
|
|
79
|
+
with lzma.open(p, "rt") as f:
|
|
80
|
+
rows = sum(1 for _ in f)
|
|
68
81
|
else:
|
|
69
82
|
with open(p, "rb") as f:
|
|
70
83
|
rows = sum(1 for _ in f)
|
|
@@ -18,6 +18,7 @@ from benchbox.core.validation import (
|
|
|
18
18
|
DataValidationEngine,
|
|
19
19
|
ValidationResult,
|
|
20
20
|
)
|
|
21
|
+
from benchbox.utils.file_format import get_delimiter_for_file
|
|
21
22
|
|
|
22
23
|
from ..c_tools import TPCDSCTools
|
|
23
24
|
from ..generator import TPCDSDataGenerator
|
|
@@ -1012,13 +1013,8 @@ class TPCDSBenchmark(BaseBenchmark):
|
|
|
1012
1013
|
|
|
1013
1014
|
rows_loaded = 0
|
|
1014
1015
|
|
|
1015
|
-
# Determine the file format
|
|
1016
|
-
|
|
1017
|
-
# CSV format (converted from .dat)
|
|
1018
|
-
delimiter = ","
|
|
1019
|
-
else:
|
|
1020
|
-
# Original .dat format with pipe delimiter
|
|
1021
|
-
delimiter = "|"
|
|
1016
|
+
# Determine the delimiter based on file format (handles compression)
|
|
1017
|
+
delimiter = get_delimiter_for_file(data_file)
|
|
1022
1018
|
|
|
1023
1019
|
# Read and process the delimited file
|
|
1024
1020
|
with open(data_file, encoding="utf-8") as f:
|
benchbox/core/tpcds/c_tools.py
CHANGED
|
@@ -39,34 +39,33 @@ def _resolve_tpcds_tool_and_template_paths() -> tuple[Path, Path]:
|
|
|
39
39
|
|
|
40
40
|
To eliminate maintenance burden and prevent template divergence, we:
|
|
41
41
|
1. Use platform-specific binaries from _binaries/tpc-ds/{platform}/
|
|
42
|
-
2. Use centralized templates from
|
|
42
|
+
2. Use centralized templates from _binaries/tpc-ds/templates/query_templates/
|
|
43
|
+
(bundled inside the package for wheel installs)
|
|
43
44
|
|
|
44
45
|
This approach is safe because:
|
|
45
46
|
- dsqgen uses the DSS_QUERY environment variable to locate templates
|
|
46
47
|
- Templates and binaries don't need to be co-located
|
|
47
48
|
- Data files (tpcds.idx, tpcds.dst) are copied from binary location at runtime
|
|
48
|
-
|
|
49
|
-
Template duplication in _binaries/ directories is legacy and unused.
|
|
50
49
|
"""
|
|
50
|
+
from benchbox.utils.tpc_compilation import get_tpc_templates_dir
|
|
51
51
|
|
|
52
52
|
compiler = get_tpc_compiler(auto_compile=False)
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
# ALWAYS use centralized templates from _sources/ (single source of truth)
|
|
59
|
-
templates_path = repo_root / "_sources/tpc-ds/query_templates"
|
|
54
|
+
# Resolve templates: bundled package first, then _sources/ fallback
|
|
55
|
+
templates_root = get_tpc_templates_dir("tpc-ds")
|
|
56
|
+
templates_path = templates_root / "query_templates"
|
|
60
57
|
|
|
61
58
|
# Use platform-specific binaries from precompiled bundle when available
|
|
62
59
|
if compiler.precompiled_base:
|
|
63
60
|
platform_str = compiler._get_platform_string()
|
|
64
61
|
bundle_root = compiler.precompiled_base / "tpc-ds" / platform_str
|
|
65
62
|
if bundle_root.exists():
|
|
66
|
-
# Return: platform binaries + centralized templates
|
|
67
63
|
return bundle_root, templates_path
|
|
68
64
|
|
|
69
65
|
# Fallback to source tools if no precompiled binaries
|
|
66
|
+
import benchbox
|
|
67
|
+
|
|
68
|
+
repo_root = Path(benchbox.__file__).parent.parent
|
|
70
69
|
tools_path = repo_root / "_sources/tpc-ds/tools"
|
|
71
70
|
return tools_path, templates_path
|
|
72
71
|
|
|
@@ -256,9 +255,6 @@ class DSQGenBinary:
|
|
|
256
255
|
"""Generate query using dsqgen binary with minimal wrapper."""
|
|
257
256
|
cmd = [str(self.dsqgen_path)]
|
|
258
257
|
|
|
259
|
-
# Essential dsqgen parameters
|
|
260
|
-
templates_list = self.templates_dir / "templates.lst"
|
|
261
|
-
|
|
262
258
|
# Template and dialect
|
|
263
259
|
# Multi-part queries (14, 23, 24, 39) have two SQL statements in a single template
|
|
264
260
|
# For these, we use the base template and extract the appropriate part later
|
|
@@ -284,21 +280,15 @@ class DSQGenBinary:
|
|
|
284
280
|
# Fall back to main templates relative path on any error
|
|
285
281
|
template_rel = f"query_templates/{template_name}"
|
|
286
282
|
|
|
287
|
-
cmd.extend(["-INPUT", str(templates_list)])
|
|
288
|
-
|
|
289
|
-
# For dialect files, dsqgen looks for them in the -DIRECTORY path
|
|
290
|
-
# Dialect templates (like netezza.tpl) are in query_templates/, so always use that as DIRECTORY
|
|
291
|
-
cmd.extend(["-DIRECTORY", str(self.templates_dir)])
|
|
292
|
-
|
|
293
283
|
if "query_variants/" in template_rel:
|
|
294
284
|
# For variant templates, use relative path from query_templates (../ to access sibling directory)
|
|
295
285
|
# query_variants/query14a.tpl becomes ../query_variants/query14a.tpl
|
|
296
|
-
|
|
286
|
+
template_arg = f"../{template_rel}"
|
|
297
287
|
else:
|
|
298
288
|
# For main templates, remove the query_templates/ prefix since we're already in that directory
|
|
299
|
-
|
|
300
|
-
cmd.extend(["-TEMPLATE", template_name_only])
|
|
289
|
+
template_arg = template_rel.replace("query_templates/", "")
|
|
301
290
|
|
|
291
|
+
cmd.extend(["-TEMPLATE", template_arg])
|
|
302
292
|
cmd.extend(["-DIALECT", dialect])
|
|
303
293
|
|
|
304
294
|
# Scale and generation parameters
|
|
@@ -318,11 +308,27 @@ class DSQGenBinary:
|
|
|
318
308
|
import tempfile
|
|
319
309
|
|
|
320
310
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
311
|
+
temp_path = Path(temp_dir)
|
|
312
|
+
|
|
313
|
+
# Symlink templates into temp dir with short names to avoid
|
|
314
|
+
# exceeding dsqgen's internal 80-char path buffer for -DIRECTORY.
|
|
315
|
+
# Use single-char name for the templates dir (passed as -DIRECTORY).
|
|
316
|
+
tpl_dir = temp_path / "q"
|
|
317
|
+
tpl_dir.symlink_to(self.templates_dir)
|
|
318
|
+
# Symlink query_variants as sibling so ../query_variants/ resolves
|
|
319
|
+
var_src = self.templates_dir.parent / "query_variants"
|
|
320
|
+
if var_src.exists():
|
|
321
|
+
(temp_path / "query_variants").symlink_to(var_src)
|
|
322
|
+
|
|
323
|
+
# Set -INPUT and -DIRECTORY using short symlinked paths
|
|
324
|
+
cmd.extend(["-INPUT", str(tpl_dir / "templates.lst")])
|
|
325
|
+
cmd.extend(["-DIRECTORY", str(tpl_dir)])
|
|
326
|
+
|
|
321
327
|
# Set up environment for dsqgen
|
|
322
328
|
env = os.environ.copy()
|
|
323
|
-
# Point DSS_QUERY at the
|
|
324
|
-
#
|
|
325
|
-
env["DSS_QUERY"] = str(
|
|
329
|
+
# Point DSS_QUERY at the temp dir which contains both
|
|
330
|
+
# the q/ (query_templates) and query_variants/ symlinks
|
|
331
|
+
env["DSS_QUERY"] = str(temp_path)
|
|
326
332
|
|
|
327
333
|
# Copy required distribution files to temp directory
|
|
328
334
|
dsqgen_dir = Path(self.dsqgen_path).parent
|
|
@@ -330,11 +336,11 @@ class DSQGenBinary:
|
|
|
330
336
|
for dist_file in dist_files:
|
|
331
337
|
dist_src = dsqgen_dir / dist_file
|
|
332
338
|
if dist_src.exists():
|
|
333
|
-
shutil.copy2(dist_src,
|
|
339
|
+
shutil.copy2(dist_src, temp_path / dist_file)
|
|
334
340
|
# Also check if file exists in tools_dir (source version)
|
|
335
341
|
dist_src_alt = self.tools_dir / dist_file
|
|
336
|
-
if not (
|
|
337
|
-
shutil.copy2(dist_src_alt,
|
|
342
|
+
if not (temp_path / dist_file).exists() and dist_src_alt.exists():
|
|
343
|
+
shutil.copy2(dist_src_alt, temp_path / dist_file)
|
|
338
344
|
|
|
339
345
|
result = subprocess.run(
|
|
340
346
|
cmd,
|
|
@@ -9255,19 +9255,29 @@ def q16_expression_impl(ctx: DataFrameContext) -> Any:
|
|
|
9255
9255
|
returned_orders = catalog_returns.select(["cr_order_number"]).unique()
|
|
9256
9256
|
|
|
9257
9257
|
# Find orders shipped from multiple warehouses
|
|
9258
|
-
#
|
|
9259
|
-
|
|
9260
|
-
|
|
9261
|
-
|
|
9262
|
-
|
|
9263
|
-
order_warehouses.
|
|
9264
|
-
|
|
9265
|
-
|
|
9258
|
+
# Platform-specific optimization: Polars is faster with n_unique,
|
|
9259
|
+
# DataFusion is faster with self-join pattern
|
|
9260
|
+
platform = getattr(ctx, "platform", "polars")
|
|
9261
|
+
if platform == "datafusion":
|
|
9262
|
+
# DataFusion: self-join pattern is 5x faster
|
|
9263
|
+
order_warehouses = catalog_sales.select(["cs_order_number", "cs_warehouse_sk"]).unique()
|
|
9264
|
+
multi_warehouse_orders = (
|
|
9265
|
+
order_warehouses.join(
|
|
9266
|
+
order_warehouses.rename({"cs_warehouse_sk": "cs_warehouse_sk_2"}),
|
|
9267
|
+
on="cs_order_number",
|
|
9268
|
+
)
|
|
9269
|
+
.filter(col("cs_warehouse_sk") != col("cs_warehouse_sk_2"))
|
|
9270
|
+
.select(["cs_order_number"])
|
|
9271
|
+
.unique()
|
|
9272
|
+
)
|
|
9273
|
+
else:
|
|
9274
|
+
# Polars/others: n_unique pattern is 7x faster
|
|
9275
|
+
multi_warehouse_orders = (
|
|
9276
|
+
catalog_sales.group_by("cs_order_number")
|
|
9277
|
+
.agg(col("cs_warehouse_sk").n_unique().alias("num_warehouses"))
|
|
9278
|
+
.filter(col("num_warehouses") > lit(1))
|
|
9279
|
+
.select("cs_order_number")
|
|
9266
9280
|
)
|
|
9267
|
-
.filter(col("cs_warehouse_sk") != col("cs_warehouse_sk_2"))
|
|
9268
|
-
.select(["cs_order_number"])
|
|
9269
|
-
.unique()
|
|
9270
|
-
)
|
|
9271
9281
|
|
|
9272
9282
|
# Main query: catalog_sales joined with dimensions
|
|
9273
9283
|
result = (
|
|
@@ -11774,16 +11784,29 @@ def q95_expression_impl(ctx: DataFrameContext) -> Any:
|
|
|
11774
11784
|
ws_filtered = web_site.filter(col("web_company_name") == lit("pri"))
|
|
11775
11785
|
|
|
11776
11786
|
# Find orders shipped from multiple warehouses (CTE ws_wh)
|
|
11777
|
-
|
|
11778
|
-
|
|
11779
|
-
|
|
11780
|
-
|
|
11781
|
-
|
|
11787
|
+
# Platform-specific optimization: Polars is faster with n_unique,
|
|
11788
|
+
# DataFusion is faster with self-join pattern
|
|
11789
|
+
platform = getattr(ctx, "platform", "polars")
|
|
11790
|
+
if platform == "datafusion":
|
|
11791
|
+
# DataFusion: self-join pattern is 5x faster
|
|
11792
|
+
order_warehouses = web_sales.select(["ws_order_number", "ws_warehouse_sk"]).unique()
|
|
11793
|
+
multi_warehouse_orders = (
|
|
11794
|
+
order_warehouses.join(
|
|
11795
|
+
order_warehouses.rename({"ws_warehouse_sk": "ws_warehouse_sk_2"}),
|
|
11796
|
+
on="ws_order_number",
|
|
11797
|
+
)
|
|
11798
|
+
.filter(col("ws_warehouse_sk") != col("ws_warehouse_sk_2"))
|
|
11799
|
+
.select(["ws_order_number"])
|
|
11800
|
+
.unique()
|
|
11801
|
+
)
|
|
11802
|
+
else:
|
|
11803
|
+
# Polars/others: n_unique pattern is 7x faster
|
|
11804
|
+
multi_warehouse_orders = (
|
|
11805
|
+
web_sales.group_by("ws_order_number")
|
|
11806
|
+
.agg(col("ws_warehouse_sk").n_unique().alias("num_warehouses"))
|
|
11807
|
+
.filter(col("num_warehouses") > lit(1))
|
|
11808
|
+
.select("ws_order_number")
|
|
11782
11809
|
)
|
|
11783
|
-
.filter(col("ws_warehouse_sk") != col("ws_warehouse_sk_2"))
|
|
11784
|
-
.select(["ws_order_number"])
|
|
11785
|
-
.unique()
|
|
11786
|
-
)
|
|
11787
11810
|
|
|
11788
11811
|
# Get returned orders that are also multi-warehouse
|
|
11789
11812
|
returned_orders = (
|
|
@@ -6,6 +6,7 @@ import json
|
|
|
6
6
|
import shutil
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
|
|
9
|
+
from benchbox.utils.file_format import detect_compression, strip_compression_suffix
|
|
9
10
|
from benchbox.utils.scale_factor import format_scale_factor
|
|
10
11
|
|
|
11
12
|
|
|
@@ -69,12 +70,8 @@ class FileArtifactMixin:
|
|
|
69
70
|
valid_parallel_files: list[Path] = []
|
|
70
71
|
for pf in candidate_files:
|
|
71
72
|
name = pf.name
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
elif name.endswith(".zst"):
|
|
75
|
-
name_core = name[:-4]
|
|
76
|
-
else:
|
|
77
|
-
name_core = name
|
|
73
|
+
# Strip compression suffix to get the core filename
|
|
74
|
+
name_core = strip_compression_suffix(Path(name)).name
|
|
78
75
|
stem = Path(name_core).stem
|
|
79
76
|
if stem.startswith(f"{table_name}_"):
|
|
80
77
|
suffix = stem[len(f"{table_name}_") :]
|
|
@@ -131,12 +128,16 @@ class FileArtifactMixin:
|
|
|
131
128
|
file_size = file_path.stat().st_size
|
|
132
129
|
|
|
133
130
|
# For compressed files, minimum valid size should be significantly larger than just compressed headers
|
|
134
|
-
|
|
131
|
+
compression = detect_compression(file_path)
|
|
132
|
+
if compression == "zstd":
|
|
135
133
|
# Empty zstd files are exactly 9 bytes; consider any value >9 as non-empty
|
|
136
134
|
return file_size > 9
|
|
137
|
-
elif
|
|
135
|
+
elif compression == "gzip":
|
|
138
136
|
# Empty gzip files are around ~20 bytes; accept >20 as non-empty
|
|
139
137
|
return file_size > 20
|
|
138
|
+
elif compression is not None:
|
|
139
|
+
# For other compression types, use a reasonable minimum
|
|
140
|
+
return file_size > 20
|
|
140
141
|
else:
|
|
141
142
|
# For uncompressed files, any non-empty file is valid
|
|
142
143
|
return file_size > 0
|
|
@@ -295,17 +296,28 @@ class FileArtifactMixin:
|
|
|
295
296
|
# Count rows in the file (handles both compressed and uncompressed)
|
|
296
297
|
row_count = 0
|
|
297
298
|
try:
|
|
298
|
-
# Handle compressed files
|
|
299
|
-
|
|
299
|
+
# Handle compressed files using centralized detection
|
|
300
|
+
compression = detect_compression(file_path)
|
|
301
|
+
if compression == "gzip":
|
|
300
302
|
import gzip
|
|
301
303
|
|
|
302
304
|
with gzip.open(file_path, "rb") as f:
|
|
303
305
|
row_count = sum(1 for _ in f)
|
|
304
|
-
elif
|
|
306
|
+
elif compression == "zstd":
|
|
305
307
|
import zstandard as zstd
|
|
306
308
|
|
|
307
309
|
with zstd.open(file_path, "rb") as f:
|
|
308
310
|
row_count = sum(1 for _ in f)
|
|
311
|
+
elif compression == "bzip2":
|
|
312
|
+
import bz2
|
|
313
|
+
|
|
314
|
+
with bz2.open(file_path, "rb") as f:
|
|
315
|
+
row_count = sum(1 for _ in f)
|
|
316
|
+
elif compression == "xz":
|
|
317
|
+
import lzma
|
|
318
|
+
|
|
319
|
+
with lzma.open(file_path, "rb") as f:
|
|
320
|
+
row_count = sum(1 for _ in f)
|
|
309
321
|
else:
|
|
310
322
|
# Uncompressed file
|
|
311
323
|
with open(file_path, "rb") as f:
|
|
@@ -10,6 +10,7 @@ from pathlib import Path
|
|
|
10
10
|
from benchbox.utils.cloud_storage import CloudStorageGeneratorMixin, create_path_handler
|
|
11
11
|
from benchbox.utils.compression_mixin import CompressionMixin
|
|
12
12
|
from benchbox.utils.data_validation import BenchmarkDataValidator
|
|
13
|
+
from benchbox.utils.file_format import is_tpc_format
|
|
13
14
|
|
|
14
15
|
from .filesystem import FileArtifactMixin
|
|
15
16
|
from .runner import DsdgenRunnerMixin
|
|
@@ -266,10 +267,10 @@ class TPCDSDataGenerator(
|
|
|
266
267
|
print(f"⚡ Using bundled TPC-DS sample dataset for scale factor {self.scale_factor}")
|
|
267
268
|
self._copy_sample_dataset(sample_dir, target_dir)
|
|
268
269
|
|
|
269
|
-
# If compression is enabled, compress the copied
|
|
270
|
+
# If compression is enabled, compress the copied TPC data files
|
|
270
271
|
if self.should_use_compression():
|
|
271
272
|
for dat_file in list(target_dir.glob("*.dat")):
|
|
272
|
-
if dat_file
|
|
273
|
+
if is_tpc_format(dat_file): # Only compress TPC data files, skip .dst and .idx
|
|
273
274
|
try:
|
|
274
275
|
self.compress_existing_file(dat_file, remove_original=True)
|
|
275
276
|
except Exception:
|