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
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
"""Onehouse Quanton managed Spark platform adapter.
|
|
2
|
+
|
|
3
|
+
Onehouse Quanton is a serverless managed Spark compute runtime that delivers:
|
|
4
|
+
- 2-3x better price-performance vs AWS EMR and Databricks
|
|
5
|
+
- No per-cluster fees unlike Databricks Photon
|
|
6
|
+
- Multi-table-format support: Apache Hudi, Apache Iceberg, and Delta Lake
|
|
7
|
+
- Apache XTable integration for cross-format metadata translation
|
|
8
|
+
- Serverless architecture with intelligent cluster management
|
|
9
|
+
- 100% open-source compatible: Standard Spark/SQL interfaces
|
|
10
|
+
|
|
11
|
+
Usage:
|
|
12
|
+
from benchbox.platforms.onehouse import QuantonAdapter
|
|
13
|
+
|
|
14
|
+
adapter = QuantonAdapter(
|
|
15
|
+
api_key="your-onehouse-api-key",
|
|
16
|
+
s3_staging_dir="s3://my-bucket/benchbox-data",
|
|
17
|
+
table_format="iceberg", # or "hudi", "delta"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
# Run TPC-H benchmark
|
|
21
|
+
adapter.create_schema("tpch_sf1")
|
|
22
|
+
adapter.load_data(["lineitem", "orders", ...], source_dir)
|
|
23
|
+
result = adapter.execute_query("SELECT * FROM lineitem LIMIT 10")
|
|
24
|
+
|
|
25
|
+
Copyright 2026 Joe Harris / BenchBox Project
|
|
26
|
+
|
|
27
|
+
Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
from __future__ import annotations
|
|
31
|
+
|
|
32
|
+
import logging
|
|
33
|
+
import os
|
|
34
|
+
import time
|
|
35
|
+
import uuid
|
|
36
|
+
from pathlib import Path
|
|
37
|
+
from typing import TYPE_CHECKING, Any, ClassVar
|
|
38
|
+
|
|
39
|
+
if TYPE_CHECKING:
|
|
40
|
+
from benchbox.core.tuning.interface import UnifiedTuningConfiguration
|
|
41
|
+
|
|
42
|
+
from benchbox.core.exceptions import ConfigurationError
|
|
43
|
+
from benchbox.platforms.base import PlatformAdapter
|
|
44
|
+
from benchbox.platforms.base.cloud_spark import (
|
|
45
|
+
CloudSparkConfigMixin,
|
|
46
|
+
CloudSparkStaging,
|
|
47
|
+
SparkDDLGeneratorMixin,
|
|
48
|
+
SparkTableFormat,
|
|
49
|
+
SparkTuningMixin,
|
|
50
|
+
)
|
|
51
|
+
from benchbox.platforms.base.cloud_spark.config import CloudPlatform
|
|
52
|
+
from benchbox.platforms.onehouse.onehouse_client import (
|
|
53
|
+
ClusterConfig,
|
|
54
|
+
OnehouseClient,
|
|
55
|
+
TableFormat,
|
|
56
|
+
)
|
|
57
|
+
from benchbox.utils.dependencies import (
|
|
58
|
+
check_platform_dependencies,
|
|
59
|
+
get_dependency_error_message,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
try:
|
|
63
|
+
import boto3
|
|
64
|
+
|
|
65
|
+
BOTO3_AVAILABLE = True
|
|
66
|
+
except ImportError:
|
|
67
|
+
boto3 = None
|
|
68
|
+
BOTO3_AVAILABLE = False
|
|
69
|
+
|
|
70
|
+
logger = logging.getLogger(__name__)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class QuantonAdapter(
|
|
74
|
+
CloudSparkConfigMixin,
|
|
75
|
+
SparkTuningMixin,
|
|
76
|
+
SparkDDLGeneratorMixin,
|
|
77
|
+
PlatformAdapter,
|
|
78
|
+
):
|
|
79
|
+
"""Onehouse Quanton managed Spark platform adapter.
|
|
80
|
+
|
|
81
|
+
Quanton provides serverless Spark execution with multi-table-format support
|
|
82
|
+
and automatic scaling. This adapter enables benchmarking Quanton against
|
|
83
|
+
other managed Spark platforms like EMR, Dataproc, and Databricks.
|
|
84
|
+
|
|
85
|
+
Execution Model:
|
|
86
|
+
- Jobs are submitted via Onehouse API
|
|
87
|
+
- Clusters are provisioned on-demand or pre-warmed
|
|
88
|
+
- Results are written to S3 and retrieved after job completion
|
|
89
|
+
- Supports Hudi, Iceberg, and Delta Lake table formats
|
|
90
|
+
|
|
91
|
+
Key Features:
|
|
92
|
+
- 2-3x better price-performance than EMR/Databricks
|
|
93
|
+
- Multi-table-format benchmarking capability
|
|
94
|
+
- XTable integration for format comparison
|
|
95
|
+
- Intelligent cluster management
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
# CloudSparkConfigMixin: Uses Quanton-optimized config
|
|
99
|
+
cloud_platform: ClassVar[CloudPlatform] = CloudPlatform.QUANTON
|
|
100
|
+
|
|
101
|
+
# SparkDDLGeneratorMixin: Default to Iceberg for best performance
|
|
102
|
+
table_format: ClassVar[SparkTableFormat] = SparkTableFormat.ICEBERG
|
|
103
|
+
|
|
104
|
+
def __init__(
|
|
105
|
+
self,
|
|
106
|
+
api_key: str | None = None,
|
|
107
|
+
s3_staging_dir: str | None = None,
|
|
108
|
+
region: str = "us-east-1",
|
|
109
|
+
database: str | None = None,
|
|
110
|
+
table_format: str = "iceberg",
|
|
111
|
+
cluster_size: str = "small",
|
|
112
|
+
timeout_minutes: int = 60,
|
|
113
|
+
api_endpoint: str | None = None,
|
|
114
|
+
record_key: str | None = None,
|
|
115
|
+
precombine_field: str | None = None,
|
|
116
|
+
hudi_table_type: str = "COPY_ON_WRITE",
|
|
117
|
+
**kwargs: Any,
|
|
118
|
+
) -> None:
|
|
119
|
+
"""Initialize the Quanton adapter.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
api_key: Onehouse API key (or set ONEHOUSE_API_KEY env var).
|
|
123
|
+
s3_staging_dir: S3 path for data staging (required, e.g., s3://bucket/path).
|
|
124
|
+
region: AWS region for cluster deployment (default: us-east-1).
|
|
125
|
+
database: Database name for benchmarks (default: benchbox).
|
|
126
|
+
table_format: Table format: "iceberg", "hudi", or "delta" (default: iceberg).
|
|
127
|
+
cluster_size: Cluster size: "small", "medium", "large", "xlarge" (default: small).
|
|
128
|
+
timeout_minutes: Job timeout in minutes (default: 60).
|
|
129
|
+
api_endpoint: Custom API endpoint (for testing or private deployments).
|
|
130
|
+
record_key: Hudi record key field (required for Hudi format).
|
|
131
|
+
precombine_field: Hudi precombine field for ordering during updates.
|
|
132
|
+
hudi_table_type: Hudi table type: "COPY_ON_WRITE" or "MERGE_ON_READ" (default: COW).
|
|
133
|
+
**kwargs: Additional platform options.
|
|
134
|
+
"""
|
|
135
|
+
# Resolve API key from environment if not provided
|
|
136
|
+
resolved_api_key = api_key or os.environ.get("ONEHOUSE_API_KEY")
|
|
137
|
+
if not resolved_api_key:
|
|
138
|
+
raise ConfigurationError(
|
|
139
|
+
"Onehouse API key required. Provide via api_key parameter or ONEHOUSE_API_KEY environment variable."
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
if not s3_staging_dir:
|
|
143
|
+
raise ConfigurationError("s3_staging_dir is required (e.g., s3://bucket/path)")
|
|
144
|
+
|
|
145
|
+
if not s3_staging_dir.startswith("s3://"):
|
|
146
|
+
raise ConfigurationError(f"Invalid S3 path: {s3_staging_dir}. Must start with s3://")
|
|
147
|
+
|
|
148
|
+
# Validate table format
|
|
149
|
+
try:
|
|
150
|
+
self._table_format_enum = TableFormat(table_format.lower())
|
|
151
|
+
except ValueError:
|
|
152
|
+
valid_formats = ", ".join(f.value for f in TableFormat)
|
|
153
|
+
raise ConfigurationError(f"Invalid table_format: {table_format}. Must be one of: {valid_formats}")
|
|
154
|
+
|
|
155
|
+
# Parse S3 path
|
|
156
|
+
s3_parts = s3_staging_dir[5:].split("/", 1)
|
|
157
|
+
self.s3_bucket = s3_parts[0]
|
|
158
|
+
self.s3_prefix = s3_parts[1] if len(s3_parts) > 1 else ""
|
|
159
|
+
|
|
160
|
+
self.api_key = resolved_api_key
|
|
161
|
+
self.s3_staging_dir = s3_staging_dir.rstrip("/")
|
|
162
|
+
self.region = region
|
|
163
|
+
self.database = database or "benchbox"
|
|
164
|
+
self.table_format_str = table_format.lower()
|
|
165
|
+
self.cluster_size = cluster_size
|
|
166
|
+
self.timeout_minutes = timeout_minutes
|
|
167
|
+
self.api_endpoint = api_endpoint
|
|
168
|
+
|
|
169
|
+
# Map string table format to SparkTableFormat for mixin DDL generation.
|
|
170
|
+
# All three table formats now have dedicated DDL generation support.
|
|
171
|
+
format_mapping = {
|
|
172
|
+
"iceberg": SparkTableFormat.ICEBERG,
|
|
173
|
+
"hudi": SparkTableFormat.HUDI,
|
|
174
|
+
"delta": SparkTableFormat.DELTA,
|
|
175
|
+
}
|
|
176
|
+
self.__class__.table_format = format_mapping.get(self.table_format_str, SparkTableFormat.ICEBERG)
|
|
177
|
+
|
|
178
|
+
# Store Hudi-specific configuration
|
|
179
|
+
self.record_key = record_key
|
|
180
|
+
self.precombine_field = precombine_field
|
|
181
|
+
self.hudi_table_type = hudi_table_type
|
|
182
|
+
|
|
183
|
+
# Initialize staging using cloud-spark shared infrastructure
|
|
184
|
+
self._staging: CloudSparkStaging | None = None
|
|
185
|
+
try:
|
|
186
|
+
self._staging = CloudSparkStaging.from_uri(self.s3_staging_dir)
|
|
187
|
+
except Exception as e:
|
|
188
|
+
logger.warning(f"Failed to initialize S3 staging: {e}")
|
|
189
|
+
|
|
190
|
+
# Initialize Onehouse client
|
|
191
|
+
cluster_config = ClusterConfig(
|
|
192
|
+
cluster_size=cluster_size,
|
|
193
|
+
auto_scaling=True,
|
|
194
|
+
)
|
|
195
|
+
self._client = OnehouseClient(
|
|
196
|
+
api_key=self.api_key,
|
|
197
|
+
region=self.region,
|
|
198
|
+
api_endpoint=self.api_endpoint,
|
|
199
|
+
cluster_config=cluster_config,
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
# S3 client for result retrieval
|
|
203
|
+
self._s3_client: Any = None
|
|
204
|
+
|
|
205
|
+
# Metrics tracking
|
|
206
|
+
self._query_count = 0
|
|
207
|
+
self._total_job_duration_seconds = 0.0
|
|
208
|
+
|
|
209
|
+
# Benchmark configuration (set via configure_for_benchmark)
|
|
210
|
+
self._benchmark_type: str | None = None
|
|
211
|
+
self._scale_factor: float = 1.0
|
|
212
|
+
self._spark_config: dict[str, str] = {}
|
|
213
|
+
|
|
214
|
+
super().__init__(**kwargs)
|
|
215
|
+
|
|
216
|
+
def _get_s3_client(self) -> Any:
|
|
217
|
+
"""Get or create S3 client."""
|
|
218
|
+
if self._s3_client is None:
|
|
219
|
+
if not BOTO3_AVAILABLE:
|
|
220
|
+
deps_satisfied, missing = check_platform_dependencies("quanton")
|
|
221
|
+
if not deps_satisfied:
|
|
222
|
+
raise ConfigurationError(get_dependency_error_message("quanton", missing))
|
|
223
|
+
|
|
224
|
+
session = boto3.Session(region_name=self.region)
|
|
225
|
+
self._s3_client = session.client("s3")
|
|
226
|
+
return self._s3_client
|
|
227
|
+
|
|
228
|
+
def get_platform_info(self, connection: Any = None) -> dict[str, Any]:
|
|
229
|
+
"""Return platform metadata.
|
|
230
|
+
|
|
231
|
+
Args:
|
|
232
|
+
connection: Not used (Quanton manages sessions internally).
|
|
233
|
+
|
|
234
|
+
Returns:
|
|
235
|
+
Dict with platform information including name, version, and capabilities.
|
|
236
|
+
"""
|
|
237
|
+
return {
|
|
238
|
+
"platform": "quanton",
|
|
239
|
+
"display_name": "Onehouse Quanton",
|
|
240
|
+
"vendor": "Onehouse",
|
|
241
|
+
"type": "managed_spark",
|
|
242
|
+
"region": self.region,
|
|
243
|
+
"table_format": self.table_format_str,
|
|
244
|
+
"cluster_size": self.cluster_size,
|
|
245
|
+
"supports_sql": True,
|
|
246
|
+
"supports_dataframe": True,
|
|
247
|
+
"supports_hudi": True,
|
|
248
|
+
"supports_iceberg": True,
|
|
249
|
+
"supports_delta": True,
|
|
250
|
+
"billing_model": "compute-hours",
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
def create_connection(self, **kwargs: Any) -> Any:
|
|
254
|
+
"""Verify API connectivity and initialize cluster.
|
|
255
|
+
|
|
256
|
+
Returns:
|
|
257
|
+
Dict with connection status and cluster info.
|
|
258
|
+
|
|
259
|
+
Raises:
|
|
260
|
+
ConfigurationError: If API connection fails.
|
|
261
|
+
"""
|
|
262
|
+
try:
|
|
263
|
+
if self._client.test_connection():
|
|
264
|
+
logger.info("Connected to Onehouse Quanton API")
|
|
265
|
+
return {
|
|
266
|
+
"status": "connected",
|
|
267
|
+
"region": self.region,
|
|
268
|
+
"table_format": self.table_format_str,
|
|
269
|
+
}
|
|
270
|
+
else:
|
|
271
|
+
raise ConfigurationError("Failed to connect to Onehouse API")
|
|
272
|
+
except Exception as e:
|
|
273
|
+
raise ConfigurationError(f"Failed to connect to Onehouse Quanton: {e}") from e
|
|
274
|
+
|
|
275
|
+
def test_connection(self) -> bool:
|
|
276
|
+
"""Test API connectivity.
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
True if connection successful
|
|
280
|
+
"""
|
|
281
|
+
try:
|
|
282
|
+
return self._client.test_connection()
|
|
283
|
+
except Exception:
|
|
284
|
+
return False
|
|
285
|
+
|
|
286
|
+
def create_schema(self, schema_name: str | None = None) -> None:
|
|
287
|
+
"""Create database in Quanton metastore if it doesn't exist.
|
|
288
|
+
|
|
289
|
+
Args:
|
|
290
|
+
schema_name: Database name (uses self.database if not provided).
|
|
291
|
+
"""
|
|
292
|
+
database = schema_name or self.database
|
|
293
|
+
|
|
294
|
+
try:
|
|
295
|
+
# Create database with S3 location
|
|
296
|
+
location = f"{self.s3_staging_dir}/databases/{database}"
|
|
297
|
+
self._client.create_database(database, location=location)
|
|
298
|
+
logger.info(f"Created database '{database}' at {location}")
|
|
299
|
+
except Exception as e:
|
|
300
|
+
# Database might already exist
|
|
301
|
+
if "already exists" in str(e).lower():
|
|
302
|
+
logger.info(f"Database '{database}' already exists")
|
|
303
|
+
else:
|
|
304
|
+
logger.warning(f"Failed to create database: {e}")
|
|
305
|
+
|
|
306
|
+
def load_data(
|
|
307
|
+
self,
|
|
308
|
+
tables: list[str],
|
|
309
|
+
source_dir: Path | str,
|
|
310
|
+
file_format: str = "parquet",
|
|
311
|
+
**kwargs: Any,
|
|
312
|
+
) -> dict[str, str]:
|
|
313
|
+
"""Upload benchmark data to S3 and create tables.
|
|
314
|
+
|
|
315
|
+
Args:
|
|
316
|
+
tables: List of table names to load.
|
|
317
|
+
source_dir: Local directory containing table data files.
|
|
318
|
+
file_format: Data file format (default: parquet).
|
|
319
|
+
**kwargs: Additional options.
|
|
320
|
+
|
|
321
|
+
Returns:
|
|
322
|
+
Dict mapping table names to S3 URIs.
|
|
323
|
+
"""
|
|
324
|
+
source_path = Path(source_dir)
|
|
325
|
+
if not source_path.exists():
|
|
326
|
+
raise ConfigurationError(f"Source directory not found: {source_dir}")
|
|
327
|
+
|
|
328
|
+
# Check if tables already exist in S3
|
|
329
|
+
if self._staging and self._staging.tables_exist(tables):
|
|
330
|
+
logger.info("Tables already exist in S3 staging, skipping upload")
|
|
331
|
+
return {table: self._staging.get_table_uri(table) for table in tables}
|
|
332
|
+
|
|
333
|
+
# Upload using cloud-spark staging infrastructure
|
|
334
|
+
if self._staging:
|
|
335
|
+
logger.info(f"Uploading {len(tables)} tables to S3 staging")
|
|
336
|
+
self._staging.upload_tables(
|
|
337
|
+
tables=tables,
|
|
338
|
+
source_dir=source_path,
|
|
339
|
+
file_format=file_format,
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
# Create tables using Spark SQL via job submission
|
|
343
|
+
table_uris = {}
|
|
344
|
+
for table in tables:
|
|
345
|
+
table_uri = f"{self.s3_staging_dir}/tables/{table}"
|
|
346
|
+
table_uris[table] = table_uri
|
|
347
|
+
|
|
348
|
+
# Generate CREATE TABLE DDL based on table format
|
|
349
|
+
ddl = self._generate_create_table_ddl(table, table_uri)
|
|
350
|
+
if ddl:
|
|
351
|
+
try:
|
|
352
|
+
self._execute_ddl(ddl)
|
|
353
|
+
logger.info(f"Created table {self.database}.{table}")
|
|
354
|
+
except Exception as e:
|
|
355
|
+
logger.warning(f"Failed to create table {table}: {e}")
|
|
356
|
+
|
|
357
|
+
return table_uris
|
|
358
|
+
|
|
359
|
+
def _generate_create_table_ddl(self, table: str, location: str) -> str:
|
|
360
|
+
"""Generate CREATE TABLE DDL based on table format.
|
|
361
|
+
|
|
362
|
+
Uses SparkDDLGeneratorMixin for format-specific DDL generation.
|
|
363
|
+
For Hudi, uses configurable record key and precombine fields.
|
|
364
|
+
|
|
365
|
+
Args:
|
|
366
|
+
table: Table name
|
|
367
|
+
location: S3 location for table data
|
|
368
|
+
|
|
369
|
+
Returns:
|
|
370
|
+
CREATE TABLE DDL statement
|
|
371
|
+
"""
|
|
372
|
+
if self.table_format_str == "iceberg":
|
|
373
|
+
return f"""
|
|
374
|
+
CREATE TABLE IF NOT EXISTS {self.database}.{table}
|
|
375
|
+
USING ICEBERG
|
|
376
|
+
LOCATION '{location}'
|
|
377
|
+
"""
|
|
378
|
+
elif self.table_format_str == "hudi":
|
|
379
|
+
# Build Hudi TBLPROPERTIES with configurable keys
|
|
380
|
+
properties = [f"'hoodie.table.name' = '{table}'"]
|
|
381
|
+
|
|
382
|
+
# Record key is required - use configured value or log warning
|
|
383
|
+
if self.record_key:
|
|
384
|
+
properties.append(f"'hoodie.datasource.write.recordkey.field' = '{self.record_key}'")
|
|
385
|
+
else:
|
|
386
|
+
logger.warning(
|
|
387
|
+
f"No record_key configured for Hudi table {table}. "
|
|
388
|
+
"Set --record-key or provide record_key in config."
|
|
389
|
+
)
|
|
390
|
+
# Use table name + '_key' as fallback hint
|
|
391
|
+
properties.append(f"'hoodie.datasource.write.recordkey.field' = '{table}_key'")
|
|
392
|
+
|
|
393
|
+
# Precombine field for ordering during updates
|
|
394
|
+
if self.precombine_field:
|
|
395
|
+
properties.append(f"'hoodie.datasource.write.precombine.field' = '{self.precombine_field}'")
|
|
396
|
+
|
|
397
|
+
# Table type (COW or MOR)
|
|
398
|
+
properties.append(f"'hoodie.table.type' = '{self.hudi_table_type}'")
|
|
399
|
+
|
|
400
|
+
props_str = ",\n ".join(properties)
|
|
401
|
+
return f"""
|
|
402
|
+
CREATE TABLE IF NOT EXISTS {self.database}.{table}
|
|
403
|
+
USING HUDI
|
|
404
|
+
TBLPROPERTIES (
|
|
405
|
+
{props_str}
|
|
406
|
+
)
|
|
407
|
+
LOCATION '{location}'
|
|
408
|
+
"""
|
|
409
|
+
elif self.table_format_str == "delta":
|
|
410
|
+
return f"""
|
|
411
|
+
CREATE TABLE IF NOT EXISTS {self.database}.{table}
|
|
412
|
+
USING DELTA
|
|
413
|
+
LOCATION '{location}'
|
|
414
|
+
"""
|
|
415
|
+
return ""
|
|
416
|
+
|
|
417
|
+
def _execute_ddl(self, ddl: str) -> None:
|
|
418
|
+
"""Execute DDL statement via job submission.
|
|
419
|
+
|
|
420
|
+
Args:
|
|
421
|
+
ddl: DDL statement to execute
|
|
422
|
+
"""
|
|
423
|
+
job_id = self._client.submit_sql_job(
|
|
424
|
+
sql=ddl,
|
|
425
|
+
database=self.database,
|
|
426
|
+
table_format=self._table_format_enum,
|
|
427
|
+
spark_config=self._spark_config,
|
|
428
|
+
)
|
|
429
|
+
self._client.wait_for_job(job_id, timeout_minutes=10)
|
|
430
|
+
|
|
431
|
+
def execute_query(
|
|
432
|
+
self,
|
|
433
|
+
query: str,
|
|
434
|
+
**kwargs: Any,
|
|
435
|
+
) -> list[dict[str, Any]]:
|
|
436
|
+
"""Execute a SQL query on Quanton.
|
|
437
|
+
|
|
438
|
+
Args:
|
|
439
|
+
query: SQL query to execute.
|
|
440
|
+
**kwargs: Additional query options.
|
|
441
|
+
|
|
442
|
+
Returns:
|
|
443
|
+
Query results as list of dicts.
|
|
444
|
+
"""
|
|
445
|
+
start_time = time.time()
|
|
446
|
+
|
|
447
|
+
# Generate unique result location
|
|
448
|
+
result_id = f"results-{uuid.uuid4().hex[:12]}"
|
|
449
|
+
output_location = f"{self.s3_staging_dir}/results/{result_id}"
|
|
450
|
+
|
|
451
|
+
# Submit SQL job
|
|
452
|
+
job_id = self._client.submit_sql_job(
|
|
453
|
+
sql=query,
|
|
454
|
+
database=self.database,
|
|
455
|
+
table_format=self._table_format_enum,
|
|
456
|
+
output_location=output_location,
|
|
457
|
+
spark_config=self._spark_config,
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
# Wait for completion
|
|
461
|
+
result = self._client.wait_for_job(job_id, timeout_minutes=self.timeout_minutes)
|
|
462
|
+
elapsed = time.time() - start_time
|
|
463
|
+
|
|
464
|
+
# Track metrics
|
|
465
|
+
self._query_count += 1
|
|
466
|
+
if result.duration_seconds:
|
|
467
|
+
self._total_job_duration_seconds += result.duration_seconds
|
|
468
|
+
|
|
469
|
+
logger.debug(f"Query completed in {elapsed:.1f}s (job duration: {result.duration_seconds:.1f}s)")
|
|
470
|
+
|
|
471
|
+
# Retrieve results
|
|
472
|
+
try:
|
|
473
|
+
results = self._client.get_job_results(job_id)
|
|
474
|
+
return results
|
|
475
|
+
except Exception as e:
|
|
476
|
+
logger.warning(f"Failed to retrieve results from API, trying S3: {e}")
|
|
477
|
+
return self._retrieve_results_from_s3(output_location)
|
|
478
|
+
|
|
479
|
+
def _retrieve_results_from_s3(self, output_location: str) -> list[dict[str, Any]]:
|
|
480
|
+
"""Retrieve job results from S3.
|
|
481
|
+
|
|
482
|
+
Args:
|
|
483
|
+
output_location: S3 URI for results
|
|
484
|
+
|
|
485
|
+
Returns:
|
|
486
|
+
List of result rows as dicts
|
|
487
|
+
"""
|
|
488
|
+
import json
|
|
489
|
+
|
|
490
|
+
s3_client = self._get_s3_client()
|
|
491
|
+
|
|
492
|
+
# Parse S3 URI
|
|
493
|
+
s3_parts = output_location[5:].split("/", 1)
|
|
494
|
+
bucket = s3_parts[0]
|
|
495
|
+
prefix = s3_parts[1] if len(s3_parts) > 1 else ""
|
|
496
|
+
|
|
497
|
+
response = s3_client.list_objects_v2(Bucket=bucket, Prefix=prefix)
|
|
498
|
+
|
|
499
|
+
results = []
|
|
500
|
+
for obj in response.get("Contents", []):
|
|
501
|
+
if obj["Key"].endswith(".json"):
|
|
502
|
+
obj_response = s3_client.get_object(Bucket=bucket, Key=obj["Key"])
|
|
503
|
+
content = obj_response["Body"].read().decode()
|
|
504
|
+
# Spark JSON output is newline-delimited JSON
|
|
505
|
+
for line in content.strip().split("\n"):
|
|
506
|
+
if line:
|
|
507
|
+
results.append(json.loads(line))
|
|
508
|
+
|
|
509
|
+
return results
|
|
510
|
+
|
|
511
|
+
def close(self) -> None:
|
|
512
|
+
"""Clean up resources and log usage metrics."""
|
|
513
|
+
try:
|
|
514
|
+
self._client.close()
|
|
515
|
+
except Exception as e:
|
|
516
|
+
logger.warning(f"Error closing Quanton client: {e}")
|
|
517
|
+
|
|
518
|
+
logger.info(f"Quanton session closed. Executed {self._query_count} queries.")
|
|
519
|
+
if self._total_job_duration_seconds > 0:
|
|
520
|
+
logger.info(f"Total job duration: {self._total_job_duration_seconds:.1f}s")
|
|
521
|
+
|
|
522
|
+
@staticmethod
|
|
523
|
+
def add_cli_arguments(parser: Any) -> None:
|
|
524
|
+
"""Add Quanton-specific CLI arguments.
|
|
525
|
+
|
|
526
|
+
Args:
|
|
527
|
+
parser: Argument parser to add arguments to.
|
|
528
|
+
"""
|
|
529
|
+
group = parser.add_argument_group("Onehouse Quanton Options")
|
|
530
|
+
group.add_argument(
|
|
531
|
+
"--onehouse-api-key",
|
|
532
|
+
dest="api_key",
|
|
533
|
+
help="Onehouse API key (or set ONEHOUSE_API_KEY env var)",
|
|
534
|
+
)
|
|
535
|
+
group.add_argument(
|
|
536
|
+
"--s3-staging-dir",
|
|
537
|
+
help="S3 path for data staging (e.g., s3://bucket/path)",
|
|
538
|
+
)
|
|
539
|
+
group.add_argument(
|
|
540
|
+
"--onehouse-region",
|
|
541
|
+
dest="region",
|
|
542
|
+
default="us-east-1",
|
|
543
|
+
help="AWS region for cluster deployment (default: us-east-1)",
|
|
544
|
+
)
|
|
545
|
+
group.add_argument(
|
|
546
|
+
"--table-format",
|
|
547
|
+
choices=["iceberg", "hudi", "delta"],
|
|
548
|
+
default="iceberg",
|
|
549
|
+
help="Table format: iceberg, hudi, or delta (default: iceberg)",
|
|
550
|
+
)
|
|
551
|
+
group.add_argument(
|
|
552
|
+
"--cluster-size",
|
|
553
|
+
choices=["small", "medium", "large", "xlarge"],
|
|
554
|
+
default="small",
|
|
555
|
+
help="Cluster size (default: small)",
|
|
556
|
+
)
|
|
557
|
+
group.add_argument(
|
|
558
|
+
"--database",
|
|
559
|
+
default="benchbox",
|
|
560
|
+
help="Database name (default: benchbox)",
|
|
561
|
+
)
|
|
562
|
+
group.add_argument(
|
|
563
|
+
"--record-key",
|
|
564
|
+
dest="record_key",
|
|
565
|
+
help="Hudi record key field (required for hudi table format)",
|
|
566
|
+
)
|
|
567
|
+
group.add_argument(
|
|
568
|
+
"--precombine-field",
|
|
569
|
+
dest="precombine_field",
|
|
570
|
+
help="Hudi precombine field for ordering during updates",
|
|
571
|
+
)
|
|
572
|
+
group.add_argument(
|
|
573
|
+
"--hudi-table-type",
|
|
574
|
+
dest="hudi_table_type",
|
|
575
|
+
choices=["COPY_ON_WRITE", "MERGE_ON_READ"],
|
|
576
|
+
default="COPY_ON_WRITE",
|
|
577
|
+
help="Hudi table type: COPY_ON_WRITE (faster reads) or MERGE_ON_READ (faster writes)",
|
|
578
|
+
)
|
|
579
|
+
|
|
580
|
+
@classmethod
|
|
581
|
+
def from_config(cls, config: dict[str, Any]) -> QuantonAdapter:
|
|
582
|
+
"""Create adapter from configuration dict.
|
|
583
|
+
|
|
584
|
+
Args:
|
|
585
|
+
config: Configuration dictionary.
|
|
586
|
+
|
|
587
|
+
Returns:
|
|
588
|
+
Configured QuantonAdapter instance.
|
|
589
|
+
"""
|
|
590
|
+
params = {
|
|
591
|
+
"api_key": config.get("api_key") or config.get("onehouse_api_key"),
|
|
592
|
+
"s3_staging_dir": config.get("s3_staging_dir"),
|
|
593
|
+
"region": config.get("region", "us-east-1"),
|
|
594
|
+
"database": config.get("database", "benchbox"),
|
|
595
|
+
"table_format": config.get("table_format", "iceberg"),
|
|
596
|
+
"cluster_size": config.get("cluster_size", "small"),
|
|
597
|
+
"timeout_minutes": config.get("timeout_minutes", 60),
|
|
598
|
+
"api_endpoint": config.get("api_endpoint"),
|
|
599
|
+
# Hudi-specific configuration
|
|
600
|
+
"record_key": config.get("record_key"),
|
|
601
|
+
"precombine_field": config.get("precombine_field"),
|
|
602
|
+
"hudi_table_type": config.get("hudi_table_type", "COPY_ON_WRITE"),
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
# Pass through other config options
|
|
606
|
+
for key in ["force_recreate", "show_query_plans", "capture_plans"]:
|
|
607
|
+
if key in config:
|
|
608
|
+
params[key] = config[key]
|
|
609
|
+
|
|
610
|
+
return cls(**params)
|
|
611
|
+
|
|
612
|
+
def apply_tuning_configuration(
|
|
613
|
+
self,
|
|
614
|
+
config: UnifiedTuningConfiguration,
|
|
615
|
+
) -> dict[str, Any]:
|
|
616
|
+
"""Apply unified tuning configuration.
|
|
617
|
+
|
|
618
|
+
Args:
|
|
619
|
+
config: Unified tuning configuration.
|
|
620
|
+
|
|
621
|
+
Returns:
|
|
622
|
+
Dict with results of applied configurations.
|
|
623
|
+
"""
|
|
624
|
+
results: dict[str, Any] = {}
|
|
625
|
+
|
|
626
|
+
if config.scale_factor:
|
|
627
|
+
self._scale_factor = config.scale_factor
|
|
628
|
+
|
|
629
|
+
if config.primary_keys:
|
|
630
|
+
results["primary_keys"] = self.apply_primary_keys(config.primary_keys)
|
|
631
|
+
|
|
632
|
+
if config.foreign_keys:
|
|
633
|
+
results["foreign_keys"] = self.apply_foreign_keys(config.foreign_keys)
|
|
634
|
+
|
|
635
|
+
if config.platform:
|
|
636
|
+
results["platform_optimizations"] = self.apply_platform_optimizations(config.platform)
|
|
637
|
+
|
|
638
|
+
return results
|
|
639
|
+
|
|
640
|
+
def get_target_dialect(self) -> str:
|
|
641
|
+
"""Return the target SQL dialect for Quanton.
|
|
642
|
+
|
|
643
|
+
Returns:
|
|
644
|
+
The dialect string "spark".
|
|
645
|
+
"""
|
|
646
|
+
return "spark"
|
benchbox/platforms/postgresql.py
CHANGED
|
@@ -31,6 +31,7 @@ from ..utils.dependencies import (
|
|
|
31
31
|
check_platform_dependencies,
|
|
32
32
|
get_dependency_error_message,
|
|
33
33
|
)
|
|
34
|
+
from ..utils.file_format import get_delimiter_for_file, is_tpc_format
|
|
34
35
|
from .base import PlatformAdapter
|
|
35
36
|
|
|
36
37
|
# PostgreSQL dialect for SQLGlot
|
|
@@ -454,13 +455,8 @@ class PostgreSQLAdapter(PlatformAdapter):
|
|
|
454
455
|
table_stats[table_name_lower] = 0
|
|
455
456
|
continue
|
|
456
457
|
|
|
457
|
-
# Determine delimiter based on file
|
|
458
|
-
|
|
459
|
-
delimiter = "|"
|
|
460
|
-
elif data_file.suffix == ".csv":
|
|
461
|
-
delimiter = ","
|
|
462
|
-
else:
|
|
463
|
-
delimiter = ","
|
|
458
|
+
# Determine delimiter based on file format (handles compression)
|
|
459
|
+
delimiter = get_delimiter_for_file(data_file)
|
|
464
460
|
|
|
465
461
|
try:
|
|
466
462
|
# Use COPY FROM for efficient bulk loading
|
|
@@ -469,8 +465,8 @@ class PostgreSQLAdapter(PlatformAdapter):
|
|
|
469
465
|
)
|
|
470
466
|
|
|
471
467
|
with open(data_file) as f:
|
|
472
|
-
# For .tbl
|
|
473
|
-
if data_file
|
|
468
|
+
# For TPC format files (.tbl, .dat), remove trailing delimiter
|
|
469
|
+
if is_tpc_format(data_file):
|
|
474
470
|
# Read and preprocess data
|
|
475
471
|
lines = f.readlines()
|
|
476
472
|
cleaned_lines = []
|
benchbox/platforms/presto.py
CHANGED
|
@@ -45,6 +45,7 @@ from ..utils.dependencies import (
|
|
|
45
45
|
check_platform_dependencies,
|
|
46
46
|
get_dependency_error_message,
|
|
47
47
|
)
|
|
48
|
+
from ..utils.file_format import get_delimiter_for_file
|
|
48
49
|
from .base import PlatformAdapter
|
|
49
50
|
|
|
50
51
|
try:
|
|
@@ -800,8 +801,7 @@ class PrestoAdapter(PlatformAdapter):
|
|
|
800
801
|
file_path = Path(file_path)
|
|
801
802
|
|
|
802
803
|
# Detect delimiter from file extension (handle compressed extensions)
|
|
803
|
-
|
|
804
|
-
delimiter = "|" if ".tbl" in file_str or ".dat" in file_str else ","
|
|
804
|
+
delimiter = get_delimiter_for_file(file_path)
|
|
805
805
|
|
|
806
806
|
# Get compression handler (handles .zst, .gz, or uncompressed)
|
|
807
807
|
compression_handler = FileFormatRegistry.get_compression_handler(file_path)
|