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/platforms/__init__.py
CHANGED
|
@@ -8,6 +8,7 @@ Copyright 2026 Joe Harris / BenchBox Project
|
|
|
8
8
|
Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
+
import importlib
|
|
11
12
|
from typing import Optional, Type
|
|
12
13
|
|
|
13
14
|
from benchbox.core.platform_registry import PlatformRegistry
|
|
@@ -15,170 +16,215 @@ from benchbox.utils.runtime_env import ensure_driver_version
|
|
|
15
16
|
|
|
16
17
|
from .base import BenchmarkResults, ConnectionConfig, PlatformAdapter
|
|
17
18
|
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
# ============================================================================
|
|
20
|
+
# Lazy Import System for Cloud Platform Adapters
|
|
21
|
+
# ============================================================================
|
|
22
|
+
# Cloud platform SDKs (databricks, snowflake, google-cloud-bigquery, etc.) have
|
|
23
|
+
# heavy import chains that add 300+ seconds to pytest collection time even when
|
|
24
|
+
# wrapped in try/except blocks. The import statement itself executes even if
|
|
25
|
+
# immediately caught.
|
|
26
|
+
#
|
|
27
|
+
# This lazy loading pattern defers the actual import until the adapter is first
|
|
28
|
+
# accessed, dramatically reducing test suite startup time.
|
|
29
|
+
#
|
|
30
|
+
# Adapters loaded lazily (heavy SDK dependencies):
|
|
31
|
+
# - DatabricksAdapter (databricks-sql-connector, databricks-sdk)
|
|
32
|
+
# - BigQueryAdapter (google-cloud-bigquery, google-cloud-storage)
|
|
33
|
+
# - SnowflakeAdapter (snowflake-connector-python)
|
|
34
|
+
# - RedshiftAdapter (redshift-connector, boto3)
|
|
35
|
+
# - ClickHouseAdapter (clickhouse-driver or chdb)
|
|
36
|
+
# - TrinoAdapter (trino)
|
|
37
|
+
# - AthenaAdapter (pyathena, boto3)
|
|
38
|
+
# - SparkAdapter (pyspark)
|
|
39
|
+
# - PySparkSQLAdapter (pyspark)
|
|
40
|
+
# - FireboltAdapter (firebolt-sdk)
|
|
41
|
+
# - InfluxDBAdapter (influxdb3-python)
|
|
42
|
+
# - PrestoAdapter (presto-python-client)
|
|
43
|
+
# - AzureSynapseAdapter (pyodbc, azure-identity)
|
|
44
|
+
# - FabricWarehouseAdapter (pyodbc, azure-identity)
|
|
45
|
+
#
|
|
46
|
+
# Adapters loaded eagerly (light dependencies or core):
|
|
47
|
+
# - DuckDBAdapter (duckdb - core dependency, always available)
|
|
48
|
+
# - MotherDuckAdapter (duckdb - shares core dependency)
|
|
49
|
+
# - SQLiteAdapter (stdlib sqlite3)
|
|
50
|
+
# - DataFusionAdapter (datafusion - lightweight)
|
|
51
|
+
# - PolarsAdapter (polars - lightweight)
|
|
52
|
+
# - PostgreSQLAdapter (psycopg2 - core dependency)
|
|
53
|
+
# - TimescaleDBAdapter (psycopg2 - shares core dependency)
|
|
54
|
+
# ============================================================================
|
|
33
55
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
56
|
+
# Cache for lazily loaded adapters and constants
|
|
57
|
+
_lazy_adapter_cache: dict[str, Optional[Type[PlatformAdapter]]] = {}
|
|
58
|
+
_lazy_constant_cache: dict[str, bool] = {}
|
|
59
|
+
|
|
60
|
+
# Mapping of lazy adapter names to their module paths
|
|
61
|
+
_LAZY_ADAPTERS = {
|
|
62
|
+
# Cloud SQL platforms with heavy SDK dependencies
|
|
63
|
+
"DatabricksAdapter": ".databricks",
|
|
64
|
+
"BigQueryAdapter": ".bigquery",
|
|
65
|
+
"SnowflakeAdapter": ".snowflake",
|
|
66
|
+
"RedshiftAdapter": ".redshift",
|
|
67
|
+
"ClickHouseAdapter": ".clickhouse",
|
|
68
|
+
"ClickHouseCloudAdapter": ".clickhouse_cloud",
|
|
69
|
+
"TrinoAdapter": ".trino",
|
|
70
|
+
"AthenaAdapter": ".athena",
|
|
71
|
+
"SparkAdapter": ".spark",
|
|
72
|
+
"PySparkSQLAdapter": ".pyspark",
|
|
73
|
+
"FireboltAdapter": ".firebolt",
|
|
74
|
+
"InfluxDBAdapter": ".influxdb",
|
|
75
|
+
"PrestoAdapter": ".presto",
|
|
76
|
+
"AzureSynapseAdapter": ".azure_synapse",
|
|
77
|
+
"FabricWarehouseAdapter": ".fabric_warehouse",
|
|
78
|
+
"MicrosoftFabricAdapter": ".fabric_warehouse", # Backward compatibility alias
|
|
79
|
+
"QuantonAdapter": ".onehouse",
|
|
80
|
+
# DataFrame adapters (have their own lazy loading but need module-level deferral)
|
|
81
|
+
"PolarsDataFrameAdapter": ".dataframe",
|
|
82
|
+
"PandasDataFrameAdapter": ".dataframe",
|
|
83
|
+
"ModinDataFrameAdapter": ".dataframe",
|
|
84
|
+
"CuDFDataFrameAdapter": ".dataframe",
|
|
85
|
+
"DaskDataFrameAdapter": ".dataframe",
|
|
86
|
+
"DataFusionDataFrameAdapter": ".dataframe",
|
|
87
|
+
"PySparkDataFrameAdapter": ".dataframe",
|
|
88
|
+
"DataFramePlatformChecker": ".dataframe",
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
# Mapping of lazy constants to their module paths and default values
|
|
92
|
+
_LAZY_CONSTANTS = {
|
|
93
|
+
"POLARS_AVAILABLE": (".dataframe", False),
|
|
94
|
+
"PANDAS_AVAILABLE": (".dataframe", False),
|
|
95
|
+
"MODIN_AVAILABLE": (".dataframe", False),
|
|
96
|
+
"CUDF_AVAILABLE": (".dataframe", False),
|
|
97
|
+
"DASK_AVAILABLE": (".dataframe", False),
|
|
98
|
+
"DATAFUSION_DF_AVAILABLE": (".dataframe", False),
|
|
99
|
+
"PYSPARK_AVAILABLE": (".dataframe", False),
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
# Cache for clickhouse module (special case - needs module reference)
|
|
103
|
+
_clickhouse_module_cache = None
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def _load_lazy_adapter(name: str) -> Optional[Type[PlatformAdapter]]:
|
|
107
|
+
"""Load a lazily-imported adapter class.
|
|
38
108
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
except ImportError:
|
|
42
|
-
PolarsAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
109
|
+
Args:
|
|
110
|
+
name: Adapter class name (e.g., 'DatabricksAdapter')
|
|
43
111
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
112
|
+
Returns:
|
|
113
|
+
Adapter class if available, None if import fails
|
|
114
|
+
"""
|
|
115
|
+
if name in _lazy_adapter_cache:
|
|
116
|
+
return _lazy_adapter_cache[name]
|
|
49
117
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
_clickhouse_module = None # type: ignore[assignment]
|
|
54
|
-
clickhouse = None # type: ignore[assignment]
|
|
55
|
-
ClickHouseAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
118
|
+
module_path = _LAZY_ADAPTERS.get(name)
|
|
119
|
+
if module_path is None:
|
|
120
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
56
121
|
|
|
57
|
-
try:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
122
|
+
try:
|
|
123
|
+
module = importlib.import_module(module_path, __package__)
|
|
124
|
+
adapter_class = getattr(module, name, None)
|
|
125
|
+
_lazy_adapter_cache[name] = adapter_class
|
|
126
|
+
return adapter_class
|
|
127
|
+
except ImportError:
|
|
128
|
+
_lazy_adapter_cache[name] = None
|
|
129
|
+
return None
|
|
61
130
|
|
|
62
|
-
try:
|
|
63
|
-
from .bigquery import BigQueryAdapter
|
|
64
|
-
except ImportError:
|
|
65
|
-
BigQueryAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
66
131
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
except ImportError:
|
|
70
|
-
RedshiftAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
132
|
+
def _load_lazy_constant(name: str) -> bool:
|
|
133
|
+
"""Load a lazily-imported availability constant.
|
|
71
134
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
except ImportError:
|
|
75
|
-
SnowflakeAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
135
|
+
Args:
|
|
136
|
+
name: Constant name (e.g., 'POLARS_AVAILABLE')
|
|
76
137
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
138
|
+
Returns:
|
|
139
|
+
Constant value (True/False), defaults to False on import failure
|
|
140
|
+
"""
|
|
141
|
+
if name in _lazy_constant_cache:
|
|
142
|
+
return _lazy_constant_cache[name]
|
|
81
143
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
AthenaAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
144
|
+
module_path, default = _LAZY_CONSTANTS.get(name, (None, False))
|
|
145
|
+
if module_path is None:
|
|
146
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
86
147
|
|
|
87
|
-
try:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
148
|
+
try:
|
|
149
|
+
module = importlib.import_module(module_path, __package__)
|
|
150
|
+
value = getattr(module, name, default)
|
|
151
|
+
_lazy_constant_cache[name] = value
|
|
152
|
+
return value
|
|
153
|
+
except ImportError:
|
|
154
|
+
_lazy_constant_cache[name] = default
|
|
155
|
+
return default
|
|
91
156
|
|
|
92
|
-
try:
|
|
93
|
-
from .pyspark import PySparkSQLAdapter
|
|
94
|
-
except ImportError:
|
|
95
|
-
PySparkSQLAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
96
157
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
except ImportError:
|
|
100
|
-
FireboltAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
158
|
+
def __getattr__(name: str):
|
|
159
|
+
"""Lazy load cloud platform adapters and DataFrame components on first access.
|
|
101
160
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
161
|
+
This function is called when an attribute is not found in the module's namespace.
|
|
162
|
+
It enables deferred loading of heavy cloud SDK dependencies until they're actually
|
|
163
|
+
needed, dramatically reducing test collection time.
|
|
164
|
+
"""
|
|
165
|
+
global _clickhouse_module_cache
|
|
106
166
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
PrestoAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
167
|
+
# Handle adapter classes
|
|
168
|
+
if name in _LAZY_ADAPTERS:
|
|
169
|
+
return _load_lazy_adapter(name)
|
|
111
170
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
PostgreSQLAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
171
|
+
# Handle availability constants
|
|
172
|
+
if name in _LAZY_CONSTANTS:
|
|
173
|
+
return _load_lazy_constant(name)
|
|
116
174
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
175
|
+
# Special case: clickhouse module reference (for legacy patches/tests)
|
|
176
|
+
if name == "clickhouse":
|
|
177
|
+
if _clickhouse_module_cache is None:
|
|
178
|
+
try:
|
|
179
|
+
_clickhouse_module_cache = importlib.import_module(".clickhouse", __package__)
|
|
180
|
+
except ImportError:
|
|
181
|
+
pass # Keep as None
|
|
182
|
+
return _clickhouse_module_cache
|
|
121
183
|
|
|
122
|
-
|
|
123
|
-
from .azure_synapse import AzureSynapseAdapter
|
|
124
|
-
except ImportError:
|
|
125
|
-
AzureSynapseAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
184
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
126
185
|
|
|
127
|
-
try:
|
|
128
|
-
from .fabric_warehouse import FabricWarehouseAdapter, MicrosoftFabricAdapter
|
|
129
|
-
except ImportError:
|
|
130
|
-
FabricWarehouseAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
131
|
-
MicrosoftFabricAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
132
186
|
|
|
133
|
-
#
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
POLARS_AVAILABLE = False
|
|
139
|
-
PolarsDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
187
|
+
# ============================================================================
|
|
188
|
+
# Eagerly Loaded Adapters (light dependencies or core)
|
|
189
|
+
# ============================================================================
|
|
190
|
+
# These adapters have lightweight dependencies that don't impact startup time
|
|
191
|
+
# significantly, so they're loaded eagerly for simpler access patterns.
|
|
140
192
|
|
|
193
|
+
# Import local platform adapters (core/light dependencies)
|
|
141
194
|
try:
|
|
142
|
-
from .
|
|
195
|
+
from .duckdb import DuckDBAdapter
|
|
143
196
|
except ImportError:
|
|
144
|
-
|
|
145
|
-
PandasDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
197
|
+
DuckDBAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
146
198
|
|
|
147
199
|
try:
|
|
148
|
-
from .
|
|
200
|
+
from .motherduck import MotherDuckAdapter
|
|
149
201
|
except ImportError:
|
|
150
|
-
|
|
151
|
-
ModinDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
202
|
+
MotherDuckAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
152
203
|
|
|
153
204
|
try:
|
|
154
|
-
from .
|
|
205
|
+
from .sqlite import SQLiteAdapter
|
|
155
206
|
except ImportError:
|
|
156
|
-
|
|
157
|
-
CuDFDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
207
|
+
SQLiteAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
158
208
|
|
|
159
209
|
try:
|
|
160
|
-
from .
|
|
210
|
+
from .datafusion import DataFusionAdapter
|
|
161
211
|
except ImportError:
|
|
162
|
-
|
|
163
|
-
DaskDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
212
|
+
DataFusionAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
164
213
|
|
|
165
214
|
try:
|
|
166
|
-
from .
|
|
215
|
+
from .polars_platform import PolarsAdapter
|
|
167
216
|
except ImportError:
|
|
168
|
-
|
|
169
|
-
DataFusionDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
217
|
+
PolarsAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
170
218
|
|
|
171
|
-
# Import platform checker for DataFrame platform status
|
|
172
219
|
try:
|
|
173
|
-
from .
|
|
220
|
+
from .postgresql import PostgreSQLAdapter
|
|
174
221
|
except ImportError:
|
|
175
|
-
|
|
222
|
+
PostgreSQLAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
176
223
|
|
|
177
224
|
try:
|
|
178
|
-
from .
|
|
225
|
+
from .timescaledb import TimescaleDBAdapter
|
|
179
226
|
except ImportError:
|
|
180
|
-
|
|
181
|
-
PySparkDataFrameAdapter = None # type: ignore[assignment,misc]
|
|
227
|
+
TimescaleDBAdapter: Optional[Type[PlatformAdapter]] = None # type: ignore[assignment,misc]
|
|
182
228
|
|
|
183
229
|
__all__ = [
|
|
184
230
|
"PlatformAdapter",
|
|
@@ -189,6 +235,7 @@ __all__ = [
|
|
|
189
235
|
"DataFusionAdapter",
|
|
190
236
|
"PolarsAdapter",
|
|
191
237
|
"ClickHouseAdapter",
|
|
238
|
+
"ClickHouseCloudAdapter",
|
|
192
239
|
"DatabricksAdapter",
|
|
193
240
|
"BigQueryAdapter",
|
|
194
241
|
"RedshiftAdapter",
|
|
@@ -204,6 +251,7 @@ __all__ = [
|
|
|
204
251
|
"AzureSynapseAdapter",
|
|
205
252
|
"FabricWarehouseAdapter",
|
|
206
253
|
"MicrosoftFabricAdapter", # Backward compatibility alias
|
|
254
|
+
"QuantonAdapter",
|
|
207
255
|
# DataFrame adapters
|
|
208
256
|
"PolarsDataFrameAdapter",
|
|
209
257
|
"PandasDataFrameAdapter",
|
|
@@ -387,23 +435,26 @@ def get_dataframe_adapter(platform_name: str, **config):
|
|
|
387
435
|
ValueError: If platform is not a recognized DataFrame platform
|
|
388
436
|
ImportError: If required dependencies are not installed
|
|
389
437
|
"""
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
"
|
|
393
|
-
"
|
|
394
|
-
"
|
|
395
|
-
"
|
|
396
|
-
"
|
|
397
|
-
"
|
|
438
|
+
# Mapping uses lazy-loaded adapter names (resolved via __getattr__)
|
|
439
|
+
dataframe_adapter_names = {
|
|
440
|
+
"polars-df": "PolarsDataFrameAdapter",
|
|
441
|
+
"pandas-df": "PandasDataFrameAdapter",
|
|
442
|
+
"modin-df": "ModinDataFrameAdapter",
|
|
443
|
+
"cudf-df": "CuDFDataFrameAdapter",
|
|
444
|
+
"dask-df": "DaskDataFrameAdapter",
|
|
445
|
+
"datafusion-df": "DataFusionDataFrameAdapter",
|
|
446
|
+
"pyspark-df": "PySparkDataFrameAdapter",
|
|
398
447
|
}
|
|
399
448
|
|
|
400
449
|
platform_lower = platform_name.lower()
|
|
401
450
|
|
|
402
|
-
if platform_lower not in
|
|
403
|
-
available = ", ".join(sorted(
|
|
451
|
+
if platform_lower not in dataframe_adapter_names:
|
|
452
|
+
available = ", ".join(sorted(dataframe_adapter_names.keys()))
|
|
404
453
|
raise ValueError(f"Unknown DataFrame platform: {platform_name}. Available: {available}")
|
|
405
454
|
|
|
406
|
-
|
|
455
|
+
# Trigger lazy load via __getattr__
|
|
456
|
+
adapter_name = dataframe_adapter_names[platform_lower]
|
|
457
|
+
adapter_class = _load_lazy_adapter(adapter_name)
|
|
407
458
|
|
|
408
459
|
if adapter_class is None:
|
|
409
460
|
requirements = get_dataframe_requirements(platform_lower)
|
|
@@ -420,16 +471,18 @@ def list_available_dataframe_platforms() -> dict[str, bool]:
|
|
|
420
471
|
Returns:
|
|
421
472
|
Dictionary mapping platform name to availability boolean
|
|
422
473
|
"""
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
"
|
|
426
|
-
"
|
|
427
|
-
"
|
|
428
|
-
"
|
|
429
|
-
"
|
|
430
|
-
"
|
|
474
|
+
# Mapping uses lazy-loaded constant names (resolved via __getattr__)
|
|
475
|
+
availability_constants = {
|
|
476
|
+
"polars-df": "POLARS_AVAILABLE",
|
|
477
|
+
"pandas-df": "PANDAS_AVAILABLE",
|
|
478
|
+
"modin-df": "MODIN_AVAILABLE",
|
|
479
|
+
"cudf-df": "CUDF_AVAILABLE",
|
|
480
|
+
"dask-df": "DASK_AVAILABLE",
|
|
481
|
+
"datafusion-df": "DATAFUSION_DF_AVAILABLE",
|
|
482
|
+
"pyspark-df": "PYSPARK_AVAILABLE",
|
|
431
483
|
}
|
|
432
|
-
|
|
484
|
+
# Trigger lazy load via __getattr__ for each constant
|
|
485
|
+
return {platform: _load_lazy_constant(const_name) for platform, const_name in availability_constants.items()}
|
|
433
486
|
|
|
434
487
|
|
|
435
488
|
def get_dataframe_requirements(platform_name: str) -> str:
|
|
@@ -442,13 +495,17 @@ def get_dataframe_requirements(platform_name: str) -> str:
|
|
|
442
495
|
Installation command string
|
|
443
496
|
"""
|
|
444
497
|
requirements = {
|
|
445
|
-
"polars-df": "
|
|
446
|
-
"pandas-df":
|
|
447
|
-
|
|
498
|
+
"polars-df": "pip install polars (core dependency - should be installed)",
|
|
499
|
+
"pandas-df": (
|
|
500
|
+
"pip install pandas # standalone\n uv add benchbox --extra dataframe-pandas # inside a project"
|
|
501
|
+
),
|
|
502
|
+
"modin-df": "pip install modin[ray] (or modin[dask])",
|
|
448
503
|
"cudf-df": "pip install cudf-cu12 (requires NVIDIA GPU with CUDA)",
|
|
449
|
-
"dask-df": "
|
|
450
|
-
"datafusion-df": "
|
|
451
|
-
"pyspark-df":
|
|
504
|
+
"dask-df": "pip install dask[distributed]",
|
|
505
|
+
"datafusion-df": "pip install datafusion",
|
|
506
|
+
"pyspark-df": (
|
|
507
|
+
"pip install pyspark # standalone\n uv add benchbox --extra dataframe-pyspark # inside a project"
|
|
508
|
+
),
|
|
452
509
|
}
|
|
453
510
|
|
|
454
511
|
return requirements.get(platform_name.lower(), "Unknown DataFrame platform")
|
|
@@ -475,514 +532,575 @@ def is_dataframe_platform(platform_name: str) -> bool:
|
|
|
475
532
|
|
|
476
533
|
|
|
477
534
|
# ============================================================================
|
|
478
|
-
# Platform Hook Registration
|
|
535
|
+
# Platform Hook Registration (Deferred)
|
|
479
536
|
# ============================================================================
|
|
480
|
-
#
|
|
481
|
-
#
|
|
482
|
-
#
|
|
483
|
-
#
|
|
484
|
-
# benchbox.core.platform_registry, which can trigger re-entrant imports of
|
|
485
|
-
# benchbox.platforms. By placing this registration at the very bottom, we
|
|
486
|
-
# ensure that all platform imports (clickhouse, databricks, etc.) have
|
|
487
|
-
# completed before we import PlatformHookRegistry.
|
|
537
|
+
# Platform hooks are registered lazily to avoid triggering SDK imports during
|
|
538
|
+
# module load. The option specs are registered unconditionally (they're just
|
|
539
|
+
# metadata), but config builders are wrapped in lazy loaders that only import
|
|
540
|
+
# the adapter module when the builder is actually called.
|
|
488
541
|
#
|
|
489
|
-
#
|
|
490
|
-
#
|
|
491
|
-
#
|
|
492
|
-
# 3. Line 14: imports platform_registry → triggers platforms.base import
|
|
493
|
-
# 4. Lines 32-40: tries to import clickhouse module
|
|
494
|
-
# 5. clickhouse/__init__.py:27 imports platform_hooks
|
|
495
|
-
# 6. platform_hooks imports platform_registry
|
|
496
|
-
# 7. platform_registry tries to re-import platforms
|
|
497
|
-
# 8. ERROR: platforms is partially initialized (stuck at clickhouse import)
|
|
498
|
-
#
|
|
499
|
-
# With this placement at the bottom, all imports complete before registration.
|
|
542
|
+
# This is critical for test performance - importing adapters like Databricks
|
|
543
|
+
# or Snowflake triggers heavy SDK imports (300+ seconds). By deferring these
|
|
544
|
+
# imports, pytest collection time is dramatically reduced.
|
|
500
545
|
# ============================================================================
|
|
501
546
|
|
|
502
|
-
|
|
503
|
-
|
|
547
|
+
|
|
548
|
+
def _make_lazy_config_builder(module_path: str, builder_name: str):
|
|
549
|
+
"""Create a lazy config builder that defers module import until called.
|
|
550
|
+
|
|
551
|
+
Args:
|
|
552
|
+
module_path: Relative module path (e.g., '.databricks')
|
|
553
|
+
builder_name: Name of the config builder function in the module
|
|
554
|
+
|
|
555
|
+
Returns:
|
|
556
|
+
A wrapper function that lazily imports and calls the real builder
|
|
557
|
+
"""
|
|
558
|
+
from typing import Any
|
|
559
|
+
|
|
560
|
+
def lazy_builder(
|
|
561
|
+
platform: str,
|
|
562
|
+
options: dict[str, Any],
|
|
563
|
+
overrides: dict[str, Any],
|
|
564
|
+
info: Any,
|
|
565
|
+
):
|
|
566
|
+
module = importlib.import_module(module_path, __package__)
|
|
567
|
+
real_builder = getattr(module, builder_name)
|
|
568
|
+
return real_builder(platform, options, overrides, info)
|
|
569
|
+
|
|
570
|
+
return lazy_builder
|
|
571
|
+
|
|
572
|
+
|
|
504
573
|
try:
|
|
505
574
|
from benchbox.cli.platform_hooks import PlatformHookRegistry, PlatformOptionSpec, parse_bool
|
|
506
575
|
|
|
507
|
-
#
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
# Register Databricks platform options
|
|
514
|
-
PlatformHookRegistry.register_option_specs(
|
|
515
|
-
"databricks",
|
|
516
|
-
PlatformOptionSpec(
|
|
517
|
-
name="uc_catalog",
|
|
518
|
-
help="Unity Catalog catalog name for staging data",
|
|
519
|
-
),
|
|
520
|
-
PlatformOptionSpec(
|
|
521
|
-
name="uc_schema",
|
|
522
|
-
help="Unity Catalog schema name for staging data",
|
|
523
|
-
),
|
|
524
|
-
PlatformOptionSpec(
|
|
525
|
-
name="uc_volume",
|
|
526
|
-
help="Unity Catalog volume name for staging data",
|
|
527
|
-
),
|
|
528
|
-
PlatformOptionSpec(
|
|
529
|
-
name="staging_root",
|
|
530
|
-
help="Cloud storage path for staging data (e.g., dbfs:/Volumes/..., s3://..., abfss://...)",
|
|
531
|
-
),
|
|
532
|
-
)
|
|
576
|
+
# ========================================================================
|
|
577
|
+
# Cloud Platform Hooks (Lazy Config Builders)
|
|
578
|
+
# ========================================================================
|
|
579
|
+
# These platforms use lazy config builders to avoid importing heavy SDKs
|
|
580
|
+
# at module load time. Option specs are registered unconditionally.
|
|
533
581
|
|
|
534
|
-
#
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
"
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
),
|
|
555
|
-
)
|
|
582
|
+
# Databricks
|
|
583
|
+
PlatformHookRegistry.register_config_builder(
|
|
584
|
+
"databricks", _make_lazy_config_builder(".databricks", "_build_databricks_config")
|
|
585
|
+
)
|
|
586
|
+
PlatformHookRegistry.register_option_specs(
|
|
587
|
+
"databricks",
|
|
588
|
+
PlatformOptionSpec(
|
|
589
|
+
name="uc_catalog",
|
|
590
|
+
help="Unity Catalog catalog name for staging data",
|
|
591
|
+
),
|
|
592
|
+
PlatformOptionSpec(
|
|
593
|
+
name="uc_schema",
|
|
594
|
+
help="Unity Catalog schema name for staging data",
|
|
595
|
+
),
|
|
596
|
+
PlatformOptionSpec(
|
|
597
|
+
name="uc_volume",
|
|
598
|
+
help="Unity Catalog volume name for staging data",
|
|
599
|
+
),
|
|
600
|
+
PlatformOptionSpec(
|
|
601
|
+
name="staging_root",
|
|
602
|
+
help="Cloud storage path for staging data (e.g., dbfs:/Volumes/..., s3://..., abfss://...)",
|
|
603
|
+
),
|
|
604
|
+
)
|
|
556
605
|
|
|
557
|
-
#
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
"
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
),
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
help="Table format for creating tables (memory, hive, iceberg, delta)",
|
|
577
|
-
default="memory",
|
|
578
|
-
),
|
|
579
|
-
PlatformOptionSpec(
|
|
580
|
-
name="source_catalog",
|
|
581
|
-
help="Source catalog for external data loading (e.g., hive connector)",
|
|
582
|
-
),
|
|
583
|
-
)
|
|
606
|
+
# BigQuery
|
|
607
|
+
PlatformHookRegistry.register_config_builder(
|
|
608
|
+
"bigquery", _make_lazy_config_builder(".bigquery", "_build_bigquery_config")
|
|
609
|
+
)
|
|
610
|
+
PlatformHookRegistry.register_option_specs(
|
|
611
|
+
"bigquery",
|
|
612
|
+
PlatformOptionSpec(
|
|
613
|
+
name="staging_root",
|
|
614
|
+
help="GCS path for staging data (e.g., gs://bucket/path)",
|
|
615
|
+
),
|
|
616
|
+
PlatformOptionSpec(
|
|
617
|
+
name="storage_bucket",
|
|
618
|
+
help="GCS bucket name for data staging (alternative to staging_root)",
|
|
619
|
+
),
|
|
620
|
+
PlatformOptionSpec(
|
|
621
|
+
name="storage_prefix",
|
|
622
|
+
help="GCS path prefix within bucket for data staging",
|
|
623
|
+
),
|
|
624
|
+
)
|
|
584
625
|
|
|
585
|
-
#
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
PlatformOptionSpec(
|
|
608
|
-
name="client_secret",
|
|
609
|
-
help="Firebolt Cloud OAuth client secret",
|
|
610
|
-
),
|
|
611
|
-
PlatformOptionSpec(
|
|
612
|
-
name="account_name",
|
|
613
|
-
help="Firebolt Cloud account name",
|
|
614
|
-
),
|
|
615
|
-
PlatformOptionSpec(
|
|
616
|
-
name="engine_name",
|
|
617
|
-
help="Firebolt Cloud engine name",
|
|
618
|
-
),
|
|
619
|
-
PlatformOptionSpec(
|
|
620
|
-
name="api_endpoint",
|
|
621
|
-
help="Firebolt Cloud API endpoint",
|
|
622
|
-
default="api.app.firebolt.io",
|
|
623
|
-
),
|
|
624
|
-
)
|
|
626
|
+
# Trino
|
|
627
|
+
PlatformHookRegistry.register_config_builder("trino", _make_lazy_config_builder(".trino", "_build_trino_config"))
|
|
628
|
+
PlatformHookRegistry.register_option_specs(
|
|
629
|
+
"trino",
|
|
630
|
+
PlatformOptionSpec(
|
|
631
|
+
name="catalog",
|
|
632
|
+
help="Trino catalog to use (e.g., hive, iceberg, memory). Auto-discovered if not specified.",
|
|
633
|
+
),
|
|
634
|
+
PlatformOptionSpec(
|
|
635
|
+
name="staging_root",
|
|
636
|
+
help="Cloud storage path for staging data (e.g., s3://..., gs://..., abfss://...)",
|
|
637
|
+
),
|
|
638
|
+
PlatformOptionSpec(
|
|
639
|
+
name="table_format",
|
|
640
|
+
help="Table format for creating tables (memory, hive, iceberg, delta)",
|
|
641
|
+
default="memory",
|
|
642
|
+
),
|
|
643
|
+
PlatformOptionSpec(
|
|
644
|
+
name="source_catalog",
|
|
645
|
+
help="Source catalog for external data loading (e.g., hive connector)",
|
|
646
|
+
),
|
|
647
|
+
)
|
|
625
648
|
|
|
626
|
-
#
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
"
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
),
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
)
|
|
649
|
+
# Firebolt
|
|
650
|
+
PlatformHookRegistry.register_config_builder(
|
|
651
|
+
"firebolt", _make_lazy_config_builder(".firebolt", "_build_firebolt_config")
|
|
652
|
+
)
|
|
653
|
+
PlatformHookRegistry.register_option_specs(
|
|
654
|
+
"firebolt",
|
|
655
|
+
PlatformOptionSpec(
|
|
656
|
+
name="firebolt_mode",
|
|
657
|
+
help="Explicit Firebolt mode: 'core' for local Docker, 'cloud' for managed Firebolt",
|
|
658
|
+
),
|
|
659
|
+
PlatformOptionSpec(
|
|
660
|
+
name="url",
|
|
661
|
+
help="Firebolt Core endpoint URL (default: http://localhost:3473)",
|
|
662
|
+
default="http://localhost:3473",
|
|
663
|
+
),
|
|
664
|
+
PlatformOptionSpec(
|
|
665
|
+
name="client_id",
|
|
666
|
+
help="Firebolt Cloud OAuth client ID",
|
|
667
|
+
),
|
|
668
|
+
PlatformOptionSpec(
|
|
669
|
+
name="client_secret",
|
|
670
|
+
help="Firebolt Cloud OAuth client secret",
|
|
671
|
+
),
|
|
672
|
+
PlatformOptionSpec(
|
|
673
|
+
name="account_name",
|
|
674
|
+
help="Firebolt Cloud account name",
|
|
675
|
+
),
|
|
676
|
+
PlatformOptionSpec(
|
|
677
|
+
name="engine_name",
|
|
678
|
+
help="Firebolt Cloud engine name",
|
|
679
|
+
),
|
|
680
|
+
PlatformOptionSpec(
|
|
681
|
+
name="api_endpoint",
|
|
682
|
+
help="Firebolt Cloud API endpoint",
|
|
683
|
+
default="api.app.firebolt.io",
|
|
684
|
+
),
|
|
685
|
+
)
|
|
686
|
+
|
|
687
|
+
# Presto
|
|
688
|
+
PlatformHookRegistry.register_config_builder("presto", _make_lazy_config_builder(".presto", "_build_presto_config"))
|
|
689
|
+
PlatformHookRegistry.register_option_specs(
|
|
690
|
+
"presto",
|
|
691
|
+
PlatformOptionSpec(
|
|
692
|
+
name="catalog",
|
|
693
|
+
help="Presto catalog to use (e.g., hive, memory). Auto-discovered if not specified.",
|
|
694
|
+
),
|
|
695
|
+
PlatformOptionSpec(
|
|
696
|
+
name="staging_root",
|
|
697
|
+
help="Cloud storage path for staging data (e.g., s3://..., gs://...)",
|
|
698
|
+
),
|
|
699
|
+
PlatformOptionSpec(
|
|
700
|
+
name="table_format",
|
|
701
|
+
help="Table format for creating tables (memory, hive)",
|
|
702
|
+
default="memory",
|
|
703
|
+
),
|
|
704
|
+
PlatformOptionSpec(
|
|
705
|
+
name="source_catalog",
|
|
706
|
+
help="Source catalog for external data loading (e.g., hive connector)",
|
|
707
|
+
),
|
|
708
|
+
)
|
|
653
709
|
|
|
654
|
-
#
|
|
710
|
+
# ========================================================================
|
|
711
|
+
# Eagerly-Loaded Platform Hooks (PostgreSQL, TimescaleDB)
|
|
712
|
+
# ========================================================================
|
|
713
|
+
# These platforms have lightweight dependencies that are already loaded
|
|
714
|
+
# eagerly, so we can use direct imports for their config builders.
|
|
715
|
+
|
|
716
|
+
# PostgreSQL (eagerly loaded - uses psycopg2 which is a core dependency)
|
|
655
717
|
if PostgreSQLAdapter is not None:
|
|
656
718
|
from benchbox.platforms.postgresql import _build_postgresql_config
|
|
657
719
|
|
|
658
720
|
PlatformHookRegistry.register_config_builder("postgresql", _build_postgresql_config)
|
|
659
721
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
)
|
|
722
|
+
PlatformHookRegistry.register_option_specs(
|
|
723
|
+
"postgresql",
|
|
724
|
+
PlatformOptionSpec(
|
|
725
|
+
name="host",
|
|
726
|
+
help="PostgreSQL server hostname",
|
|
727
|
+
default="localhost",
|
|
728
|
+
),
|
|
729
|
+
PlatformOptionSpec(
|
|
730
|
+
name="port",
|
|
731
|
+
help="PostgreSQL server port",
|
|
732
|
+
default="5432",
|
|
733
|
+
),
|
|
734
|
+
PlatformOptionSpec(
|
|
735
|
+
name="database",
|
|
736
|
+
help="PostgreSQL database name (auto-generated if not specified)",
|
|
737
|
+
),
|
|
738
|
+
PlatformOptionSpec(
|
|
739
|
+
name="username",
|
|
740
|
+
help="PostgreSQL username",
|
|
741
|
+
default="postgres",
|
|
742
|
+
),
|
|
743
|
+
PlatformOptionSpec(
|
|
744
|
+
name="password",
|
|
745
|
+
help="PostgreSQL password",
|
|
746
|
+
),
|
|
747
|
+
PlatformOptionSpec(
|
|
748
|
+
name="schema",
|
|
749
|
+
help="PostgreSQL schema name",
|
|
750
|
+
default="public",
|
|
751
|
+
),
|
|
752
|
+
PlatformOptionSpec(
|
|
753
|
+
name="work_mem",
|
|
754
|
+
help="PostgreSQL work_mem setting for queries",
|
|
755
|
+
default="256MB",
|
|
756
|
+
),
|
|
757
|
+
PlatformOptionSpec(
|
|
758
|
+
name="enable_timescale",
|
|
759
|
+
help="Enable TimescaleDB extensions if available",
|
|
760
|
+
default="false",
|
|
761
|
+
),
|
|
762
|
+
)
|
|
702
763
|
|
|
703
|
-
#
|
|
764
|
+
# TimescaleDB (eagerly loaded - shares psycopg2 with PostgreSQL)
|
|
704
765
|
if TimescaleDBAdapter is not None:
|
|
705
766
|
from benchbox.platforms.timescaledb import _build_timescaledb_config
|
|
706
767
|
|
|
707
768
|
PlatformHookRegistry.register_config_builder("timescaledb", _build_timescaledb_config)
|
|
708
769
|
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
)
|
|
770
|
+
PlatformHookRegistry.register_option_specs(
|
|
771
|
+
"timescaledb",
|
|
772
|
+
PlatformOptionSpec(
|
|
773
|
+
name="host",
|
|
774
|
+
help="TimescaleDB server hostname",
|
|
775
|
+
default="localhost",
|
|
776
|
+
),
|
|
777
|
+
PlatformOptionSpec(
|
|
778
|
+
name="port",
|
|
779
|
+
help="TimescaleDB server port",
|
|
780
|
+
default="5432",
|
|
781
|
+
),
|
|
782
|
+
PlatformOptionSpec(
|
|
783
|
+
name="database",
|
|
784
|
+
help="TimescaleDB database name (auto-generated if not specified)",
|
|
785
|
+
),
|
|
786
|
+
PlatformOptionSpec(
|
|
787
|
+
name="username",
|
|
788
|
+
help="TimescaleDB username",
|
|
789
|
+
default="postgres",
|
|
790
|
+
),
|
|
791
|
+
PlatformOptionSpec(
|
|
792
|
+
name="password",
|
|
793
|
+
help="TimescaleDB password",
|
|
794
|
+
),
|
|
795
|
+
PlatformOptionSpec(
|
|
796
|
+
name="schema",
|
|
797
|
+
help="TimescaleDB schema name",
|
|
798
|
+
default="public",
|
|
799
|
+
),
|
|
800
|
+
PlatformOptionSpec(
|
|
801
|
+
name="chunk_interval",
|
|
802
|
+
help="Chunk time interval for hypertables (e.g., '1 day', '1 week')",
|
|
803
|
+
default="1 day",
|
|
804
|
+
),
|
|
805
|
+
PlatformOptionSpec(
|
|
806
|
+
name="compression_enabled",
|
|
807
|
+
help="Enable compression on hypertables",
|
|
808
|
+
default="false",
|
|
809
|
+
),
|
|
810
|
+
PlatformOptionSpec(
|
|
811
|
+
name="compression_after",
|
|
812
|
+
help="Compress chunks older than this interval (e.g., '7 days')",
|
|
813
|
+
default="7 days",
|
|
814
|
+
),
|
|
815
|
+
)
|
|
756
816
|
|
|
757
|
-
#
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
PlatformHookRegistry.register_config_builder("synapse", _build_synapse_config)
|
|
762
|
-
|
|
763
|
-
# Register Azure Synapse platform options
|
|
764
|
-
PlatformHookRegistry.register_option_specs(
|
|
765
|
-
"synapse",
|
|
766
|
-
PlatformOptionSpec(
|
|
767
|
-
name="server",
|
|
768
|
-
help="Azure Synapse server endpoint (e.g., myworkspace.sql.azuresynapse.net)",
|
|
769
|
-
),
|
|
770
|
-
PlatformOptionSpec(
|
|
771
|
-
name="database",
|
|
772
|
-
help="Azure Synapse database name (auto-generated if not specified)",
|
|
773
|
-
),
|
|
774
|
-
PlatformOptionSpec(
|
|
775
|
-
name="username",
|
|
776
|
-
help="Azure Synapse username",
|
|
777
|
-
),
|
|
778
|
-
PlatformOptionSpec(
|
|
779
|
-
name="password",
|
|
780
|
-
help="Azure Synapse password",
|
|
781
|
-
),
|
|
782
|
-
PlatformOptionSpec(
|
|
783
|
-
name="auth_method",
|
|
784
|
-
help="Authentication method: sql, aad_password, or aad_msi",
|
|
785
|
-
default="sql",
|
|
786
|
-
),
|
|
787
|
-
PlatformOptionSpec(
|
|
788
|
-
name="storage_account",
|
|
789
|
-
help="Azure storage account for data staging",
|
|
790
|
-
),
|
|
791
|
-
PlatformOptionSpec(
|
|
792
|
-
name="container",
|
|
793
|
-
help="Azure blob container name",
|
|
794
|
-
),
|
|
795
|
-
PlatformOptionSpec(
|
|
796
|
-
name="storage_sas_token",
|
|
797
|
-
help="SAS token for Azure storage access",
|
|
798
|
-
),
|
|
799
|
-
PlatformOptionSpec(
|
|
800
|
-
name="resource_class",
|
|
801
|
-
help="Workload resource class (e.g., staticrc20, staticrc30)",
|
|
802
|
-
default="staticrc20",
|
|
803
|
-
),
|
|
804
|
-
)
|
|
817
|
+
# ========================================================================
|
|
818
|
+
# Lazy Cloud Platform Hooks (Azure Synapse, Fabric)
|
|
819
|
+
# ========================================================================
|
|
805
820
|
|
|
806
|
-
#
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
"
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
821
|
+
# Azure Synapse (lazy - uses pyodbc and azure-identity)
|
|
822
|
+
PlatformHookRegistry.register_config_builder(
|
|
823
|
+
"synapse", _make_lazy_config_builder(".azure_synapse", "_build_synapse_config")
|
|
824
|
+
)
|
|
825
|
+
PlatformHookRegistry.register_option_specs(
|
|
826
|
+
"synapse",
|
|
827
|
+
PlatformOptionSpec(
|
|
828
|
+
name="server",
|
|
829
|
+
help="Azure Synapse server endpoint (e.g., myworkspace.sql.azuresynapse.net)",
|
|
830
|
+
),
|
|
831
|
+
PlatformOptionSpec(
|
|
832
|
+
name="database",
|
|
833
|
+
help="Azure Synapse database name (auto-generated if not specified)",
|
|
834
|
+
),
|
|
835
|
+
PlatformOptionSpec(
|
|
836
|
+
name="username",
|
|
837
|
+
help="Azure Synapse username",
|
|
838
|
+
),
|
|
839
|
+
PlatformOptionSpec(
|
|
840
|
+
name="password",
|
|
841
|
+
help="Azure Synapse password",
|
|
842
|
+
),
|
|
843
|
+
PlatformOptionSpec(
|
|
844
|
+
name="auth_method",
|
|
845
|
+
help="Authentication method: sql, aad_password, or aad_msi",
|
|
846
|
+
default="sql",
|
|
847
|
+
),
|
|
848
|
+
PlatformOptionSpec(
|
|
849
|
+
name="storage_account",
|
|
850
|
+
help="Azure storage account for data staging",
|
|
851
|
+
),
|
|
852
|
+
PlatformOptionSpec(
|
|
853
|
+
name="container",
|
|
854
|
+
help="Azure blob container name",
|
|
855
|
+
),
|
|
856
|
+
PlatformOptionSpec(
|
|
857
|
+
name="storage_sas_token",
|
|
858
|
+
help="SAS token for Azure storage access",
|
|
859
|
+
),
|
|
860
|
+
PlatformOptionSpec(
|
|
861
|
+
name="resource_class",
|
|
862
|
+
help="Workload resource class (e.g., staticrc20, staticrc30)",
|
|
863
|
+
default="staticrc20",
|
|
864
|
+
),
|
|
865
|
+
)
|
|
866
|
+
|
|
867
|
+
# Microsoft Fabric Warehouse (lazy - uses pyodbc and azure-identity)
|
|
868
|
+
# Fabric uses from_config pattern, no separate config builder needed
|
|
869
|
+
PlatformHookRegistry.register_option_specs(
|
|
870
|
+
"fabric_dw",
|
|
871
|
+
PlatformOptionSpec(
|
|
872
|
+
name="server",
|
|
873
|
+
help="Fabric warehouse endpoint (e.g., workspace-guid.datawarehouse.fabric.microsoft.com)",
|
|
874
|
+
),
|
|
875
|
+
PlatformOptionSpec(
|
|
876
|
+
name="workspace",
|
|
877
|
+
help="Fabric workspace name or GUID",
|
|
878
|
+
),
|
|
879
|
+
PlatformOptionSpec(
|
|
880
|
+
name="warehouse",
|
|
881
|
+
help="Fabric warehouse name",
|
|
882
|
+
),
|
|
883
|
+
PlatformOptionSpec(
|
|
884
|
+
name="database",
|
|
885
|
+
help="Database/warehouse name (alias for --warehouse)",
|
|
886
|
+
),
|
|
887
|
+
PlatformOptionSpec(
|
|
888
|
+
name="auth_method",
|
|
889
|
+
help="Authentication method: service_principal, default_credential, or interactive",
|
|
890
|
+
default="default_credential",
|
|
891
|
+
),
|
|
892
|
+
PlatformOptionSpec(
|
|
893
|
+
name="tenant_id",
|
|
894
|
+
help="Azure tenant ID for service principal auth",
|
|
895
|
+
),
|
|
896
|
+
PlatformOptionSpec(
|
|
897
|
+
name="client_id",
|
|
898
|
+
help="Service principal client ID",
|
|
899
|
+
),
|
|
900
|
+
PlatformOptionSpec(
|
|
901
|
+
name="client_secret",
|
|
902
|
+
help="Service principal client secret",
|
|
903
|
+
),
|
|
904
|
+
PlatformOptionSpec(
|
|
905
|
+
name="staging_path",
|
|
906
|
+
help="OneLake staging path for data loading",
|
|
907
|
+
default="benchbox-staging",
|
|
908
|
+
),
|
|
909
|
+
)
|
|
910
|
+
|
|
911
|
+
# Onehouse Quanton (lazy - uses requests and boto3)
|
|
912
|
+
PlatformHookRegistry.register_config_builder(
|
|
913
|
+
"quanton", _make_lazy_config_builder(".onehouse", "_build_quanton_config")
|
|
914
|
+
)
|
|
915
|
+
PlatformHookRegistry.register_option_specs(
|
|
916
|
+
"quanton",
|
|
917
|
+
PlatformOptionSpec(
|
|
918
|
+
name="api_key",
|
|
919
|
+
help="Onehouse API key (or set ONEHOUSE_API_KEY env var)",
|
|
920
|
+
),
|
|
921
|
+
PlatformOptionSpec(
|
|
922
|
+
name="s3_staging_dir",
|
|
923
|
+
help="S3 path for data staging (e.g., s3://bucket/path)",
|
|
924
|
+
),
|
|
925
|
+
PlatformOptionSpec(
|
|
926
|
+
name="region",
|
|
927
|
+
help="AWS region for cluster deployment",
|
|
928
|
+
default="us-east-1",
|
|
929
|
+
),
|
|
930
|
+
PlatformOptionSpec(
|
|
931
|
+
name="database",
|
|
932
|
+
help="Database name for benchmarks",
|
|
933
|
+
default="benchbox",
|
|
934
|
+
),
|
|
935
|
+
PlatformOptionSpec(
|
|
936
|
+
name="table_format",
|
|
937
|
+
help="Table format: iceberg, hudi, or delta",
|
|
938
|
+
choices=("iceberg", "hudi", "delta"),
|
|
939
|
+
default="iceberg",
|
|
940
|
+
),
|
|
941
|
+
PlatformOptionSpec(
|
|
942
|
+
name="cluster_size",
|
|
943
|
+
help="Cluster size: small, medium, large, xlarge",
|
|
944
|
+
choices=("small", "medium", "large", "xlarge"),
|
|
945
|
+
default="small",
|
|
946
|
+
),
|
|
947
|
+
)
|
|
948
|
+
|
|
949
|
+
# ClickHouse Cloud (lazy - uses clickhouse-connect)
|
|
950
|
+
PlatformHookRegistry.register_config_builder(
|
|
951
|
+
"clickhouse-cloud", _make_lazy_config_builder(".clickhouse_cloud", "_build_clickhouse_cloud_config")
|
|
952
|
+
)
|
|
953
|
+
PlatformHookRegistry.register_option_specs(
|
|
954
|
+
"clickhouse-cloud",
|
|
955
|
+
PlatformOptionSpec(
|
|
956
|
+
name="host",
|
|
957
|
+
help="ClickHouse Cloud hostname (e.g., abc123.us-east-2.aws.clickhouse.cloud)",
|
|
958
|
+
),
|
|
959
|
+
PlatformOptionSpec(
|
|
960
|
+
name="password",
|
|
961
|
+
help="ClickHouse Cloud password (or set CLICKHOUSE_CLOUD_PASSWORD env var)",
|
|
962
|
+
),
|
|
963
|
+
PlatformOptionSpec(
|
|
964
|
+
name="username",
|
|
965
|
+
help="Username (default: 'default')",
|
|
966
|
+
default="default",
|
|
967
|
+
),
|
|
968
|
+
PlatformOptionSpec(
|
|
969
|
+
name="database",
|
|
970
|
+
help="Database name",
|
|
971
|
+
default="default",
|
|
972
|
+
),
|
|
973
|
+
)
|
|
853
974
|
|
|
854
975
|
# ========================================================================
|
|
855
976
|
# DataFrame Platform Hooks
|
|
856
977
|
# ========================================================================
|
|
978
|
+
# DataFrame platform option specs are registered unconditionally since
|
|
979
|
+
# they're just metadata. The actual adapter availability is checked at
|
|
980
|
+
# runtime when the adapter is instantiated.
|
|
857
981
|
|
|
858
|
-
#
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
)
|
|
982
|
+
# Polars DataFrame
|
|
983
|
+
PlatformHookRegistry.register_option_specs(
|
|
984
|
+
"polars-df",
|
|
985
|
+
PlatformOptionSpec(
|
|
986
|
+
name="streaming",
|
|
987
|
+
help="Enable streaming mode for large datasets",
|
|
988
|
+
parser=parse_bool,
|
|
989
|
+
default="false",
|
|
990
|
+
),
|
|
991
|
+
PlatformOptionSpec(
|
|
992
|
+
name="rechunk",
|
|
993
|
+
help="Rechunk data for better memory layout",
|
|
994
|
+
parser=parse_bool,
|
|
995
|
+
default="true",
|
|
996
|
+
),
|
|
997
|
+
PlatformOptionSpec(
|
|
998
|
+
name="n_rows",
|
|
999
|
+
help="Limit number of rows to read (for testing)",
|
|
1000
|
+
parser=int,
|
|
1001
|
+
),
|
|
1002
|
+
)
|
|
880
1003
|
|
|
881
|
-
#
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
)
|
|
1004
|
+
# Pandas DataFrame
|
|
1005
|
+
PlatformHookRegistry.register_option_specs(
|
|
1006
|
+
"pandas-df",
|
|
1007
|
+
PlatformOptionSpec(
|
|
1008
|
+
name="dtype_backend",
|
|
1009
|
+
help="Backend for nullable dtypes",
|
|
1010
|
+
choices=("numpy", "numpy_nullable", "pyarrow"),
|
|
1011
|
+
default="numpy_nullable",
|
|
1012
|
+
),
|
|
1013
|
+
)
|
|
892
1014
|
|
|
893
|
-
#
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
)
|
|
1015
|
+
# Modin DataFrame
|
|
1016
|
+
PlatformHookRegistry.register_option_specs(
|
|
1017
|
+
"modin-df",
|
|
1018
|
+
PlatformOptionSpec(
|
|
1019
|
+
name="engine",
|
|
1020
|
+
help="Modin execution engine",
|
|
1021
|
+
choices=("ray", "dask"),
|
|
1022
|
+
default="ray",
|
|
1023
|
+
),
|
|
1024
|
+
)
|
|
904
1025
|
|
|
905
|
-
#
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
)
|
|
1026
|
+
# cuDF DataFrame
|
|
1027
|
+
PlatformHookRegistry.register_option_specs(
|
|
1028
|
+
"cudf-df",
|
|
1029
|
+
PlatformOptionSpec(
|
|
1030
|
+
name="device_id",
|
|
1031
|
+
help="CUDA device ID to use",
|
|
1032
|
+
parser=int,
|
|
1033
|
+
default="0",
|
|
1034
|
+
),
|
|
1035
|
+
PlatformOptionSpec(
|
|
1036
|
+
name="spill_to_host",
|
|
1037
|
+
help="Enable GPU memory spilling to host RAM",
|
|
1038
|
+
parser=parse_bool,
|
|
1039
|
+
default="true",
|
|
1040
|
+
),
|
|
1041
|
+
)
|
|
922
1042
|
|
|
923
|
-
#
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
)
|
|
1043
|
+
# Dask DataFrame
|
|
1044
|
+
PlatformHookRegistry.register_option_specs(
|
|
1045
|
+
"dask-df",
|
|
1046
|
+
PlatformOptionSpec(
|
|
1047
|
+
name="n_workers",
|
|
1048
|
+
help="Number of worker processes",
|
|
1049
|
+
parser=int,
|
|
1050
|
+
),
|
|
1051
|
+
PlatformOptionSpec(
|
|
1052
|
+
name="threads_per_worker",
|
|
1053
|
+
help="Threads per worker process",
|
|
1054
|
+
parser=int,
|
|
1055
|
+
default="1",
|
|
1056
|
+
),
|
|
1057
|
+
PlatformOptionSpec(
|
|
1058
|
+
name="use_distributed",
|
|
1059
|
+
help="Use distributed scheduler (enables dashboard)",
|
|
1060
|
+
parser=parse_bool,
|
|
1061
|
+
default="false",
|
|
1062
|
+
),
|
|
1063
|
+
PlatformOptionSpec(
|
|
1064
|
+
name="scheduler_address",
|
|
1065
|
+
help="Connect to existing scheduler (e.g., 'tcp://...')",
|
|
1066
|
+
),
|
|
1067
|
+
)
|
|
949
1068
|
|
|
950
|
-
#
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
)
|
|
1069
|
+
# DataFusion DataFrame
|
|
1070
|
+
PlatformHookRegistry.register_option_specs(
|
|
1071
|
+
"datafusion-df",
|
|
1072
|
+
PlatformOptionSpec(
|
|
1073
|
+
name="target_partitions",
|
|
1074
|
+
help="Number of target partitions for parallelism (default: CPU count)",
|
|
1075
|
+
parser=int,
|
|
1076
|
+
),
|
|
1077
|
+
PlatformOptionSpec(
|
|
1078
|
+
name="repartition_joins",
|
|
1079
|
+
help="Enable automatic repartitioning for joins",
|
|
1080
|
+
parser=parse_bool,
|
|
1081
|
+
default="true",
|
|
1082
|
+
),
|
|
1083
|
+
PlatformOptionSpec(
|
|
1084
|
+
name="parquet_pushdown",
|
|
1085
|
+
help="Enable predicate/projection pushdown for Parquet files",
|
|
1086
|
+
parser=parse_bool,
|
|
1087
|
+
default="true",
|
|
1088
|
+
),
|
|
1089
|
+
PlatformOptionSpec(
|
|
1090
|
+
name="batch_size",
|
|
1091
|
+
help="Batch size for query execution",
|
|
1092
|
+
parser=int,
|
|
1093
|
+
default="8192",
|
|
1094
|
+
),
|
|
1095
|
+
PlatformOptionSpec(
|
|
1096
|
+
name="memory_limit",
|
|
1097
|
+
help="Memory limit for fair spill pool (e.g., '8G', '16GB')",
|
|
1098
|
+
),
|
|
1099
|
+
PlatformOptionSpec(
|
|
1100
|
+
name="temp_dir",
|
|
1101
|
+
help="Temporary directory for disk spilling (default: system temp)",
|
|
1102
|
+
),
|
|
1103
|
+
)
|
|
986
1104
|
except ImportError:
|
|
987
1105
|
# Platform hooks may not be available in all contexts
|
|
988
1106
|
pass
|