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
|
@@ -230,13 +230,13 @@ def _get_dataframe_adapter(platform: str, **config: Any) -> Any:
|
|
|
230
230
|
)
|
|
231
231
|
|
|
232
232
|
adapter_mapping = {
|
|
233
|
-
"polars": (PolarsDataFrameAdapter, POLARS_AVAILABLE, "
|
|
234
|
-
"pandas": (PandasDataFrameAdapter, PANDAS_AVAILABLE, "
|
|
235
|
-
"modin": (ModinDataFrameAdapter, MODIN_AVAILABLE, "
|
|
233
|
+
"polars": (PolarsDataFrameAdapter, POLARS_AVAILABLE, "pip install polars"),
|
|
234
|
+
"pandas": (PandasDataFrameAdapter, PANDAS_AVAILABLE, "pip install pandas"),
|
|
235
|
+
"modin": (ModinDataFrameAdapter, MODIN_AVAILABLE, "pip install modin[ray]"),
|
|
236
236
|
"cudf": (CuDFDataFrameAdapter, CUDF_AVAILABLE, "pip install cudf-cu12"),
|
|
237
|
-
"dask": (DaskDataFrameAdapter, DASK_AVAILABLE, "
|
|
238
|
-
"pyspark": (PySparkDataFrameAdapter, PYSPARK_AVAILABLE, "
|
|
239
|
-
"datafusion": (DataFusionDataFrameAdapter, DATAFUSION_DF_AVAILABLE, "
|
|
237
|
+
"dask": (DaskDataFrameAdapter, DASK_AVAILABLE, "pip install dask[distributed]"),
|
|
238
|
+
"pyspark": (PySparkDataFrameAdapter, PYSPARK_AVAILABLE, "pip install pyspark"),
|
|
239
|
+
"datafusion": (DataFusionDataFrameAdapter, DATAFUSION_DF_AVAILABLE, "pip install datafusion"),
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
if platform not in adapter_mapping:
|
|
@@ -26,6 +26,7 @@ if TYPE_CHECKING:
|
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
from ..utils.dependencies import check_platform_dependencies, get_dependency_error_message
|
|
29
|
+
from ..utils.file_format import get_delimiter_for_file
|
|
29
30
|
from .base import PlatformAdapter
|
|
30
31
|
|
|
31
32
|
# Azure Synapse uses T-SQL dialect (compatible with SQL Server)
|
|
@@ -541,11 +542,7 @@ class AzureSynapseAdapter(PlatformAdapter):
|
|
|
541
542
|
|
|
542
543
|
# Determine file format
|
|
543
544
|
first_file = valid_files[0]
|
|
544
|
-
|
|
545
|
-
if ".tbl" in file_str or ".dat" in file_str:
|
|
546
|
-
field_terminator = "|"
|
|
547
|
-
else:
|
|
548
|
-
field_terminator = ","
|
|
545
|
+
field_terminator = get_delimiter_for_file(first_file)
|
|
549
546
|
|
|
550
547
|
# Use COPY INTO for loading
|
|
551
548
|
qualified_table = f"[{self.schema}].[{table_name}]"
|
|
@@ -609,8 +606,7 @@ class AzureSynapseAdapter(PlatformAdapter):
|
|
|
609
606
|
qualified_table = f"[{self.schema}].[{table_name}]"
|
|
610
607
|
|
|
611
608
|
for file_path in valid_files:
|
|
612
|
-
|
|
613
|
-
delimiter = "|" if ".tbl" in file_str or ".dat" in file_str else ","
|
|
609
|
+
delimiter = get_delimiter_for_file(file_path)
|
|
614
610
|
|
|
615
611
|
with open(file_path) as f:
|
|
616
612
|
batch_size = 1000
|
|
@@ -37,6 +37,7 @@ from benchbox.core.constants import (
|
|
|
37
37
|
)
|
|
38
38
|
from benchbox.core.errors import PlanCaptureError, SerializationError
|
|
39
39
|
from benchbox.core.operations import OperationExecutor
|
|
40
|
+
from benchbox.core.results.builder import normalize_benchmark_id
|
|
40
41
|
from benchbox.platforms.base.models import (
|
|
41
42
|
ConnectionConfig,
|
|
42
43
|
DataGenerationPhase,
|
|
@@ -1340,29 +1341,27 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
1340
1341
|
Returns:
|
|
1341
1342
|
Benchmark type string (lowercase) or None if unknown
|
|
1342
1343
|
"""
|
|
1343
|
-
# Try to get explicit _name attribute
|
|
1344
|
+
# Try to get explicit _name attribute first
|
|
1344
1345
|
if hasattr(benchmark, "_name"):
|
|
1345
|
-
|
|
1346
|
-
#
|
|
1347
|
-
if
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
return name
|
|
1346
|
+
benchmark_id = normalize_benchmark_id(benchmark._name)
|
|
1347
|
+
# normalize_benchmark_id returns the lowercase name for unknown benchmarks
|
|
1348
|
+
# Check if it's a known benchmark or use as-is if simple
|
|
1349
|
+
if benchmark_id in ("tpch", "tpcds", "ssb", "clickbench"):
|
|
1350
|
+
return benchmark_id
|
|
1351
|
+
# If the original name had no spaces, use it directly
|
|
1352
|
+
if " " not in benchmark._name:
|
|
1353
|
+
return benchmark._name.lower()
|
|
1354
1354
|
|
|
1355
1355
|
# Fall back to class name analysis
|
|
1356
1356
|
class_name = type(benchmark).__name__.lower()
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
elif "amplab" in class_name:
|
|
1357
|
+
|
|
1358
|
+
# Use normalize_benchmark_id for TPC benchmarks
|
|
1359
|
+
normalized = normalize_benchmark_id(class_name)
|
|
1360
|
+
if normalized in ("tpch", "tpcds", "ssb", "clickbench"):
|
|
1361
|
+
return normalized
|
|
1362
|
+
|
|
1363
|
+
# Handle other benchmark types by class name pattern
|
|
1364
|
+
if "amplab" in class_name:
|
|
1366
1365
|
return "amplab"
|
|
1367
1366
|
elif "h2odb" in class_name or "h2o" in class_name:
|
|
1368
1367
|
return "h2odb"
|
|
@@ -1372,14 +1371,14 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
1372
1371
|
return "joinorder"
|
|
1373
1372
|
elif "tpcdi" in class_name or "tpc_di" in class_name:
|
|
1374
1373
|
return "tpcdi"
|
|
1374
|
+
elif "star_schema" in class_name:
|
|
1375
|
+
return "ssb"
|
|
1375
1376
|
|
|
1376
1377
|
# Check display_name if available
|
|
1377
1378
|
if hasattr(benchmark, "display_name"):
|
|
1378
|
-
|
|
1379
|
-
if "tpch"
|
|
1380
|
-
return
|
|
1381
|
-
elif "tpcds" in display_name or "tpc-ds" in display_name:
|
|
1382
|
-
return "tpcds"
|
|
1379
|
+
benchmark_id = normalize_benchmark_id(str(benchmark.display_name))
|
|
1380
|
+
if benchmark_id in ("tpch", "tpcds", "ssb", "clickbench"):
|
|
1381
|
+
return benchmark_id
|
|
1383
1382
|
|
|
1384
1383
|
# Unknown benchmark type - validation will be skipped
|
|
1385
1384
|
return None
|
|
@@ -2756,6 +2755,12 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
2756
2755
|
|
|
2757
2756
|
execution_type = run_config.get("test_execution_type", "standard")
|
|
2758
2757
|
|
|
2758
|
+
# Extract cached power test metrics
|
|
2759
|
+
power_at_size_value = 0.0
|
|
2760
|
+
if getattr(self, "_last_power_test_result", None) is not None:
|
|
2761
|
+
power_at_size_value = getattr(self._last_power_test_result, "power_at_size", 0.0) or 0.0
|
|
2762
|
+
self._last_power_test_result = None
|
|
2763
|
+
|
|
2759
2764
|
power_test_phase = None
|
|
2760
2765
|
if execution_type not in {"throughput"}:
|
|
2761
2766
|
power_test_phase = PowerTestPhase(
|
|
@@ -2764,7 +2769,7 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
2764
2769
|
duration_ms=int(total_exec_time * 1000),
|
|
2765
2770
|
query_executions=query_executions,
|
|
2766
2771
|
geometric_mean_time=avg_time,
|
|
2767
|
-
power_at_size=
|
|
2772
|
+
power_at_size=power_at_size_value,
|
|
2768
2773
|
)
|
|
2769
2774
|
|
|
2770
2775
|
throughput_test_phase = None
|
|
@@ -2808,6 +2813,22 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
2808
2813
|
"connection_config_hash": self._hash_connection_config(run_config.get("connection", {})),
|
|
2809
2814
|
"python_version": platform.python_version(),
|
|
2810
2815
|
"benchbox_version": "0.1.0",
|
|
2816
|
+
"mode": "sql",
|
|
2817
|
+
"benchmark_id": run_config.get("benchmark") or run_config.get("benchmark_name"),
|
|
2818
|
+
"run_config": {
|
|
2819
|
+
"compression": {
|
|
2820
|
+
"type": run_config.get("compression_type"),
|
|
2821
|
+
"level": run_config.get("compression_level"),
|
|
2822
|
+
}
|
|
2823
|
+
if run_config.get("compression_type")
|
|
2824
|
+
else None,
|
|
2825
|
+
"seed": run_config.get("seed"),
|
|
2826
|
+
"phases": run_config.get("phases"),
|
|
2827
|
+
"query_subset": run_config.get("query_subset"),
|
|
2828
|
+
"platform_options": run_config.get("platform_options"),
|
|
2829
|
+
"tuning_mode": run_config.get("tuning_mode"),
|
|
2830
|
+
"tuning_config": run_config.get("tuning_config"),
|
|
2831
|
+
},
|
|
2811
2832
|
}
|
|
2812
2833
|
|
|
2813
2834
|
# Calculate additional metrics needed
|
|
@@ -2822,6 +2843,17 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
2822
2843
|
total_rows_loaded=total_rows_loaded,
|
|
2823
2844
|
)
|
|
2824
2845
|
|
|
2846
|
+
# Extract TPC metrics from phases for result propagation
|
|
2847
|
+
power_at_size = power_test_phase.power_at_size if power_test_phase else None
|
|
2848
|
+
throughput_at_size = throughput_test_phase.throughput_at_size if throughput_test_phase else None
|
|
2849
|
+
|
|
2850
|
+
# Calculate composite metric if both power and throughput are available
|
|
2851
|
+
import math
|
|
2852
|
+
|
|
2853
|
+
qph_at_size = None
|
|
2854
|
+
if power_at_size and power_at_size > 0 and throughput_at_size and throughput_at_size > 0:
|
|
2855
|
+
qph_at_size = math.sqrt(power_at_size * throughput_at_size)
|
|
2856
|
+
|
|
2825
2857
|
return benchmark.create_enhanced_benchmark_result(
|
|
2826
2858
|
platform=self.platform_name,
|
|
2827
2859
|
query_results=query_results,
|
|
@@ -2848,6 +2880,11 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
2848
2880
|
anonymous_machine_id=anonymous_machine_id,
|
|
2849
2881
|
validation_status=self._determine_overall_validation_status(validation_phase),
|
|
2850
2882
|
validation_details=validation_phase.validation_details,
|
|
2883
|
+
# TPC metrics
|
|
2884
|
+
power_at_size=power_at_size,
|
|
2885
|
+
throughput_at_size=throughput_at_size,
|
|
2886
|
+
qph_at_size=qph_at_size,
|
|
2887
|
+
test_execution_type=execution_type,
|
|
2851
2888
|
)
|
|
2852
2889
|
|
|
2853
2890
|
finally:
|
|
@@ -3384,8 +3421,15 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3384
3421
|
connection = kwargs.pop("connection", None)
|
|
3385
3422
|
if connection is None:
|
|
3386
3423
|
raise ValueError("TPC benchmarks require a connection object for throughput tests")
|
|
3424
|
+
|
|
3387
3425
|
# TPC-DS uses connection_factory pattern
|
|
3388
|
-
|
|
3426
|
+
# Create thread-safe cursor for concurrent stream execution
|
|
3427
|
+
# See: https://duckdb.org/docs/stable/guides/python/multiple_threads
|
|
3428
|
+
def _default_connection_factory():
|
|
3429
|
+
stream_cursor = connection.cursor()
|
|
3430
|
+
return stream_cursor
|
|
3431
|
+
|
|
3432
|
+
connection_factory = kwargs.pop("connection_factory", _default_connection_factory)
|
|
3389
3433
|
|
|
3390
3434
|
# Inject platform's target dialect if not already specified
|
|
3391
3435
|
if "dialect" not in kwargs:
|
|
@@ -3609,7 +3653,7 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3609
3653
|
try:
|
|
3610
3654
|
# Extract configuration
|
|
3611
3655
|
scale_factor = run_config.get("scale_factor", 1.0)
|
|
3612
|
-
seed = run_config.get("seed"
|
|
3656
|
+
seed = run_config.get("seed")
|
|
3613
3657
|
validation_mode = run_config.get("validation_mode") # Universal validation mode
|
|
3614
3658
|
stream_id = run_config.get("stream_id", 0)
|
|
3615
3659
|
query_subset = run_config.get("query_subset")
|
|
@@ -3648,7 +3692,22 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3648
3692
|
validation_mode=validation_mode,
|
|
3649
3693
|
query_subset=query_subset,
|
|
3650
3694
|
)
|
|
3651
|
-
power_test.run()
|
|
3695
|
+
power_test_result = power_test.run()
|
|
3696
|
+
for query_result in power_test_result.query_results:
|
|
3697
|
+
platform_result = {
|
|
3698
|
+
"query_id": query_result["query_id"],
|
|
3699
|
+
"execution_time": query_result["execution_time"],
|
|
3700
|
+
"status": "SUCCESS" if query_result["success"] else "FAILED",
|
|
3701
|
+
"rows_returned": query_result.get("result_count", 0),
|
|
3702
|
+
"test_type": "power",
|
|
3703
|
+
"stream_id": query_result.get("stream_id", current_stream_id),
|
|
3704
|
+
"position": query_result.get("position", 0),
|
|
3705
|
+
"iteration": 0,
|
|
3706
|
+
"run_type": "warmup",
|
|
3707
|
+
}
|
|
3708
|
+
if not query_result["success"]:
|
|
3709
|
+
platform_result["error"] = query_result.get("error", "Unknown error")
|
|
3710
|
+
all_results.append(platform_result)
|
|
3652
3711
|
|
|
3653
3712
|
# Measurement runs
|
|
3654
3713
|
for i in range(iterations):
|
|
@@ -3670,6 +3729,9 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3670
3729
|
# Execute the power test
|
|
3671
3730
|
power_test_result = power_test.run()
|
|
3672
3731
|
|
|
3732
|
+
# Cache the power test result for metric extraction
|
|
3733
|
+
self._last_power_test_result = power_test_result
|
|
3734
|
+
|
|
3673
3735
|
# Display results
|
|
3674
3736
|
if power_test_result.success:
|
|
3675
3737
|
success_rate = power_test_result.queries_successful / max(power_test_result.queries_executed, 1)
|
|
@@ -3698,6 +3760,7 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3698
3760
|
"stream_id": query_result.get("stream_id", current_stream_id),
|
|
3699
3761
|
"position": query_result.get("position", 0),
|
|
3700
3762
|
"iteration": i + 1,
|
|
3763
|
+
"run_type": "measurement",
|
|
3701
3764
|
}
|
|
3702
3765
|
if not query_result["success"]:
|
|
3703
3766
|
platform_result["error"] = query_result.get("error", "Unknown error")
|
|
@@ -3736,9 +3799,8 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3736
3799
|
- scale_factor: Benchmark scale factor
|
|
3737
3800
|
|
|
3738
3801
|
Returns:
|
|
3739
|
-
List of query results from all measurement iterations, with each result
|
|
3740
|
-
tagged with iteration number and run_type
|
|
3741
|
-
are discarded.
|
|
3802
|
+
List of query results from all warmup and measurement iterations, with each result
|
|
3803
|
+
tagged with iteration number and run_type ("warmup" or "measurement").
|
|
3742
3804
|
"""
|
|
3743
3805
|
from rich.console import Console
|
|
3744
3806
|
|
|
@@ -3757,11 +3819,15 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3757
3819
|
|
|
3758
3820
|
all_measurement_results = []
|
|
3759
3821
|
|
|
3760
|
-
# Warm-up runs (results
|
|
3822
|
+
# Warm-up runs (results captured)
|
|
3761
3823
|
for i in range(warm_up_iterations):
|
|
3762
3824
|
console.print(f"[cyan]--- Warm-up Run {i + 1}/{warm_up_iterations} ---[/cyan]")
|
|
3763
|
-
|
|
3764
|
-
|
|
3825
|
+
warmup_results = self._execute_all_queries(benchmark, connection, run_config)
|
|
3826
|
+
for result in warmup_results:
|
|
3827
|
+
result["iteration"] = 0
|
|
3828
|
+
result["stream_id"] = 0
|
|
3829
|
+
result["run_type"] = "warmup"
|
|
3830
|
+
all_measurement_results.append(result)
|
|
3765
3831
|
|
|
3766
3832
|
# Measurement runs (results collected)
|
|
3767
3833
|
for i in range(iterations):
|
|
@@ -3771,6 +3837,7 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3771
3837
|
# Tag each result with iteration number and run type
|
|
3772
3838
|
for result in iteration_results:
|
|
3773
3839
|
result["iteration"] = i + 1
|
|
3840
|
+
result["stream_id"] = i + 1
|
|
3774
3841
|
result["run_type"] = "measurement"
|
|
3775
3842
|
|
|
3776
3843
|
all_measurement_results.extend(iteration_results)
|
|
@@ -3821,7 +3888,10 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3821
3888
|
|
|
3822
3889
|
# Create connection factory that wraps the platform adapter connection
|
|
3823
3890
|
def connection_factory():
|
|
3824
|
-
|
|
3891
|
+
# Create thread-safe cursor for concurrent stream execution
|
|
3892
|
+
# See: https://duckdb.org/docs/stable/guides/python/multiple_threads
|
|
3893
|
+
stream_cursor = connection.cursor()
|
|
3894
|
+
conn_wrapper = PlatformAdapterConnection(stream_cursor, self)
|
|
3825
3895
|
# Configure benchmark context for query validation
|
|
3826
3896
|
conn_wrapper.benchmark_type = "tpcds"
|
|
3827
3897
|
conn_wrapper.scale_factor = scale_factor
|
|
@@ -3844,7 +3914,22 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3844
3914
|
dialect=self.get_target_dialect(),
|
|
3845
3915
|
query_subset=query_subset,
|
|
3846
3916
|
)
|
|
3847
|
-
power_test.run()
|
|
3917
|
+
power_test_result = power_test.run()
|
|
3918
|
+
for query_result in power_test_result.query_results:
|
|
3919
|
+
platform_result = {
|
|
3920
|
+
"query_id": query_result["query_id"],
|
|
3921
|
+
"execution_time": query_result["execution_time"],
|
|
3922
|
+
"status": "SUCCESS" if query_result["success"] else "FAILED",
|
|
3923
|
+
"rows_returned": query_result.get("result_count", 0),
|
|
3924
|
+
"test_type": "power",
|
|
3925
|
+
"stream_id": query_result.get("stream_id", current_stream_id),
|
|
3926
|
+
"position": query_result.get("position", 0),
|
|
3927
|
+
"iteration": 0,
|
|
3928
|
+
"run_type": "warmup",
|
|
3929
|
+
}
|
|
3930
|
+
if not query_result["success"]:
|
|
3931
|
+
platform_result["error"] = query_result.get("error", "Unknown error")
|
|
3932
|
+
all_results.append(platform_result)
|
|
3848
3933
|
|
|
3849
3934
|
# Measurement runs
|
|
3850
3935
|
for i in range(iterations):
|
|
@@ -3865,6 +3950,9 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3865
3950
|
# Execute the power test
|
|
3866
3951
|
power_test_result = power_test.run()
|
|
3867
3952
|
|
|
3953
|
+
# Cache the power test result for metric extraction
|
|
3954
|
+
self._last_power_test_result = power_test_result
|
|
3955
|
+
|
|
3868
3956
|
# Display results
|
|
3869
3957
|
if self.very_verbose:
|
|
3870
3958
|
with contextlib.suppress(Exception):
|
|
@@ -3903,6 +3991,7 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3903
3991
|
"stream_id": query_result.get("stream_id", current_stream_id),
|
|
3904
3992
|
"position": query_result.get("position", 0),
|
|
3905
3993
|
"iteration": i + 1, # Add iteration tracking
|
|
3994
|
+
"run_type": "measurement",
|
|
3906
3995
|
}
|
|
3907
3996
|
if not query_result["success"]:
|
|
3908
3997
|
platform_result["error"] = query_result.get("error", "Unknown error")
|
|
@@ -3949,7 +4038,10 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
3949
4038
|
|
|
3950
4039
|
# Create connection factory that wraps the platform adapter connection
|
|
3951
4040
|
def connection_factory():
|
|
3952
|
-
|
|
4041
|
+
# Create thread-safe cursor for concurrent stream execution
|
|
4042
|
+
# See: https://duckdb.org/docs/stable/guides/python/multiple_threads
|
|
4043
|
+
stream_cursor = connection.cursor()
|
|
4044
|
+
conn_wrapper = PlatformAdapterConnection(stream_cursor, self)
|
|
3953
4045
|
# Configure benchmark context for query validation
|
|
3954
4046
|
conn_wrapper.benchmark_type = "tpcds"
|
|
3955
4047
|
conn_wrapper.scale_factor = scale_factor
|
|
@@ -4074,7 +4166,10 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
4074
4166
|
)
|
|
4075
4167
|
|
|
4076
4168
|
def connection_factory():
|
|
4077
|
-
|
|
4169
|
+
# Create thread-safe cursor for concurrent stream execution
|
|
4170
|
+
# See: https://duckdb.org/docs/stable/guides/python/multiple_threads
|
|
4171
|
+
stream_cursor = connection.cursor()
|
|
4172
|
+
conn_wrapper = PlatformAdapterConnection(stream_cursor, self)
|
|
4078
4173
|
# Configure benchmark context for query validation
|
|
4079
4174
|
conn_wrapper.benchmark_type = "tpch"
|
|
4080
4175
|
conn_wrapper.scale_factor = scale_factor
|
|
@@ -4086,7 +4181,6 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
4086
4181
|
scale_factor=scale_factor,
|
|
4087
4182
|
num_streams=num_streams,
|
|
4088
4183
|
verbose=verbose,
|
|
4089
|
-
dialect=self.get_target_dialect(),
|
|
4090
4184
|
)
|
|
4091
4185
|
|
|
4092
4186
|
seed = run_config.get("seed")
|
|
@@ -4167,7 +4261,10 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
4167
4261
|
|
|
4168
4262
|
# Create connection factory that wraps the platform adapter connection
|
|
4169
4263
|
def connection_factory():
|
|
4170
|
-
|
|
4264
|
+
# Create thread-safe cursor for concurrent stream execution
|
|
4265
|
+
# See: https://duckdb.org/docs/stable/guides/python/multiple_threads
|
|
4266
|
+
stream_cursor = connection.cursor()
|
|
4267
|
+
conn_wrapper = PlatformAdapterConnection(stream_cursor, self)
|
|
4171
4268
|
# Configure benchmark context for query validation
|
|
4172
4269
|
conn_wrapper.benchmark_type = "tpcds"
|
|
4173
4270
|
conn_wrapper.scale_factor = scale_factor
|
|
@@ -4256,8 +4353,12 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
4256
4353
|
console.print(f"[green]Running TPC-H Maintenance Test (Scale Factor: {scale_factor})[/green]")
|
|
4257
4354
|
|
|
4258
4355
|
def connection_factory():
|
|
4259
|
-
|
|
4260
|
-
#
|
|
4356
|
+
# Create thread-safe cursor for maintenance operations
|
|
4357
|
+
# See: https://duckdb.org/docs/stable/guides/python/multiple_threads
|
|
4358
|
+
stream_cursor = connection.cursor()
|
|
4359
|
+
# Use maintenance_mode=True to execute all queries directly on the connection
|
|
4360
|
+
# (RF1/RF2 operations need real data, not validation-wrapped results)
|
|
4361
|
+
conn_wrapper = PlatformAdapterConnection(stream_cursor, self, maintenance_mode=True)
|
|
4261
4362
|
conn_wrapper.benchmark_type = "tpch"
|
|
4262
4363
|
conn_wrapper.scale_factor = scale_factor
|
|
4263
4364
|
return conn_wrapper
|
|
@@ -4267,7 +4368,6 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
4267
4368
|
scale_factor=scale_factor,
|
|
4268
4369
|
output_dir=Path(output_dir) if isinstance(output_dir, str) else output_dir,
|
|
4269
4370
|
verbose=verbose,
|
|
4270
|
-
dialect=self.get_target_dialect(),
|
|
4271
4371
|
)
|
|
4272
4372
|
|
|
4273
4373
|
result = maintenance_test.run_maintenance_test(
|
|
@@ -4337,19 +4437,30 @@ class PlatformAdapter(VerbosityMixin, ABC):
|
|
|
4337
4437
|
|
|
4338
4438
|
|
|
4339
4439
|
class PlatformAdapterConnection:
|
|
4340
|
-
"""Adapter to wrap platform adapter connections for TPC test classes.
|
|
4440
|
+
"""Adapter to wrap platform adapter connections for TPC test classes.
|
|
4441
|
+
|
|
4442
|
+
Supports two modes:
|
|
4443
|
+
- Validation mode (default): Routes queries through platform adapter for TPC validation
|
|
4444
|
+
- Maintenance mode: Routes all queries directly to underlying connection for real data
|
|
4445
|
+
|
|
4446
|
+
Maintenance operations (RF1/RF2) require real query results and parameterized queries,
|
|
4447
|
+
so they use maintenance mode. Power/throughput tests use validation mode for result checking.
|
|
4448
|
+
"""
|
|
4341
4449
|
|
|
4342
|
-
def __init__(self, connection: Any, platform_adapter: PlatformAdapter):
|
|
4450
|
+
def __init__(self, connection: Any, platform_adapter: PlatformAdapter, maintenance_mode: bool = False):
|
|
4343
4451
|
"""Initialize the connection adapter.
|
|
4344
4452
|
|
|
4345
4453
|
Args:
|
|
4346
4454
|
connection: Original platform connection
|
|
4347
4455
|
platform_adapter: Platform adapter instance for query execution
|
|
4456
|
+
maintenance_mode: If True, all queries bypass validation and execute directly
|
|
4457
|
+
on the underlying connection (needed for RF1/RF2 operations)
|
|
4348
4458
|
"""
|
|
4349
4459
|
self.connection = connection
|
|
4350
4460
|
self.platform_adapter = platform_adapter
|
|
4351
4461
|
self.connection_string = getattr(connection, "connection_string", "platform_adapter_connection")
|
|
4352
4462
|
self.dialect = getattr(platform_adapter, "get_target_dialect", lambda: "standard")()
|
|
4463
|
+
self._maintenance_mode = maintenance_mode
|
|
4353
4464
|
|
|
4354
4465
|
# Benchmark context for query validation (set by TPC test runners)
|
|
4355
4466
|
self.benchmark_type: str | None = None
|
|
@@ -4370,15 +4481,35 @@ class PlatformAdapterConnection:
|
|
|
4370
4481
|
self._current_query_id = query_id
|
|
4371
4482
|
self._current_stream_id = stream_id
|
|
4372
4483
|
|
|
4373
|
-
def execute(self, query: str):
|
|
4484
|
+
def execute(self, query: str, parameters: tuple | list | None = None):
|
|
4374
4485
|
"""Execute a query using the platform adapter with validation support.
|
|
4375
4486
|
|
|
4487
|
+
In maintenance mode, all queries execute directly on the underlying connection
|
|
4488
|
+
to get real results (needed for RF1/RF2 operations that use INSERT/DELETE/SELECT).
|
|
4489
|
+
|
|
4490
|
+
In validation mode (default), non-parameterized queries use the platform adapter
|
|
4491
|
+
for TPC result validation support.
|
|
4492
|
+
|
|
4376
4493
|
Args:
|
|
4377
4494
|
query: SQL query to execute
|
|
4495
|
+
parameters: Optional parameters for parameterized queries
|
|
4378
4496
|
|
|
4379
4497
|
Returns:
|
|
4380
|
-
|
|
4498
|
+
Cursor with results - either raw DB cursor (maintenance) or PlatformAdapterCursor
|
|
4381
4499
|
"""
|
|
4500
|
+
# Maintenance mode: all queries execute directly on underlying connection
|
|
4501
|
+
# This is needed for RF1/RF2 operations that require real data
|
|
4502
|
+
if self._maintenance_mode:
|
|
4503
|
+
if parameters:
|
|
4504
|
+
return self.connection.execute(query, parameters)
|
|
4505
|
+
else:
|
|
4506
|
+
return self.connection.execute(query)
|
|
4507
|
+
|
|
4508
|
+
# Validation mode: parameterized queries still go through directly
|
|
4509
|
+
if parameters:
|
|
4510
|
+
return self.connection.execute(query, parameters)
|
|
4511
|
+
|
|
4512
|
+
# Non-parameterized queries use the platform adapter for validation support
|
|
4382
4513
|
# Debug: Write query to file to see what's being executed
|
|
4383
4514
|
try:
|
|
4384
4515
|
with open("/tmp/tpc_debug_queries.log", "a") as f:
|
|
@@ -4399,10 +4530,19 @@ class PlatformAdapterConnection:
|
|
|
4399
4530
|
return PlatformAdapterCursor(result)
|
|
4400
4531
|
|
|
4401
4532
|
def commit(self):
|
|
4402
|
-
"""
|
|
4533
|
+
"""Commit transaction on underlying connection."""
|
|
4534
|
+
if hasattr(self.connection, "commit"):
|
|
4535
|
+
self.connection.commit()
|
|
4536
|
+
|
|
4537
|
+
def rollback(self):
|
|
4538
|
+
"""Rollback transaction on underlying connection."""
|
|
4539
|
+
if hasattr(self.connection, "rollback"):
|
|
4540
|
+
self.connection.rollback()
|
|
4403
4541
|
|
|
4404
4542
|
def close(self):
|
|
4405
|
-
"""
|
|
4543
|
+
"""Close underlying connection."""
|
|
4544
|
+
if hasattr(self.connection, "close"):
|
|
4545
|
+
self.connection.close()
|
|
4406
4546
|
|
|
4407
4547
|
|
|
4408
4548
|
class PlatformAdapterCursor:
|
|
@@ -61,6 +61,7 @@ class CloudPlatform(Enum):
|
|
|
61
61
|
SYNAPSE = "synapse"
|
|
62
62
|
GLUE = "glue"
|
|
63
63
|
FABRIC = "fabric"
|
|
64
|
+
QUANTON = "quanton"
|
|
64
65
|
LOCAL = "local"
|
|
65
66
|
|
|
66
67
|
|
|
@@ -478,6 +479,13 @@ class SparkConfigOptimizer:
|
|
|
478
479
|
# Synapse-specific optimizations
|
|
479
480
|
config.extra["spark.sql.optimizer.dynamicPartitionPruning.enabled"] = "true"
|
|
480
481
|
|
|
482
|
+
elif platform == CloudPlatform.QUANTON:
|
|
483
|
+
# Onehouse Quanton-specific optimizations
|
|
484
|
+
config.extra["spark.sql.optimizer.dynamicPartitionPruning.enabled"] = "true"
|
|
485
|
+
config.extra["spark.sql.parquet.filterPushdown"] = "true"
|
|
486
|
+
# Quanton uses intelligent lakehouse I/O optimization
|
|
487
|
+
config.extra["spark.sql.adaptive.advisoryPartitionSizeInBytes"] = "67108864" # 64MB
|
|
488
|
+
|
|
481
489
|
@classmethod
|
|
482
490
|
def merge_configs(cls, *configs: SparkConfig) -> SparkConfig:
|
|
483
491
|
"""Merge multiple SparkConfigs, later configs override earlier.
|
|
@@ -214,6 +214,7 @@ class SparkTableFormat(str, Enum):
|
|
|
214
214
|
|
|
215
215
|
DELTA = "delta" # Delta Lake (Databricks, EMR, Dataproc with Delta)
|
|
216
216
|
ICEBERG = "iceberg" # Apache Iceberg
|
|
217
|
+
HUDI = "hudi" # Apache Hudi (Onehouse, AWS EMR, Dataproc)
|
|
217
218
|
PARQUET = "parquet" # Apache Parquet (native Spark)
|
|
218
219
|
HIVE = "hive" # Legacy Hive format
|
|
219
220
|
|
|
@@ -290,6 +291,8 @@ class SparkDDLGeneratorMixin:
|
|
|
290
291
|
return self._generate_delta_tuning(table_tuning, platform_opts)
|
|
291
292
|
elif table_format == SparkTableFormat.ICEBERG:
|
|
292
293
|
return self._generate_iceberg_tuning(table_tuning, platform_opts)
|
|
294
|
+
elif table_format == SparkTableFormat.HUDI:
|
|
295
|
+
return self._generate_hudi_tuning(table_tuning, platform_opts)
|
|
293
296
|
elif table_format == SparkTableFormat.PARQUET:
|
|
294
297
|
return self._generate_parquet_tuning(table_tuning, platform_opts)
|
|
295
298
|
elif table_format == SparkTableFormat.HIVE:
|
|
@@ -480,6 +483,99 @@ class SparkDDLGeneratorMixin:
|
|
|
480
483
|
# Default to identity transform
|
|
481
484
|
return col_name
|
|
482
485
|
|
|
486
|
+
def _generate_hudi_tuning(
|
|
487
|
+
self,
|
|
488
|
+
table_tuning: TableTuning | None,
|
|
489
|
+
platform_opts: PlatformOptimizationConfiguration | None = None,
|
|
490
|
+
) -> TuningClauses:
|
|
491
|
+
"""Generate Apache Hudi tuning clauses.
|
|
492
|
+
|
|
493
|
+
Hudi supports:
|
|
494
|
+
- PARTITIONED BY (col1, col2) with hive_style_partitioning
|
|
495
|
+
- TBLPROPERTIES for:
|
|
496
|
+
- hoodie.table.name (table name for metadata)
|
|
497
|
+
- hoodie.datasource.write.recordkey.field (required: record key for dedup)
|
|
498
|
+
- hoodie.datasource.write.precombine.field (ordering field for updates)
|
|
499
|
+
- hoodie.table.type (COPY_ON_WRITE default, MERGE_ON_READ option)
|
|
500
|
+
- hoodie.datasource.write.operation (insert, upsert, bulk_insert)
|
|
501
|
+
- hoodie.datasource.write.hive_style_partitioning (for partition path)
|
|
502
|
+
|
|
503
|
+
Unlike Delta Lake/Iceberg, Hudi requires explicit record key and precombine
|
|
504
|
+
field configuration. These must be provided via platform_opts or detected
|
|
505
|
+
from table schema.
|
|
506
|
+
"""
|
|
507
|
+
from benchbox.core.tuning.ddl_generator import TuningClauses
|
|
508
|
+
from benchbox.core.tuning.interface import TuningType
|
|
509
|
+
|
|
510
|
+
clauses = TuningClauses()
|
|
511
|
+
|
|
512
|
+
# Set table format
|
|
513
|
+
clauses.additional_clauses.append("USING HUDI")
|
|
514
|
+
|
|
515
|
+
# Get Hudi-specific configuration from platform_opts
|
|
516
|
+
record_key = None
|
|
517
|
+
precombine_field = None
|
|
518
|
+
table_type = "COPY_ON_WRITE" # Default: better for analytics reads
|
|
519
|
+
write_operation = "upsert" # Default write mode
|
|
520
|
+
|
|
521
|
+
if platform_opts:
|
|
522
|
+
record_key = getattr(platform_opts, "record_key", None)
|
|
523
|
+
precombine_field = getattr(platform_opts, "precombine_field", None)
|
|
524
|
+
table_type = getattr(platform_opts, "hudi_table_type", table_type)
|
|
525
|
+
write_operation = getattr(platform_opts, "hudi_write_operation", write_operation)
|
|
526
|
+
|
|
527
|
+
# Record key is required - use sensible defaults if not provided
|
|
528
|
+
if record_key:
|
|
529
|
+
clauses.table_properties["hoodie.datasource.write.recordkey.field"] = record_key
|
|
530
|
+
# Note: If no record_key is provided, the caller should set it based on schema
|
|
531
|
+
|
|
532
|
+
# Precombine field for ordering during updates
|
|
533
|
+
if precombine_field:
|
|
534
|
+
clauses.table_properties["hoodie.datasource.write.precombine.field"] = precombine_field
|
|
535
|
+
|
|
536
|
+
# Table type: COW for analytics (faster reads), MOR for streaming (faster writes)
|
|
537
|
+
clauses.table_properties["hoodie.table.type"] = table_type
|
|
538
|
+
|
|
539
|
+
# Write operation mode
|
|
540
|
+
clauses.table_properties["hoodie.datasource.write.operation"] = write_operation
|
|
541
|
+
|
|
542
|
+
if not table_tuning:
|
|
543
|
+
return clauses
|
|
544
|
+
|
|
545
|
+
# Handle partitioning
|
|
546
|
+
partition_columns = table_tuning.get_columns_by_type(TuningType.PARTITIONING)
|
|
547
|
+
if partition_columns:
|
|
548
|
+
sorted_cols = sorted(partition_columns, key=lambda c: c.order)
|
|
549
|
+
col_names = [c.name for c in sorted_cols]
|
|
550
|
+
clauses.partition_by = f"PARTITIONED BY ({', '.join(col_names)})"
|
|
551
|
+
|
|
552
|
+
# Enable hive-style partitioning for better compatibility
|
|
553
|
+
clauses.table_properties["hoodie.datasource.write.hive_style_partitioning"] = "true"
|
|
554
|
+
|
|
555
|
+
# Handle distribution via Hudi's file group assignment
|
|
556
|
+
# Hudi uses record key for distribution, not explicit CLUSTERED BY
|
|
557
|
+
distribution_columns = table_tuning.get_columns_by_type(TuningType.DISTRIBUTION)
|
|
558
|
+
if distribution_columns and not record_key:
|
|
559
|
+
# Use first distribution column as record key if not explicitly set
|
|
560
|
+
sorted_cols = sorted(distribution_columns, key=lambda c: c.order)
|
|
561
|
+
clauses.table_properties["hoodie.datasource.write.recordkey.field"] = sorted_cols[0].name
|
|
562
|
+
|
|
563
|
+
# Handle sorting via Hudi's clustering
|
|
564
|
+
sort_columns = table_tuning.get_columns_by_type(TuningType.SORTING)
|
|
565
|
+
cluster_columns = table_tuning.get_columns_by_type(TuningType.CLUSTERING)
|
|
566
|
+
|
|
567
|
+
all_sort_cols = list(sort_columns) + [c for c in cluster_columns if c not in sort_columns]
|
|
568
|
+
if all_sort_cols:
|
|
569
|
+
sorted_cols = sorted(all_sort_cols, key=lambda c: c.order)
|
|
570
|
+
col_names = [c.name for c in sorted_cols]
|
|
571
|
+
|
|
572
|
+
# Enable Hudi clustering for sorted data layout
|
|
573
|
+
clauses.table_properties["hoodie.clustering.inline"] = "true"
|
|
574
|
+
clauses.table_properties["hoodie.clustering.inline.max.commits"] = "4"
|
|
575
|
+
clauses.table_properties["hoodie.clustering.plan.strategy.sort.columns"] = ",".join(col_names)
|
|
576
|
+
|
|
577
|
+
return clauses
|
|
578
|
+
|
|
483
579
|
def _generate_parquet_tuning(
|
|
484
580
|
self,
|
|
485
581
|
table_tuning: TableTuning | None,
|