From 1261ea985c0b9707b3924bec2c64ddecd35efbb6 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Thu, 24 Oct 2024 16:09:57 +0200 Subject: [PATCH 1/9] Support attaching delta tables as catalogs --- .github/regression/micro.csv | 5 + .github/workflows/LocalTesting.yml | 6 + .gitignore | 2 +- CMakeLists.txt | 8 +- benchmark/benchmark.Makefile | 17 +- .../snapshot_performance/delta_scan.benchmark | 16 ++ .../delta_scan_filter.benchmark | 16 ++ .../snapshot_no_pin.benchmark | 19 ++ .../snapshot_no_pin_filter.benchmark | 19 ++ .../snapshot_pin.benchmark | 19 ++ .../snapshot_pin_filter.benchmark | 19 ++ .../tpcds/sf1/local/delta_attach/load.sql | 24 +++ .../sf1/local/delta_attach/q01.benchmark | 7 + .../sf1/local/delta_attach/q02.benchmark | 7 + .../sf1/local/delta_attach/q03.benchmark | 7 + .../sf1/local/delta_attach/q04.benchmark | 7 + .../sf1/local/delta_attach/q05.benchmark | 7 + .../sf1/local/delta_attach/q06.benchmark | 7 + .../sf1/local/delta_attach/q07.benchmark | 7 + .../sf1/local/delta_attach/q08.benchmark | 7 + .../sf1/local/delta_attach/q09.benchmark | 7 + .../sf1/local/delta_attach/q10.benchmark | 7 + .../sf1/local/delta_attach/q11.benchmark | 7 + .../sf1/local/delta_attach/q12.benchmark | 7 + .../sf1/local/delta_attach/q13.benchmark | 7 + .../sf1/local/delta_attach/q14.benchmark | 7 + .../sf1/local/delta_attach/q15.benchmark | 7 + .../sf1/local/delta_attach/q16.benchmark | 7 + .../sf1/local/delta_attach/q17.benchmark | 7 + .../sf1/local/delta_attach/q18.benchmark | 7 + .../sf1/local/delta_attach/q19.benchmark | 7 + .../sf1/local/delta_attach/q20.benchmark | 7 + .../sf1/local/delta_attach/q21.benchmark | 7 + .../sf1/local/delta_attach/q22.benchmark | 7 + .../sf1/local/delta_attach/q23.benchmark | 7 + .../sf1/local/delta_attach/q24.benchmark | 7 + .../sf1/local/delta_attach/q25.benchmark | 7 + .../sf1/local/delta_attach/q26.benchmark | 7 + .../sf1/local/delta_attach/q27.benchmark | 7 + .../sf1/local/delta_attach/q28.benchmark | 7 + .../sf1/local/delta_attach/q29.benchmark | 7 + .../sf1/local/delta_attach/q30.benchmark | 7 + .../sf1/local/delta_attach/q31.benchmark | 7 + .../sf1/local/delta_attach/q32.benchmark | 7 + .../sf1/local/delta_attach/q33.benchmark | 7 + .../sf1/local/delta_attach/q34.benchmark | 7 + .../sf1/local/delta_attach/q35.benchmark | 7 + .../sf1/local/delta_attach/q36.benchmark | 7 + .../sf1/local/delta_attach/q37.benchmark | 7 + .../sf1/local/delta_attach/q38.benchmark | 7 + .../sf1/local/delta_attach/q39.benchmark | 7 + .../sf1/local/delta_attach/q40.benchmark | 7 + .../sf1/local/delta_attach/q41.benchmark | 7 + .../sf1/local/delta_attach/q42.benchmark | 7 + .../sf1/local/delta_attach/q43.benchmark | 7 + .../sf1/local/delta_attach/q44.benchmark | 7 + .../sf1/local/delta_attach/q45.benchmark | 7 + .../sf1/local/delta_attach/q46.benchmark | 7 + .../sf1/local/delta_attach/q47.benchmark | 7 + .../sf1/local/delta_attach/q48.benchmark | 7 + .../sf1/local/delta_attach/q49.benchmark | 7 + .../sf1/local/delta_attach/q50.benchmark | 7 + .../sf1/local/delta_attach/q51.benchmark | 7 + .../sf1/local/delta_attach/q52.benchmark | 7 + .../sf1/local/delta_attach/q53.benchmark | 7 + .../sf1/local/delta_attach/q54.benchmark | 7 + .../sf1/local/delta_attach/q55.benchmark | 7 + .../sf1/local/delta_attach/q56.benchmark | 7 + .../sf1/local/delta_attach/q57.benchmark | 7 + .../sf1/local/delta_attach/q58.benchmark | 7 + .../sf1/local/delta_attach/q59.benchmark | 7 + .../sf1/local/delta_attach/q60.benchmark | 7 + .../sf1/local/delta_attach/q61.benchmark | 7 + .../sf1/local/delta_attach/q62.benchmark | 7 + .../sf1/local/delta_attach/q63.benchmark | 7 + .../sf1/local/delta_attach/q64.benchmark | 7 + .../sf1/local/delta_attach/q65.benchmark | 7 + .../sf1/local/delta_attach/q66.benchmark | 7 + .../sf1/local/delta_attach/q67.benchmark | 7 + .../sf1/local/delta_attach/q68.benchmark | 7 + .../sf1/local/delta_attach/q69.benchmark | 7 + .../sf1/local/delta_attach/q70.benchmark | 7 + .../sf1/local/delta_attach/q71.benchmark | 7 + .../sf1/local/delta_attach/q72.benchmark | 7 + .../sf1/local/delta_attach/q73.benchmark | 7 + .../sf1/local/delta_attach/q74.benchmark | 7 + .../sf1/local/delta_attach/q75.benchmark | 7 + .../sf1/local/delta_attach/q76.benchmark | 7 + .../sf1/local/delta_attach/q77.benchmark | 7 + .../sf1/local/delta_attach/q78.benchmark | 7 + .../sf1/local/delta_attach/q79.benchmark | 7 + .../sf1/local/delta_attach/q80.benchmark | 7 + .../sf1/local/delta_attach/q81.benchmark | 7 + .../sf1/local/delta_attach/q82.benchmark | 7 + .../sf1/local/delta_attach/q83.benchmark | 7 + .../sf1/local/delta_attach/q84.benchmark | 7 + .../sf1/local/delta_attach/q85.benchmark | 7 + .../sf1/local/delta_attach/q86.benchmark | 7 + .../sf1/local/delta_attach/q87.benchmark | 7 + .../sf1/local/delta_attach/q88.benchmark | 7 + .../sf1/local/delta_attach/q89.benchmark | 7 + .../sf1/local/delta_attach/q90.benchmark | 7 + .../sf1/local/delta_attach/q91.benchmark | 7 + .../sf1/local/delta_attach/q92.benchmark | 7 + .../sf1/local/delta_attach/q93.benchmark | 7 + .../sf1/local/delta_attach/q94.benchmark | 7 + .../sf1/local/delta_attach/q95.benchmark | 7 + .../sf1/local/delta_attach/q96.benchmark | 7 + .../sf1/local/delta_attach/q97.benchmark | 7 + .../sf1/local/delta_attach/q98.benchmark | 7 + .../sf1/local/delta_attach/q99.benchmark | 7 + .../local/delta_attach/tpcds_sf1.benchmark.in | 17 ++ .../tpcds/sf1/local/delta_attach_pin/load.sql | 24 +++ .../sf1/local/delta_attach_pin/q01.benchmark | 7 + .../sf1/local/delta_attach_pin/q02.benchmark | 7 + .../sf1/local/delta_attach_pin/q03.benchmark | 7 + .../sf1/local/delta_attach_pin/q04.benchmark | 7 + .../sf1/local/delta_attach_pin/q05.benchmark | 7 + .../sf1/local/delta_attach_pin/q06.benchmark | 7 + .../sf1/local/delta_attach_pin/q07.benchmark | 7 + .../sf1/local/delta_attach_pin/q08.benchmark | 7 + .../sf1/local/delta_attach_pin/q09.benchmark | 7 + .../sf1/local/delta_attach_pin/q10.benchmark | 7 + .../sf1/local/delta_attach_pin/q11.benchmark | 7 + .../sf1/local/delta_attach_pin/q12.benchmark | 7 + .../sf1/local/delta_attach_pin/q13.benchmark | 7 + .../sf1/local/delta_attach_pin/q14.benchmark | 7 + .../sf1/local/delta_attach_pin/q15.benchmark | 7 + .../sf1/local/delta_attach_pin/q16.benchmark | 7 + .../sf1/local/delta_attach_pin/q17.benchmark | 7 + .../sf1/local/delta_attach_pin/q18.benchmark | 7 + .../sf1/local/delta_attach_pin/q19.benchmark | 7 + .../sf1/local/delta_attach_pin/q20.benchmark | 7 + .../sf1/local/delta_attach_pin/q21.benchmark | 7 + .../sf1/local/delta_attach_pin/q22.benchmark | 7 + .../sf1/local/delta_attach_pin/q23.benchmark | 7 + .../sf1/local/delta_attach_pin/q24.benchmark | 7 + .../sf1/local/delta_attach_pin/q25.benchmark | 7 + .../sf1/local/delta_attach_pin/q26.benchmark | 7 + .../sf1/local/delta_attach_pin/q27.benchmark | 7 + .../sf1/local/delta_attach_pin/q28.benchmark | 7 + .../sf1/local/delta_attach_pin/q29.benchmark | 7 + .../sf1/local/delta_attach_pin/q30.benchmark | 7 + .../sf1/local/delta_attach_pin/q31.benchmark | 7 + .../sf1/local/delta_attach_pin/q32.benchmark | 7 + .../sf1/local/delta_attach_pin/q33.benchmark | 7 + .../sf1/local/delta_attach_pin/q34.benchmark | 7 + .../sf1/local/delta_attach_pin/q35.benchmark | 7 + .../sf1/local/delta_attach_pin/q36.benchmark | 7 + .../sf1/local/delta_attach_pin/q37.benchmark | 7 + .../sf1/local/delta_attach_pin/q38.benchmark | 7 + .../sf1/local/delta_attach_pin/q39.benchmark | 7 + .../sf1/local/delta_attach_pin/q40.benchmark | 7 + .../sf1/local/delta_attach_pin/q41.benchmark | 7 + .../sf1/local/delta_attach_pin/q42.benchmark | 7 + .../sf1/local/delta_attach_pin/q43.benchmark | 7 + .../sf1/local/delta_attach_pin/q44.benchmark | 7 + .../sf1/local/delta_attach_pin/q45.benchmark | 7 + .../sf1/local/delta_attach_pin/q46.benchmark | 7 + .../sf1/local/delta_attach_pin/q47.benchmark | 7 + .../sf1/local/delta_attach_pin/q48.benchmark | 7 + .../sf1/local/delta_attach_pin/q49.benchmark | 7 + .../sf1/local/delta_attach_pin/q50.benchmark | 7 + .../sf1/local/delta_attach_pin/q51.benchmark | 7 + .../sf1/local/delta_attach_pin/q52.benchmark | 7 + .../sf1/local/delta_attach_pin/q53.benchmark | 7 + .../sf1/local/delta_attach_pin/q54.benchmark | 7 + .../sf1/local/delta_attach_pin/q55.benchmark | 7 + .../sf1/local/delta_attach_pin/q56.benchmark | 7 + .../sf1/local/delta_attach_pin/q57.benchmark | 7 + .../sf1/local/delta_attach_pin/q58.benchmark | 7 + .../sf1/local/delta_attach_pin/q59.benchmark | 7 + .../sf1/local/delta_attach_pin/q60.benchmark | 7 + .../sf1/local/delta_attach_pin/q61.benchmark | 7 + .../sf1/local/delta_attach_pin/q62.benchmark | 7 + .../sf1/local/delta_attach_pin/q63.benchmark | 7 + .../sf1/local/delta_attach_pin/q64.benchmark | 7 + .../sf1/local/delta_attach_pin/q65.benchmark | 7 + .../sf1/local/delta_attach_pin/q66.benchmark | 7 + .../sf1/local/delta_attach_pin/q67.benchmark | 7 + .../sf1/local/delta_attach_pin/q68.benchmark | 7 + .../sf1/local/delta_attach_pin/q69.benchmark | 7 + .../sf1/local/delta_attach_pin/q70.benchmark | 7 + .../sf1/local/delta_attach_pin/q71.benchmark | 7 + .../sf1/local/delta_attach_pin/q72.benchmark | 7 + .../sf1/local/delta_attach_pin/q73.benchmark | 7 + .../sf1/local/delta_attach_pin/q74.benchmark | 7 + .../sf1/local/delta_attach_pin/q75.benchmark | 7 + .../sf1/local/delta_attach_pin/q76.benchmark | 7 + .../sf1/local/delta_attach_pin/q77.benchmark | 7 + .../sf1/local/delta_attach_pin/q78.benchmark | 7 + .../sf1/local/delta_attach_pin/q79.benchmark | 7 + .../sf1/local/delta_attach_pin/q80.benchmark | 7 + .../sf1/local/delta_attach_pin/q81.benchmark | 7 + .../sf1/local/delta_attach_pin/q82.benchmark | 7 + .../sf1/local/delta_attach_pin/q83.benchmark | 7 + .../sf1/local/delta_attach_pin/q84.benchmark | 7 + .../sf1/local/delta_attach_pin/q85.benchmark | 7 + .../sf1/local/delta_attach_pin/q86.benchmark | 7 + .../sf1/local/delta_attach_pin/q87.benchmark | 7 + .../sf1/local/delta_attach_pin/q88.benchmark | 7 + .../sf1/local/delta_attach_pin/q89.benchmark | 7 + .../sf1/local/delta_attach_pin/q90.benchmark | 7 + .../sf1/local/delta_attach_pin/q91.benchmark | 7 + .../sf1/local/delta_attach_pin/q92.benchmark | 7 + .../sf1/local/delta_attach_pin/q93.benchmark | 7 + .../sf1/local/delta_attach_pin/q94.benchmark | 7 + .../sf1/local/delta_attach_pin/q95.benchmark | 7 + .../sf1/local/delta_attach_pin/q96.benchmark | 7 + .../sf1/local/delta_attach_pin/q97.benchmark | 7 + .../sf1/local/delta_attach_pin/q98.benchmark | 7 + .../sf1/local/delta_attach_pin/q99.benchmark | 7 + .../delta_attach_pin/tpcds_sf1.benchmark.in | 17 ++ .../tpch/sf1/local/delta_attach/load.sql | 8 + .../tpch/sf1/local/delta_attach/q01.benchmark | 7 + .../tpch/sf1/local/delta_attach/q02.benchmark | 7 + .../tpch/sf1/local/delta_attach/q03.benchmark | 7 + .../tpch/sf1/local/delta_attach/q04.benchmark | 7 + .../tpch/sf1/local/delta_attach/q05.benchmark | 7 + .../tpch/sf1/local/delta_attach/q06.benchmark | 7 + .../tpch/sf1/local/delta_attach/q07.benchmark | 7 + .../tpch/sf1/local/delta_attach/q08.benchmark | 7 + .../tpch/sf1/local/delta_attach/q09.benchmark | 7 + .../tpch/sf1/local/delta_attach/q10.benchmark | 7 + .../tpch/sf1/local/delta_attach/q11.benchmark | 7 + .../tpch/sf1/local/delta_attach/q12.benchmark | 7 + .../tpch/sf1/local/delta_attach/q13.benchmark | 7 + .../tpch/sf1/local/delta_attach/q14.benchmark | 7 + .../tpch/sf1/local/delta_attach/q15.benchmark | 7 + .../tpch/sf1/local/delta_attach/q16.benchmark | 7 + .../tpch/sf1/local/delta_attach/q17.benchmark | 7 + .../tpch/sf1/local/delta_attach/q18.benchmark | 7 + .../tpch/sf1/local/delta_attach/q19.benchmark | 7 + .../tpch/sf1/local/delta_attach/q20.benchmark | 7 + .../tpch/sf1/local/delta_attach/q21.benchmark | 7 + .../tpch/sf1/local/delta_attach/q22.benchmark | 7 + .../delta_attach/tpch_sf1_delta.benchmark.in | 17 ++ duckdb | 2 +- extension-ci-tools | 2 +- scripts/generate_test_data.py | 13 +- scripts/plot.py | 3 +- src/delta_extension.cpp | 38 ++++ src/functions/delta_scan.cpp | 96 ++++++--- src/include/delta_extension.hpp | 2 + src/include/delta_utils.hpp | 55 ++++++ src/include/functions/delta_scan.hpp | 27 ++- src/include/storage/delta_catalog.hpp | 81 ++++++++ src/include/storage/delta_schema_entry.hpp | 52 +++++ src/include/storage/delta_table_entry.hpp | 36 ++++ src/include/storage/delta_transaction.hpp | 45 +++++ .../storage/delta_transaction_manager.hpp | 33 ++++ src/storage/delta_catalog.cpp | 108 ++++++++++ src/storage/delta_schema_entry.cpp | 184 ++++++++++++++++++ src/storage/delta_table_entry.cpp | 74 +++++++ src/storage/delta_transaction.cpp | 42 ++++ src/storage/delta_transaction_manager.cpp | 38 ++++ test/sql/dat/attach.test | 125 ++++++++++++ 257 files changed, 2808 insertions(+), 41 deletions(-) create mode 100644 .github/regression/micro.csv create mode 100644 benchmark/micro/snapshot_performance/delta_scan.benchmark create mode 100644 benchmark/micro/snapshot_performance/delta_scan_filter.benchmark create mode 100644 benchmark/micro/snapshot_performance/snapshot_no_pin.benchmark create mode 100644 benchmark/micro/snapshot_performance/snapshot_no_pin_filter.benchmark create mode 100644 benchmark/micro/snapshot_performance/snapshot_pin.benchmark create mode 100644 benchmark/micro/snapshot_performance/snapshot_pin_filter.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/load.sql create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q01.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q02.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q03.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q04.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q05.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q06.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q07.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q08.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q09.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q10.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q11.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q12.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q13.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q14.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q15.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q16.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q17.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q18.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q19.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q20.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q21.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q22.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q23.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q24.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q25.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q26.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q27.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q28.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q29.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q30.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q31.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q32.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q33.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q34.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q35.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q36.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q37.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q38.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q39.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q40.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q41.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q42.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q43.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q44.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q45.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q46.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q47.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q48.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q49.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q50.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q51.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q52.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q53.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q54.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q55.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q56.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q57.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q58.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q59.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q60.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q61.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q62.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q63.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q64.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q65.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q66.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q67.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q68.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q69.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q70.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q71.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q72.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q73.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q74.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q75.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q76.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q77.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q78.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q79.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q80.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q81.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q82.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q83.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q84.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q85.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q86.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q87.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q88.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q89.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q90.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q91.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q92.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q93.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q94.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q95.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q96.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q97.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q98.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/q99.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/load.sql create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q01.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q02.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q03.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q04.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q05.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q06.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q07.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q08.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q09.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q10.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q11.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q12.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q13.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q14.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q15.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q16.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q17.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q18.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q19.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q20.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q21.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q22.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q23.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q24.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q25.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q26.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q27.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q28.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q29.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q30.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q31.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q32.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q33.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q34.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q35.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q36.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q37.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q38.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q39.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q40.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q41.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q42.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q43.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q44.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q45.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q46.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q47.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q48.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q49.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q50.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q51.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q52.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q53.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q54.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q55.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q56.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q57.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q58.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q59.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q60.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q61.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q62.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q63.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q64.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q65.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q66.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q67.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q68.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q69.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q70.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q71.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q72.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q73.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q74.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q75.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q76.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q77.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q78.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q79.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q80.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q81.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q82.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q83.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q84.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q85.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q86.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q87.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q88.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q89.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q90.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q91.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q92.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q93.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q94.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q95.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q96.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q97.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q98.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/q99.benchmark create mode 100644 benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in create mode 100644 benchmark/tpch/sf1/local/delta_attach/load.sql create mode 100644 benchmark/tpch/sf1/local/delta_attach/q01.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q02.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q03.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q04.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q05.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q06.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q07.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q08.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q09.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q10.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q11.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q12.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q13.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q14.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q15.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q16.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q17.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q18.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q19.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q20.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q21.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/q22.benchmark create mode 100644 benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in create mode 100644 src/include/storage/delta_catalog.hpp create mode 100644 src/include/storage/delta_schema_entry.hpp create mode 100644 src/include/storage/delta_table_entry.hpp create mode 100644 src/include/storage/delta_transaction.hpp create mode 100644 src/include/storage/delta_transaction_manager.hpp create mode 100644 src/storage/delta_catalog.cpp create mode 100644 src/storage/delta_schema_entry.cpp create mode 100644 src/storage/delta_table_entry.cpp create mode 100644 src/storage/delta_transaction.cpp create mode 100644 src/storage/delta_transaction_manager.cpp create mode 100644 test/sql/dat/attach.test diff --git a/.github/regression/micro.csv b/.github/regression/micro.csv new file mode 100644 index 0000000..2a4ef0f --- /dev/null +++ b/.github/regression/micro.csv @@ -0,0 +1,5 @@ +benchmark/micro/snapshot_performance/delta_scan.benchmark +benchmark/micro/snapshot_performance/snapshot_no_pin.benchmark +benchmark/micro/snapshot_performance/snapshot_no_pin_filter.benchmark +benchmark/micro/snapshot_performance/snapshot_pin.benchmark +benchmark/micro/snapshot_performance/snapshot_pin_filter.benchmark \ No newline at end of file diff --git a/.github/workflows/LocalTesting.yml b/.github/workflows/LocalTesting.yml index 7735508..fe2fe02 100644 --- a/.github/workflows/LocalTesting.yml +++ b/.github/workflows/LocalTesting.yml @@ -288,6 +288,12 @@ jobs: run: | python ./duckdb/scripts/regression_test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/tpcds_sf1_local.csv --verbose --threads=2 --root-dir=. + - name: Regression Test Micro + if: always() + shell: bash + run: | + python ./duckdb/scripts/regression_test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/micro.csv --verbose --threads=2 --root-dir=. + - name: Test benchmark makefile shell: bash run: | diff --git a/.gitignore b/.gitignore index bc1caa6..e9e3e7f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,5 @@ test/python/__pycache__/ data/generated __azurite*__.json __blobstorage__ -.venv +venv .vscode \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index f4f9267..fd9255d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,13 @@ set(EXTENSION_SOURCES src/delta_extension.cpp src/delta_functions.cpp src/delta_utils.cpp - src/functions/delta_scan.cpp) + src/functions/delta_scan.cpp + src/storage/delta_catalog.cpp + src/storage/delta_schema_entry.cpp + src/storage/delta_table_entry.cpp + src/storage/delta_transaction.cpp + src/storage/delta_transaction_manager.cpp +) ### Custom config # TODO: figure out if we really need this? diff --git a/benchmark/benchmark.Makefile b/benchmark/benchmark.Makefile index fc59109..4387d5e 100644 --- a/benchmark/benchmark.Makefile +++ b/benchmark/benchmark.Makefile @@ -26,6 +26,8 @@ plot: # TPCH SF1 on delta table bench-run-tpch-sf1-delta: bench-output-dir ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpch/sf1/local/delta/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpch-sf1-delta.csv +bench-run-tpch-sf1-delta-attach: bench-output-dir + ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpch/sf1/local/delta_attach/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpch-sf1-delta-attach.csv # TPCH SF1 on parquet files bench-run-tpch-sf1-parquet: bench-output-dir ./build/release/benchmark/benchmark_runner 'benchmark/tpch/sf1-parquet/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpch-sf1-parquet.csv @@ -33,7 +35,7 @@ bench-run-tpch-sf1-parquet: bench-output-dir bench-run-tpch-sf1-duckdb: bench-output-dir ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpch/sf1/local/duckdb/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpch-sf1-duckdb.csv # COMPARES TPCH SF1 on parquet file vs on delta files vs on duckdb files -bench-run-tpch-sf1: bench-run-tpch-sf1-delta bench-run-tpch-sf1-parquet +bench-run-tpch-sf1: bench-run-tpch-sf1-delta bench-run-tpch-sf1-parquet bench-run-tpch-sf1-attach ### # TPCDS @@ -42,6 +44,10 @@ bench-run-tpch-sf1: bench-run-tpch-sf1-delta bench-run-tpch-sf1-parquet # TPCDS SF1 on delta table bench-run-tpcds-sf1-delta: bench-output-dir ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpcds/sf1/$(IO_MODE)/delta/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpcds-sf1-delta-$(IO_MODE).csv +bench-run-tpcds-sf1-delta-attach: bench-output-dir + ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpcds/sf1/$(IO_MODE)/delta_attach/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpcds-sf1-delta-attach-$(IO_MODE).csv +bench-run-tpcds-sf1-delta-attach-pin: bench-output-dir + ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpcds/sf1/$(IO_MODE)/delta_attach_pin/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpcds-sf1-delta-attach-pin-$(IO_MODE).csv # TPCDS SF1 on parquet files bench-run-tpcds-sf1-parquet: bench-output-dir ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpcds/sf1/$(IO_MODE)/parquet/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpcds-sf1-parquet-$(IO_MODE).csv @@ -50,4 +56,11 @@ bench-run-tpcds-sf1-duckdb: bench-output-dir ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpcds/sf1/$(IO_MODE)/duckdb/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpcds-sf1-duckdb-$(IO_MODE).csv # COMPARES TPCDS SF1 on parquet file vs on delta files -bench-run-tpcds-sf1: bench-run-tpcds-sf1-delta bench-run-tpcds-sf1-parquet bench-run-tpcds-sf1-duckdb +bench-run-tpcds-sf1: bench-run-tpcds-sf1-delta bench-run-tpcds-sf1-parquet bench-run-tpcds-sf1-duckdb bench-run-tpcds-sf1-delta-attach bench-run-tpcds-sf1-delta-attach-pin + +### +# MICRO +### + +bench-run-snapshot-performance: bench-output-dir + ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/micro/snapshot_performance/.*' 2>&1 | tee benchmark_results/snapshot-performance.csv diff --git a/benchmark/micro/snapshot_performance/delta_scan.benchmark b/benchmark/micro/snapshot_performance/delta_scan.benchmark new file mode 100644 index 0000000..f6d4502 --- /dev/null +++ b/benchmark/micro/snapshot_performance/delta_scan.benchmark @@ -0,0 +1,16 @@ +# name: benchmark/micro/snapshot_performance/delta_scan.benchmark +# description: Reference result to compare attach functions to +# group: [aggregate] + +name delta_scan reference +group snapshot_performance + +require delta + +require parquet + +run +SELECT COUNT(*) FROM delta_scan('./data/generated/delta_rs_tpch_sf1_100_splits/lineitem/delta_lake') + +result I +6001215 \ No newline at end of file diff --git a/benchmark/micro/snapshot_performance/delta_scan_filter.benchmark b/benchmark/micro/snapshot_performance/delta_scan_filter.benchmark new file mode 100644 index 0000000..f97dce5 --- /dev/null +++ b/benchmark/micro/snapshot_performance/delta_scan_filter.benchmark @@ -0,0 +1,16 @@ +# name: benchmark/micro/snapshot_performance/delta_scan.benchmark +# description: Reference result to compare attach functions to +# group: [aggregate] + +name delta_scan reference +group snapshot_performance + +require delta + +require parquet + +run +SELECT COUNT(*) FROM delta_scan('./data/generated/delta_rs_tpch_sf1_100_splits/lineitem/delta_lake') where l_orderkey is not null + +result I +6001215 \ No newline at end of file diff --git a/benchmark/micro/snapshot_performance/snapshot_no_pin.benchmark b/benchmark/micro/snapshot_performance/snapshot_no_pin.benchmark new file mode 100644 index 0000000..4ec17f3 --- /dev/null +++ b/benchmark/micro/snapshot_performance/snapshot_no_pin.benchmark @@ -0,0 +1,19 @@ +# name: benchmark/micro/snapshot_performance/snapshot_no_pin.benchmark +# description: Performance of reading from a table with many log entries +# group: [aggregate] + +name Snapshot no pin +group snapshot_performance + +require delta + +require parquet + +load +ATTACH './data/generated/delta_rs_tpch_sf1_100_splits/lineitem/delta_lake' as lineitem_no_pin (TYPE delta); + +run +SELECT COUNT(*) FROM lineitem_no_pin + +result I +6001215 \ No newline at end of file diff --git a/benchmark/micro/snapshot_performance/snapshot_no_pin_filter.benchmark b/benchmark/micro/snapshot_performance/snapshot_no_pin_filter.benchmark new file mode 100644 index 0000000..f24e1ab --- /dev/null +++ b/benchmark/micro/snapshot_performance/snapshot_no_pin_filter.benchmark @@ -0,0 +1,19 @@ +# name: benchmark/micro/snapshot_performance/snapshot_no_pin_filter.benchmark +# description: Performance of reading from a table with many log entries +# group: [aggregate] + +name Snapshot no pin filter +group snapshot_performance + +require delta + +require parquet + +load +ATTACH './data/generated/delta_rs_tpch_sf1_100_splits/lineitem/delta_lake' as lineitem_no_pin (TYPE delta); + +run +SELECT COUNT(*) FROM lineitem_no_pin where l_orderkey is not null + +result I +6001215 \ No newline at end of file diff --git a/benchmark/micro/snapshot_performance/snapshot_pin.benchmark b/benchmark/micro/snapshot_performance/snapshot_pin.benchmark new file mode 100644 index 0000000..3e4dbaf --- /dev/null +++ b/benchmark/micro/snapshot_performance/snapshot_pin.benchmark @@ -0,0 +1,19 @@ +# name: benchmark/micro/snapshot_performance/snapshot_pin.benchmark +# description: Performance of reading from a table with many log entries +# group: [aggregate] + +name Snapshot pin +group snapshot_performance + +require delta + +require parquet + +load +ATTACH './data/generated/delta_rs_tpch_sf1_100_splits/lineitem/delta_lake' as lineitem_pin (TYPE delta, PIN_SNAPSHOT); + +run +SELECT COUNT(*) FROM lineitem_pin + +result I +6001215 \ No newline at end of file diff --git a/benchmark/micro/snapshot_performance/snapshot_pin_filter.benchmark b/benchmark/micro/snapshot_performance/snapshot_pin_filter.benchmark new file mode 100644 index 0000000..ee74eae --- /dev/null +++ b/benchmark/micro/snapshot_performance/snapshot_pin_filter.benchmark @@ -0,0 +1,19 @@ +# name: benchmark/micro/snapshot_performance/snapshot_pin_filter.benchmark +# description: Performance of reading from a table with many log entries +# group: [aggregate] + +name Snapshot pin filter +group snapshot_performance + +require delta + +require parquet + +load +ATTACH './data/generated/delta_rs_tpch_sf1_100_splits/lineitem/delta_lake' as lineitem_pin (TYPE delta, PIN_SNAPSHOT); + +run +SELECT COUNT(*) FROM lineitem_pin where l_orderkey is not null + +result I +6001215 \ No newline at end of file diff --git a/benchmark/tpcds/sf1/local/delta_attach/load.sql b/benchmark/tpcds/sf1/local/delta_attach/load.sql new file mode 100644 index 0000000..3acd7b5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/load.sql @@ -0,0 +1,24 @@ +ATTACH './data/generated/tpcds_sf1/call_center/delta_lake' as call_center (TYPE delta); +ATTACH './data/generated/tpcds_sf1/catalog_page/delta_lake' as catalog_page (TYPE delta); +ATTACH './data/generated/tpcds_sf1/catalog_returns/delta_lake' as catalog_returns (TYPE delta); +ATTACH './data/generated/tpcds_sf1/catalog_sales/delta_lake' as catalog_sales (TYPE delta); +ATTACH './data/generated/tpcds_sf1/customer/delta_lake' as customer (TYPE delta); +ATTACH './data/generated/tpcds_sf1/customer_demographics/delta_lake' as customer_demographics (TYPE delta); +ATTACH './data/generated/tpcds_sf1/customer_address/delta_lake' as customer_address (TYPE delta); +ATTACH './data/generated/tpcds_sf1/date_dim/delta_lake' as date_dim (TYPE delta); +ATTACH './data/generated/tpcds_sf1/household_demographics/delta_lake' as household_demographics (TYPE delta); +ATTACH './data/generated/tpcds_sf1/inventory/delta_lake' as inventory (TYPE delta); +ATTACH './data/generated/tpcds_sf1/income_band/delta_lake' as income_band (TYPE delta); +ATTACH './data/generated/tpcds_sf1/item/delta_lake' as item (TYPE delta); +ATTACH './data/generated/tpcds_sf1/promotion/delta_lake' as promotion (TYPE delta); +ATTACH './data/generated/tpcds_sf1/reason/delta_lake' as reason (TYPE delta); +ATTACH './data/generated/tpcds_sf1/ship_mode/delta_lake' as ship_mode (TYPE delta); +ATTACH './data/generated/tpcds_sf1/store/delta_lake' as store (TYPE delta); +ATTACH './data/generated/tpcds_sf1/store_returns/delta_lake' as store_returns (TYPE delta); +ATTACH './data/generated/tpcds_sf1/store_sales/delta_lake' as store_sales (TYPE delta); +ATTACH './data/generated/tpcds_sf1/time_dim/delta_lake' as time_dim (TYPE delta); +ATTACH './data/generated/tpcds_sf1/warehouse/delta_lake' as warehouse (TYPE delta); +ATTACH './data/generated/tpcds_sf1/web_page/delta_lake' as web_page (TYPE delta); +ATTACH './data/generated/tpcds_sf1/web_returns/delta_lake' as web_returns (TYPE delta); +ATTACH './data/generated/tpcds_sf1/web_sales/delta_lake' as web_sales (TYPE delta); +ATTACH './data/generated/tpcds_sf1/web_site/delta_lake' as web_site (TYPE delta); \ No newline at end of file diff --git a/benchmark/tpcds/sf1/local/delta_attach/q01.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q01.benchmark new file mode 100644 index 0000000..36a66b1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q01.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q01.benchmark +# description: Run query 01 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=1 +QUERY_NUMBER_PADDED=01 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q02.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q02.benchmark new file mode 100644 index 0000000..62a0ca0 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q02.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q02.benchmark +# description: Run query 02 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=2 +QUERY_NUMBER_PADDED=02 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q03.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q03.benchmark new file mode 100644 index 0000000..830f785 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q03.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q03.benchmark +# description: Run query 03 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=3 +QUERY_NUMBER_PADDED=03 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q04.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q04.benchmark new file mode 100644 index 0000000..df53a2b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q04.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q04.benchmark +# description: Run query 04 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=4 +QUERY_NUMBER_PADDED=04 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q05.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q05.benchmark new file mode 100644 index 0000000..aae5d6c --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q05.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q05.benchmark +# description: Run query 05 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=5 +QUERY_NUMBER_PADDED=05 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q06.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q06.benchmark new file mode 100644 index 0000000..f6ec98b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q06.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q06.benchmark +# description: Run query 06 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=6 +QUERY_NUMBER_PADDED=06 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q07.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q07.benchmark new file mode 100644 index 0000000..1e2563b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q07.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q07.benchmark +# description: Run query 07 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=7 +QUERY_NUMBER_PADDED=07 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q08.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q08.benchmark new file mode 100644 index 0000000..26c426a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q08.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q08.benchmark +# description: Run query 08 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=8 +QUERY_NUMBER_PADDED=08 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q09.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q09.benchmark new file mode 100644 index 0000000..c5a388a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q09.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q09.benchmark +# description: Run query 09 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=9 +QUERY_NUMBER_PADDED=09 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q10.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q10.benchmark new file mode 100644 index 0000000..627c022 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q10.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q10.benchmark +# description: Run query 10 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=10 +QUERY_NUMBER_PADDED=10 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q11.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q11.benchmark new file mode 100644 index 0000000..36909cd --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q11.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q11.benchmark +# description: Run query 11 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=11 +QUERY_NUMBER_PADDED=11 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q12.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q12.benchmark new file mode 100644 index 0000000..0e26df5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q12.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q12.benchmark +# description: Run query 12 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=12 +QUERY_NUMBER_PADDED=12 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q13.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q13.benchmark new file mode 100644 index 0000000..fad0aed --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q13.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q13.benchmark +# description: Run query 13 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=13 +QUERY_NUMBER_PADDED=13 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q14.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q14.benchmark new file mode 100644 index 0000000..bbb12a3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q14.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q14.benchmark +# description: Run query 14 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=14 +QUERY_NUMBER_PADDED=14 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q15.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q15.benchmark new file mode 100644 index 0000000..b5ae728 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q15.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q15.benchmark +# description: Run query 15 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=15 +QUERY_NUMBER_PADDED=15 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q16.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q16.benchmark new file mode 100644 index 0000000..e3f7494 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q16.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q16.benchmark +# description: Run query 16 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=16 +QUERY_NUMBER_PADDED=16 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q17.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q17.benchmark new file mode 100644 index 0000000..a15c322 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q17.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q17.benchmark +# description: Run query 17 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=17 +QUERY_NUMBER_PADDED=17 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q18.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q18.benchmark new file mode 100644 index 0000000..b176fcc --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q18.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q18.benchmark +# description: Run query 18 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=18 +QUERY_NUMBER_PADDED=18 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q19.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q19.benchmark new file mode 100644 index 0000000..d53f444 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q19.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q19.benchmark +# description: Run query 19 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=19 +QUERY_NUMBER_PADDED=19 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q20.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q20.benchmark new file mode 100644 index 0000000..7479dea --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q20.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q20.benchmark +# description: Run query 20 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=20 +QUERY_NUMBER_PADDED=20 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q21.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q21.benchmark new file mode 100644 index 0000000..0ba2492 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q21.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q21.benchmark +# description: Run query 21 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=21 +QUERY_NUMBER_PADDED=21 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q22.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q22.benchmark new file mode 100644 index 0000000..458432c --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q22.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q22.benchmark +# description: Run query 22 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=22 +QUERY_NUMBER_PADDED=22 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q23.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q23.benchmark new file mode 100644 index 0000000..c0b5fff --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q23.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q23.benchmark +# description: Run query 23 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=23 +QUERY_NUMBER_PADDED=23 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q24.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q24.benchmark new file mode 100644 index 0000000..c0c0c9b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q24.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q24.benchmark +# description: Run query 24 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=24 +QUERY_NUMBER_PADDED=24 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q25.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q25.benchmark new file mode 100644 index 0000000..60e8e71 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q25.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q25.benchmark +# description: Run query 25 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=25 +QUERY_NUMBER_PADDED=25 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q26.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q26.benchmark new file mode 100644 index 0000000..86b5909 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q26.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q26.benchmark +# description: Run query 26 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=26 +QUERY_NUMBER_PADDED=26 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q27.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q27.benchmark new file mode 100644 index 0000000..6cc1dd2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q27.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q27.benchmark +# description: Run query 27 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=27 +QUERY_NUMBER_PADDED=27 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q28.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q28.benchmark new file mode 100644 index 0000000..1753fca --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q28.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q28.benchmark +# description: Run query 28 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=28 +QUERY_NUMBER_PADDED=28 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q29.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q29.benchmark new file mode 100644 index 0000000..52e04c2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q29.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q29.benchmark +# description: Run query 29 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=29 +QUERY_NUMBER_PADDED=29 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q30.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q30.benchmark new file mode 100644 index 0000000..ed21eb1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q30.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q30.benchmark +# description: Run query 30 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=30 +QUERY_NUMBER_PADDED=30 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q31.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q31.benchmark new file mode 100644 index 0000000..cdfce45 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q31.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q31.benchmark +# description: Run query 31 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=31 +QUERY_NUMBER_PADDED=31 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q32.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q32.benchmark new file mode 100644 index 0000000..fea4738 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q32.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q32.benchmark +# description: Run query 32 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=32 +QUERY_NUMBER_PADDED=32 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q33.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q33.benchmark new file mode 100644 index 0000000..1cd8f37 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q33.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q33.benchmark +# description: Run query 33 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=33 +QUERY_NUMBER_PADDED=33 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q34.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q34.benchmark new file mode 100644 index 0000000..be18764 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q34.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q34.benchmark +# description: Run query 34 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=34 +QUERY_NUMBER_PADDED=34 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q35.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q35.benchmark new file mode 100644 index 0000000..1c22f98 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q35.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q35.benchmark +# description: Run query 35 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=35 +QUERY_NUMBER_PADDED=35 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q36.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q36.benchmark new file mode 100644 index 0000000..ea57684 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q36.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q36.benchmark +# description: Run query 36 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=36 +QUERY_NUMBER_PADDED=36 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q37.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q37.benchmark new file mode 100644 index 0000000..0a4e760 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q37.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q37.benchmark +# description: Run query 37 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=37 +QUERY_NUMBER_PADDED=37 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q38.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q38.benchmark new file mode 100644 index 0000000..1dd0897 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q38.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q38.benchmark +# description: Run query 38 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=38 +QUERY_NUMBER_PADDED=38 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q39.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q39.benchmark new file mode 100644 index 0000000..5cb5b1b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q39.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q39.benchmark +# description: Run query 39 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=39 +QUERY_NUMBER_PADDED=39 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q40.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q40.benchmark new file mode 100644 index 0000000..0708d81 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q40.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q40.benchmark +# description: Run query 40 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=40 +QUERY_NUMBER_PADDED=40 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q41.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q41.benchmark new file mode 100644 index 0000000..83e027a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q41.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q41.benchmark +# description: Run query 41 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=41 +QUERY_NUMBER_PADDED=41 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q42.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q42.benchmark new file mode 100644 index 0000000..051fe20 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q42.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q42.benchmark +# description: Run query 42 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=42 +QUERY_NUMBER_PADDED=42 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q43.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q43.benchmark new file mode 100644 index 0000000..4a1c981 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q43.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q43.benchmark +# description: Run query 43 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=43 +QUERY_NUMBER_PADDED=43 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q44.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q44.benchmark new file mode 100644 index 0000000..42c2a2b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q44.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q44.benchmark +# description: Run query 44 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=44 +QUERY_NUMBER_PADDED=44 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q45.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q45.benchmark new file mode 100644 index 0000000..fc25799 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q45.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q45.benchmark +# description: Run query 45 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=45 +QUERY_NUMBER_PADDED=45 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q46.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q46.benchmark new file mode 100644 index 0000000..bed3d26 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q46.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q46.benchmark +# description: Run query 46 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=46 +QUERY_NUMBER_PADDED=46 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q47.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q47.benchmark new file mode 100644 index 0000000..fd4631e --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q47.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q47.benchmark +# description: Run query 47 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=47 +QUERY_NUMBER_PADDED=47 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q48.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q48.benchmark new file mode 100644 index 0000000..f23dcc2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q48.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q48.benchmark +# description: Run query 48 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=48 +QUERY_NUMBER_PADDED=48 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q49.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q49.benchmark new file mode 100644 index 0000000..18288fb --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q49.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q49.benchmark +# description: Run query 49 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=49 +QUERY_NUMBER_PADDED=49 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q50.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q50.benchmark new file mode 100644 index 0000000..40eb2cb --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q50.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q50.benchmark +# description: Run query 50 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=50 +QUERY_NUMBER_PADDED=50 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q51.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q51.benchmark new file mode 100644 index 0000000..1e0357b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q51.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q51.benchmark +# description: Run query 51 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=51 +QUERY_NUMBER_PADDED=51 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q52.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q52.benchmark new file mode 100644 index 0000000..f0eee1e --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q52.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q52.benchmark +# description: Run query 52 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=52 +QUERY_NUMBER_PADDED=52 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q53.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q53.benchmark new file mode 100644 index 0000000..a4469ee --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q53.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q53.benchmark +# description: Run query 53 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=53 +QUERY_NUMBER_PADDED=53 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q54.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q54.benchmark new file mode 100644 index 0000000..ab97b6a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q54.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q54.benchmark +# description: Run query 54 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=54 +QUERY_NUMBER_PADDED=54 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q55.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q55.benchmark new file mode 100644 index 0000000..784ddb5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q55.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q55.benchmark +# description: Run query 55 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=55 +QUERY_NUMBER_PADDED=55 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q56.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q56.benchmark new file mode 100644 index 0000000..c9e6305 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q56.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q56.benchmark +# description: Run query 56 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=56 +QUERY_NUMBER_PADDED=56 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q57.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q57.benchmark new file mode 100644 index 0000000..97a9f31 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q57.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q57.benchmark +# description: Run query 57 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=57 +QUERY_NUMBER_PADDED=57 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q58.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q58.benchmark new file mode 100644 index 0000000..c33493b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q58.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q58.benchmark +# description: Run query 58 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=58 +QUERY_NUMBER_PADDED=58 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q59.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q59.benchmark new file mode 100644 index 0000000..d8c036b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q59.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q59.benchmark +# description: Run query 59 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=59 +QUERY_NUMBER_PADDED=59 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q60.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q60.benchmark new file mode 100644 index 0000000..1918bd5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q60.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q60.benchmark +# description: Run query 60 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=60 +QUERY_NUMBER_PADDED=60 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q61.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q61.benchmark new file mode 100644 index 0000000..32f762d --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q61.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q61.benchmark +# description: Run query 61 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=61 +QUERY_NUMBER_PADDED=61 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q62.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q62.benchmark new file mode 100644 index 0000000..9a373f1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q62.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q62.benchmark +# description: Run query 62 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=62 +QUERY_NUMBER_PADDED=62 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q63.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q63.benchmark new file mode 100644 index 0000000..e7f6b2f --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q63.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q63.benchmark +# description: Run query 63 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=63 +QUERY_NUMBER_PADDED=63 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q64.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q64.benchmark new file mode 100644 index 0000000..80034a7 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q64.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q64.benchmark +# description: Run query 64 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=64 +QUERY_NUMBER_PADDED=64 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q65.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q65.benchmark new file mode 100644 index 0000000..c128a3e --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q65.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q65.benchmark +# description: Run query 65 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=65 +QUERY_NUMBER_PADDED=65 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q66.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q66.benchmark new file mode 100644 index 0000000..587aa3d --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q66.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q66.benchmark +# description: Run query 66 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=66 +QUERY_NUMBER_PADDED=66 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q67.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q67.benchmark new file mode 100644 index 0000000..6e4d504 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q67.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q67.benchmark +# description: Run query 67 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=67 +QUERY_NUMBER_PADDED=67 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q68.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q68.benchmark new file mode 100644 index 0000000..8f9b7de --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q68.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q68.benchmark +# description: Run query 68 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=68 +QUERY_NUMBER_PADDED=68 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q69.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q69.benchmark new file mode 100644 index 0000000..8027996 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q69.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q69.benchmark +# description: Run query 69 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=69 +QUERY_NUMBER_PADDED=69 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q70.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q70.benchmark new file mode 100644 index 0000000..f64fc6e --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q70.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q70.benchmark +# description: Run query 70 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=70 +QUERY_NUMBER_PADDED=70 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q71.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q71.benchmark new file mode 100644 index 0000000..e34c7b5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q71.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q71.benchmark +# description: Run query 71 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=71 +QUERY_NUMBER_PADDED=71 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q72.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q72.benchmark new file mode 100644 index 0000000..bedf26e --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q72.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q72.benchmark +# description: Run query 72 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=72 +QUERY_NUMBER_PADDED=72 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q73.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q73.benchmark new file mode 100644 index 0000000..a53877d --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q73.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q73.benchmark +# description: Run query 73 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=73 +QUERY_NUMBER_PADDED=73 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q74.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q74.benchmark new file mode 100644 index 0000000..da3dbd3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q74.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q74.benchmark +# description: Run query 74 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=74 +QUERY_NUMBER_PADDED=74 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q75.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q75.benchmark new file mode 100644 index 0000000..0970243 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q75.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q75.benchmark +# description: Run query 75 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=75 +QUERY_NUMBER_PADDED=75 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q76.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q76.benchmark new file mode 100644 index 0000000..3c1d28a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q76.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q76.benchmark +# description: Run query 76 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=76 +QUERY_NUMBER_PADDED=76 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q77.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q77.benchmark new file mode 100644 index 0000000..d7bc196 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q77.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q77.benchmark +# description: Run query 77 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=77 +QUERY_NUMBER_PADDED=77 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q78.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q78.benchmark new file mode 100644 index 0000000..6f5d6f2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q78.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q78.benchmark +# description: Run query 78 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=78 +QUERY_NUMBER_PADDED=78 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q79.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q79.benchmark new file mode 100644 index 0000000..1d1f213 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q79.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q79.benchmark +# description: Run query 79 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=79 +QUERY_NUMBER_PADDED=79 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q80.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q80.benchmark new file mode 100644 index 0000000..8245c3a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q80.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q80.benchmark +# description: Run query 80 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=80 +QUERY_NUMBER_PADDED=80 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q81.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q81.benchmark new file mode 100644 index 0000000..7f4595e --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q81.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q81.benchmark +# description: Run query 81 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=81 +QUERY_NUMBER_PADDED=81 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q82.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q82.benchmark new file mode 100644 index 0000000..fe631d4 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q82.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q82.benchmark +# description: Run query 82 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=82 +QUERY_NUMBER_PADDED=82 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q83.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q83.benchmark new file mode 100644 index 0000000..a0e776a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q83.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q83.benchmark +# description: Run query 83 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=83 +QUERY_NUMBER_PADDED=83 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q84.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q84.benchmark new file mode 100644 index 0000000..37b0eff --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q84.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q84.benchmark +# description: Run query 84 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=84 +QUERY_NUMBER_PADDED=84 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q85.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q85.benchmark new file mode 100644 index 0000000..335038c --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q85.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q85.benchmark +# description: Run query 85 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=85 +QUERY_NUMBER_PADDED=85 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q86.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q86.benchmark new file mode 100644 index 0000000..4eb4b7a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q86.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q86.benchmark +# description: Run query 86 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=86 +QUERY_NUMBER_PADDED=86 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q87.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q87.benchmark new file mode 100644 index 0000000..1247c5b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q87.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q87.benchmark +# description: Run query 87 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=87 +QUERY_NUMBER_PADDED=87 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q88.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q88.benchmark new file mode 100644 index 0000000..162bf62 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q88.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q88.benchmark +# description: Run query 88 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=88 +QUERY_NUMBER_PADDED=88 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q89.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q89.benchmark new file mode 100644 index 0000000..39823df --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q89.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q89.benchmark +# description: Run query 89 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=89 +QUERY_NUMBER_PADDED=89 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q90.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q90.benchmark new file mode 100644 index 0000000..ba0cedf --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q90.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q90.benchmark +# description: Run query 90 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=90 +QUERY_NUMBER_PADDED=90 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q91.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q91.benchmark new file mode 100644 index 0000000..b8e20a6 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q91.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q91.benchmark +# description: Run query 91 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=91 +QUERY_NUMBER_PADDED=91 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q92.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q92.benchmark new file mode 100644 index 0000000..21e2e16 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q92.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q92.benchmark +# description: Run query 92 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=92 +QUERY_NUMBER_PADDED=92 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q93.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q93.benchmark new file mode 100644 index 0000000..479c894 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q93.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q93.benchmark +# description: Run query 93 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=93 +QUERY_NUMBER_PADDED=93 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q94.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q94.benchmark new file mode 100644 index 0000000..0395902 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q94.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q94.benchmark +# description: Run query 94 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=94 +QUERY_NUMBER_PADDED=94 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q95.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q95.benchmark new file mode 100644 index 0000000..b268027 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q95.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q95.benchmark +# description: Run query 95 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=95 +QUERY_NUMBER_PADDED=95 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q96.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q96.benchmark new file mode 100644 index 0000000..b393858 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q96.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q96.benchmark +# description: Run query 96 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=96 +QUERY_NUMBER_PADDED=96 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q97.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q97.benchmark new file mode 100644 index 0000000..6793c9c --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q97.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q97.benchmark +# description: Run query 97 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=97 +QUERY_NUMBER_PADDED=97 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q98.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q98.benchmark new file mode 100644 index 0000000..88113c0 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q98.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q98.benchmark +# description: Run query 98 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=98 +QUERY_NUMBER_PADDED=98 diff --git a/benchmark/tpcds/sf1/local/delta_attach/q99.benchmark b/benchmark/tpcds/sf1/local/delta_attach/q99.benchmark new file mode 100644 index 0000000..13fc449 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/q99.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach/q99.benchmark +# description: Run query 99 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in +QUERY_NUMBER=99 +QUERY_NUMBER_PADDED=99 diff --git a/benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in b/benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in new file mode 100644 index 0000000..480092b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach/tpcds_sf1.benchmark.in @@ -0,0 +1,17 @@ +# name: ${FILE_PATH} +# description: ${DESCRIPTION} +# group: [tpcds-sf1] + +name DSQ${QUERY_NUMBER_PADDED} +group tpcds +subgroup sf1 + +require delta + +require parquet + +load benchmark/tpcds/sf1/local/delta_attach/load.sql + +run duckdb/extension/tpcds/dsdgen/queries/${QUERY_NUMBER_PADDED}.sql + +result duckdb/extension/tpcds/dsdgen/answers/sf1/${QUERY_NUMBER_PADDED}.csv diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/load.sql b/benchmark/tpcds/sf1/local/delta_attach_pin/load.sql new file mode 100644 index 0000000..065d09a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/load.sql @@ -0,0 +1,24 @@ +ATTACH './data/generated/tpcds_sf1/call_center/delta_lake' as call_center (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/catalog_page/delta_lake' as catalog_page (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/catalog_returns/delta_lake' as catalog_returns (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/catalog_sales/delta_lake' as catalog_sales (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/customer/delta_lake' as customer (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/customer_demographics/delta_lake' as customer_demographics (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/customer_address/delta_lake' as customer_address (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/date_dim/delta_lake' as date_dim (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/household_demographics/delta_lake' as household_demographics (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/inventory/delta_lake' as inventory (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/income_band/delta_lake' as income_band (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/item/delta_lake' as item (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/promotion/delta_lake' as promotion (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/reason/delta_lake' as reason (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/ship_mode/delta_lake' as ship_mode (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/store/delta_lake' as store (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/store_returns/delta_lake' as store_returns (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/store_sales/delta_lake' as store_sales (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/time_dim/delta_lake' as time_dim (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/warehouse/delta_lake' as warehouse (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/web_page/delta_lake' as web_page (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/web_returns/delta_lake' as web_returns (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/web_sales/delta_lake' as web_sales (TYPE delta, PIN_SNAPSHOT); +ATTACH './data/generated/tpcds_sf1/web_site/delta_lake' as web_site (TYPE delta, PIN_SNAPSHOT); \ No newline at end of file diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q01.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q01.benchmark new file mode 100644 index 0000000..fabac15 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q01.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q01.benchmark +# description: Run query 01 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=1 +QUERY_NUMBER_PADDED=01 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q02.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q02.benchmark new file mode 100644 index 0000000..7862a35 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q02.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q02.benchmark +# description: Run query 02 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=2 +QUERY_NUMBER_PADDED=02 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q03.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q03.benchmark new file mode 100644 index 0000000..a6e53ab --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q03.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q03.benchmark +# description: Run query 03 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=3 +QUERY_NUMBER_PADDED=03 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q04.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q04.benchmark new file mode 100644 index 0000000..ad4bb1d --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q04.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q04.benchmark +# description: Run query 04 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=4 +QUERY_NUMBER_PADDED=04 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q05.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q05.benchmark new file mode 100644 index 0000000..44daae0 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q05.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q05.benchmark +# description: Run query 05 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=5 +QUERY_NUMBER_PADDED=05 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q06.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q06.benchmark new file mode 100644 index 0000000..e4a0231 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q06.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q06.benchmark +# description: Run query 06 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=6 +QUERY_NUMBER_PADDED=06 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q07.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q07.benchmark new file mode 100644 index 0000000..4585bcc --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q07.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q07.benchmark +# description: Run query 07 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=7 +QUERY_NUMBER_PADDED=07 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q08.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q08.benchmark new file mode 100644 index 0000000..1a561d1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q08.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q08.benchmark +# description: Run query 08 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=8 +QUERY_NUMBER_PADDED=08 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q09.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q09.benchmark new file mode 100644 index 0000000..d906a6a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q09.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q09.benchmark +# description: Run query 09 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=9 +QUERY_NUMBER_PADDED=09 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q10.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q10.benchmark new file mode 100644 index 0000000..6903f11 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q10.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q10.benchmark +# description: Run query 10 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=10 +QUERY_NUMBER_PADDED=10 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q11.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q11.benchmark new file mode 100644 index 0000000..7ff3f46 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q11.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q11.benchmark +# description: Run query 11 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=11 +QUERY_NUMBER_PADDED=11 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q12.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q12.benchmark new file mode 100644 index 0000000..0f9cdbe --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q12.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q12.benchmark +# description: Run query 12 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=12 +QUERY_NUMBER_PADDED=12 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q13.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q13.benchmark new file mode 100644 index 0000000..1c2e511 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q13.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q13.benchmark +# description: Run query 13 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=13 +QUERY_NUMBER_PADDED=13 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q14.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q14.benchmark new file mode 100644 index 0000000..730ecbe --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q14.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q14.benchmark +# description: Run query 14 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=14 +QUERY_NUMBER_PADDED=14 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q15.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q15.benchmark new file mode 100644 index 0000000..92f872b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q15.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q15.benchmark +# description: Run query 15 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=15 +QUERY_NUMBER_PADDED=15 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q16.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q16.benchmark new file mode 100644 index 0000000..0b3c74f --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q16.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q16.benchmark +# description: Run query 16 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=16 +QUERY_NUMBER_PADDED=16 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q17.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q17.benchmark new file mode 100644 index 0000000..cb96118 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q17.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q17.benchmark +# description: Run query 17 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=17 +QUERY_NUMBER_PADDED=17 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q18.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q18.benchmark new file mode 100644 index 0000000..dc2d5f3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q18.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q18.benchmark +# description: Run query 18 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=18 +QUERY_NUMBER_PADDED=18 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q19.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q19.benchmark new file mode 100644 index 0000000..eec75af --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q19.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q19.benchmark +# description: Run query 19 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=19 +QUERY_NUMBER_PADDED=19 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q20.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q20.benchmark new file mode 100644 index 0000000..ace71c4 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q20.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q20.benchmark +# description: Run query 20 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=20 +QUERY_NUMBER_PADDED=20 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q21.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q21.benchmark new file mode 100644 index 0000000..bf79d67 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q21.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q21.benchmark +# description: Run query 21 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=21 +QUERY_NUMBER_PADDED=21 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q22.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q22.benchmark new file mode 100644 index 0000000..e6faf31 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q22.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q22.benchmark +# description: Run query 22 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=22 +QUERY_NUMBER_PADDED=22 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q23.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q23.benchmark new file mode 100644 index 0000000..68fd0a2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q23.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q23.benchmark +# description: Run query 23 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=23 +QUERY_NUMBER_PADDED=23 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q24.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q24.benchmark new file mode 100644 index 0000000..96de8d1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q24.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q24.benchmark +# description: Run query 24 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=24 +QUERY_NUMBER_PADDED=24 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q25.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q25.benchmark new file mode 100644 index 0000000..027fcf3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q25.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q25.benchmark +# description: Run query 25 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=25 +QUERY_NUMBER_PADDED=25 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q26.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q26.benchmark new file mode 100644 index 0000000..961b4ad --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q26.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q26.benchmark +# description: Run query 26 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=26 +QUERY_NUMBER_PADDED=26 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q27.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q27.benchmark new file mode 100644 index 0000000..b8bf0c1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q27.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q27.benchmark +# description: Run query 27 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=27 +QUERY_NUMBER_PADDED=27 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q28.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q28.benchmark new file mode 100644 index 0000000..624550a --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q28.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q28.benchmark +# description: Run query 28 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=28 +QUERY_NUMBER_PADDED=28 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q29.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q29.benchmark new file mode 100644 index 0000000..6174019 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q29.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q29.benchmark +# description: Run query 29 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=29 +QUERY_NUMBER_PADDED=29 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q30.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q30.benchmark new file mode 100644 index 0000000..d3230d4 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q30.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q30.benchmark +# description: Run query 30 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=30 +QUERY_NUMBER_PADDED=30 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q31.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q31.benchmark new file mode 100644 index 0000000..02f1ee3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q31.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q31.benchmark +# description: Run query 31 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=31 +QUERY_NUMBER_PADDED=31 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q32.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q32.benchmark new file mode 100644 index 0000000..a798c44 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q32.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q32.benchmark +# description: Run query 32 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=32 +QUERY_NUMBER_PADDED=32 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q33.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q33.benchmark new file mode 100644 index 0000000..420af50 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q33.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q33.benchmark +# description: Run query 33 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=33 +QUERY_NUMBER_PADDED=33 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q34.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q34.benchmark new file mode 100644 index 0000000..55998b5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q34.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q34.benchmark +# description: Run query 34 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=34 +QUERY_NUMBER_PADDED=34 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q35.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q35.benchmark new file mode 100644 index 0000000..9af5004 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q35.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q35.benchmark +# description: Run query 35 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=35 +QUERY_NUMBER_PADDED=35 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q36.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q36.benchmark new file mode 100644 index 0000000..7391980 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q36.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q36.benchmark +# description: Run query 36 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=36 +QUERY_NUMBER_PADDED=36 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q37.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q37.benchmark new file mode 100644 index 0000000..c6e6635 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q37.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q37.benchmark +# description: Run query 37 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=37 +QUERY_NUMBER_PADDED=37 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q38.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q38.benchmark new file mode 100644 index 0000000..703d1e7 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q38.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q38.benchmark +# description: Run query 38 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=38 +QUERY_NUMBER_PADDED=38 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q39.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q39.benchmark new file mode 100644 index 0000000..38c1957 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q39.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q39.benchmark +# description: Run query 39 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=39 +QUERY_NUMBER_PADDED=39 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q40.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q40.benchmark new file mode 100644 index 0000000..46fbc31 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q40.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q40.benchmark +# description: Run query 40 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=40 +QUERY_NUMBER_PADDED=40 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q41.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q41.benchmark new file mode 100644 index 0000000..0de449f --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q41.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q41.benchmark +# description: Run query 41 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=41 +QUERY_NUMBER_PADDED=41 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q42.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q42.benchmark new file mode 100644 index 0000000..453995f --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q42.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q42.benchmark +# description: Run query 42 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=42 +QUERY_NUMBER_PADDED=42 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q43.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q43.benchmark new file mode 100644 index 0000000..b1ce9a5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q43.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q43.benchmark +# description: Run query 43 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=43 +QUERY_NUMBER_PADDED=43 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q44.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q44.benchmark new file mode 100644 index 0000000..ffb4344 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q44.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q44.benchmark +# description: Run query 44 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=44 +QUERY_NUMBER_PADDED=44 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q45.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q45.benchmark new file mode 100644 index 0000000..1e2c35b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q45.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q45.benchmark +# description: Run query 45 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=45 +QUERY_NUMBER_PADDED=45 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q46.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q46.benchmark new file mode 100644 index 0000000..e51ed26 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q46.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q46.benchmark +# description: Run query 46 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=46 +QUERY_NUMBER_PADDED=46 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q47.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q47.benchmark new file mode 100644 index 0000000..4b62cb4 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q47.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q47.benchmark +# description: Run query 47 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=47 +QUERY_NUMBER_PADDED=47 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q48.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q48.benchmark new file mode 100644 index 0000000..d7ed70f --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q48.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q48.benchmark +# description: Run query 48 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=48 +QUERY_NUMBER_PADDED=48 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q49.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q49.benchmark new file mode 100644 index 0000000..224ed96 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q49.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q49.benchmark +# description: Run query 49 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=49 +QUERY_NUMBER_PADDED=49 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q50.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q50.benchmark new file mode 100644 index 0000000..39904e9 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q50.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q50.benchmark +# description: Run query 50 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=50 +QUERY_NUMBER_PADDED=50 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q51.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q51.benchmark new file mode 100644 index 0000000..693c7e2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q51.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q51.benchmark +# description: Run query 51 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=51 +QUERY_NUMBER_PADDED=51 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q52.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q52.benchmark new file mode 100644 index 0000000..54020c7 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q52.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q52.benchmark +# description: Run query 52 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=52 +QUERY_NUMBER_PADDED=52 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q53.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q53.benchmark new file mode 100644 index 0000000..158a5de --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q53.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q53.benchmark +# description: Run query 53 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=53 +QUERY_NUMBER_PADDED=53 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q54.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q54.benchmark new file mode 100644 index 0000000..48e4562 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q54.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q54.benchmark +# description: Run query 54 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=54 +QUERY_NUMBER_PADDED=54 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q55.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q55.benchmark new file mode 100644 index 0000000..6df4d49 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q55.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q55.benchmark +# description: Run query 55 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=55 +QUERY_NUMBER_PADDED=55 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q56.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q56.benchmark new file mode 100644 index 0000000..b84fb56 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q56.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q56.benchmark +# description: Run query 56 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=56 +QUERY_NUMBER_PADDED=56 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q57.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q57.benchmark new file mode 100644 index 0000000..c4a69a1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q57.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q57.benchmark +# description: Run query 57 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=57 +QUERY_NUMBER_PADDED=57 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q58.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q58.benchmark new file mode 100644 index 0000000..ebe0655 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q58.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q58.benchmark +# description: Run query 58 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=58 +QUERY_NUMBER_PADDED=58 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q59.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q59.benchmark new file mode 100644 index 0000000..0a81d8b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q59.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q59.benchmark +# description: Run query 59 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=59 +QUERY_NUMBER_PADDED=59 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q60.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q60.benchmark new file mode 100644 index 0000000..986d2df --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q60.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q60.benchmark +# description: Run query 60 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=60 +QUERY_NUMBER_PADDED=60 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q61.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q61.benchmark new file mode 100644 index 0000000..fdb8bb7 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q61.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q61.benchmark +# description: Run query 61 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=61 +QUERY_NUMBER_PADDED=61 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q62.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q62.benchmark new file mode 100644 index 0000000..b4454e7 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q62.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q62.benchmark +# description: Run query 62 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=62 +QUERY_NUMBER_PADDED=62 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q63.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q63.benchmark new file mode 100644 index 0000000..72805e6 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q63.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q63.benchmark +# description: Run query 63 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=63 +QUERY_NUMBER_PADDED=63 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q64.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q64.benchmark new file mode 100644 index 0000000..a3b7267 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q64.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q64.benchmark +# description: Run query 64 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=64 +QUERY_NUMBER_PADDED=64 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q65.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q65.benchmark new file mode 100644 index 0000000..4c50bd9 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q65.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q65.benchmark +# description: Run query 65 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=65 +QUERY_NUMBER_PADDED=65 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q66.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q66.benchmark new file mode 100644 index 0000000..2e9ede8 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q66.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q66.benchmark +# description: Run query 66 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=66 +QUERY_NUMBER_PADDED=66 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q67.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q67.benchmark new file mode 100644 index 0000000..f50871c --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q67.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q67.benchmark +# description: Run query 67 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=67 +QUERY_NUMBER_PADDED=67 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q68.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q68.benchmark new file mode 100644 index 0000000..f2c8808 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q68.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q68.benchmark +# description: Run query 68 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=68 +QUERY_NUMBER_PADDED=68 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q69.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q69.benchmark new file mode 100644 index 0000000..7b7f4d2 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q69.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q69.benchmark +# description: Run query 69 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=69 +QUERY_NUMBER_PADDED=69 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q70.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q70.benchmark new file mode 100644 index 0000000..98d7bad --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q70.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q70.benchmark +# description: Run query 70 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=70 +QUERY_NUMBER_PADDED=70 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q71.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q71.benchmark new file mode 100644 index 0000000..ad7b7a9 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q71.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q71.benchmark +# description: Run query 71 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=71 +QUERY_NUMBER_PADDED=71 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q72.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q72.benchmark new file mode 100644 index 0000000..cb4496b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q72.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q72.benchmark +# description: Run query 72 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=72 +QUERY_NUMBER_PADDED=72 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q73.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q73.benchmark new file mode 100644 index 0000000..a291e47 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q73.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q73.benchmark +# description: Run query 73 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=73 +QUERY_NUMBER_PADDED=73 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q74.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q74.benchmark new file mode 100644 index 0000000..d470aa9 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q74.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q74.benchmark +# description: Run query 74 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=74 +QUERY_NUMBER_PADDED=74 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q75.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q75.benchmark new file mode 100644 index 0000000..8795c49 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q75.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q75.benchmark +# description: Run query 75 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=75 +QUERY_NUMBER_PADDED=75 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q76.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q76.benchmark new file mode 100644 index 0000000..a4082b6 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q76.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q76.benchmark +# description: Run query 76 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=76 +QUERY_NUMBER_PADDED=76 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q77.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q77.benchmark new file mode 100644 index 0000000..2ace6b6 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q77.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q77.benchmark +# description: Run query 77 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=77 +QUERY_NUMBER_PADDED=77 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q78.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q78.benchmark new file mode 100644 index 0000000..8c7e396 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q78.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q78.benchmark +# description: Run query 78 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=78 +QUERY_NUMBER_PADDED=78 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q79.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q79.benchmark new file mode 100644 index 0000000..b977a62 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q79.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q79.benchmark +# description: Run query 79 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=79 +QUERY_NUMBER_PADDED=79 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q80.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q80.benchmark new file mode 100644 index 0000000..67df3e5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q80.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q80.benchmark +# description: Run query 80 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=80 +QUERY_NUMBER_PADDED=80 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q81.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q81.benchmark new file mode 100644 index 0000000..d240ada --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q81.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q81.benchmark +# description: Run query 81 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=81 +QUERY_NUMBER_PADDED=81 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q82.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q82.benchmark new file mode 100644 index 0000000..e8f98c3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q82.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q82.benchmark +# description: Run query 82 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=82 +QUERY_NUMBER_PADDED=82 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q83.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q83.benchmark new file mode 100644 index 0000000..5508996 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q83.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q83.benchmark +# description: Run query 83 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=83 +QUERY_NUMBER_PADDED=83 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q84.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q84.benchmark new file mode 100644 index 0000000..05404d1 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q84.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q84.benchmark +# description: Run query 84 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=84 +QUERY_NUMBER_PADDED=84 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q85.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q85.benchmark new file mode 100644 index 0000000..46592c3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q85.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q85.benchmark +# description: Run query 85 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=85 +QUERY_NUMBER_PADDED=85 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q86.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q86.benchmark new file mode 100644 index 0000000..72ca931 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q86.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q86.benchmark +# description: Run query 86 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=86 +QUERY_NUMBER_PADDED=86 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q87.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q87.benchmark new file mode 100644 index 0000000..44525a3 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q87.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q87.benchmark +# description: Run query 87 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=87 +QUERY_NUMBER_PADDED=87 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q88.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q88.benchmark new file mode 100644 index 0000000..f6c7875 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q88.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q88.benchmark +# description: Run query 88 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=88 +QUERY_NUMBER_PADDED=88 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q89.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q89.benchmark new file mode 100644 index 0000000..2f9a540 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q89.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q89.benchmark +# description: Run query 89 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=89 +QUERY_NUMBER_PADDED=89 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q90.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q90.benchmark new file mode 100644 index 0000000..72193ac --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q90.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q90.benchmark +# description: Run query 90 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=90 +QUERY_NUMBER_PADDED=90 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q91.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q91.benchmark new file mode 100644 index 0000000..5706ce5 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q91.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q91.benchmark +# description: Run query 91 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=91 +QUERY_NUMBER_PADDED=91 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q92.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q92.benchmark new file mode 100644 index 0000000..582d72d --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q92.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q92.benchmark +# description: Run query 92 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=92 +QUERY_NUMBER_PADDED=92 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q93.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q93.benchmark new file mode 100644 index 0000000..15af12b --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q93.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q93.benchmark +# description: Run query 93 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=93 +QUERY_NUMBER_PADDED=93 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q94.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q94.benchmark new file mode 100644 index 0000000..3545dc4 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q94.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q94.benchmark +# description: Run query 94 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=94 +QUERY_NUMBER_PADDED=94 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q95.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q95.benchmark new file mode 100644 index 0000000..f230bba --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q95.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q95.benchmark +# description: Run query 95 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=95 +QUERY_NUMBER_PADDED=95 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q96.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q96.benchmark new file mode 100644 index 0000000..e721966 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q96.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q96.benchmark +# description: Run query 96 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=96 +QUERY_NUMBER_PADDED=96 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q97.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q97.benchmark new file mode 100644 index 0000000..fc40c93 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q97.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q97.benchmark +# description: Run query 97 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=97 +QUERY_NUMBER_PADDED=97 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q98.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q98.benchmark new file mode 100644 index 0000000..4a8bc99 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q98.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q98.benchmark +# description: Run query 98 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=98 +QUERY_NUMBER_PADDED=98 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/q99.benchmark b/benchmark/tpcds/sf1/local/delta_attach_pin/q99.benchmark new file mode 100644 index 0000000..ddec43c --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/q99.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpcds/sf1/local/delta_attach_pin/q99.benchmark +# description: Run query 99 from the TPC-DS benchmark +# group: [sf1] + +template benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in +QUERY_NUMBER=99 +QUERY_NUMBER_PADDED=99 diff --git a/benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in b/benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in new file mode 100644 index 0000000..db2f631 --- /dev/null +++ b/benchmark/tpcds/sf1/local/delta_attach_pin/tpcds_sf1.benchmark.in @@ -0,0 +1,17 @@ +# name: ${FILE_PATH} +# description: ${DESCRIPTION} +# group: [tpcds-sf1] + +name DSQ${QUERY_NUMBER_PADDED} +group tpcds +subgroup sf1 + +require delta + +require parquet + +load benchmark/tpcds/sf1/local/delta_attach_pin/load.sql + +run duckdb/extension/tpcds/dsdgen/queries/${QUERY_NUMBER_PADDED}.sql + +result duckdb/extension/tpcds/dsdgen/answers/sf1/${QUERY_NUMBER_PADDED}.csv diff --git a/benchmark/tpch/sf1/local/delta_attach/load.sql b/benchmark/tpch/sf1/local/delta_attach/load.sql new file mode 100644 index 0000000..cbeac72 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/load.sql @@ -0,0 +1,8 @@ +ATTACH './data/generated/tpch_sf1/customer/delta_lake' as customer (TYPE delta); +ATTACH './data/generated/tpch_sf1/lineitem/delta_lake' as lineitem (TYPE delta); +ATTACH './data/generated/tpch_sf1/nation/delta_lake' as nation (TYPE delta); +ATTACH './data/generated/tpch_sf1/orders/delta_lake' as orders (TYPE delta); +ATTACH './data/generated/tpch_sf1/part/delta_lake' as part (TYPE delta); +ATTACH './data/generated/tpch_sf1/partsupp/delta_lake' as partsupp (TYPE delta); +ATTACH './data/generated/tpch_sf1/region/delta_lake' as region (TYPE delta); +ATTACH './data/generated/tpch_sf1/supplier/delta_lake' as supplier (TYPE delta); \ No newline at end of file diff --git a/benchmark/tpch/sf1/local/delta_attach/q01.benchmark b/benchmark/tpch/sf1/local/delta_attach/q01.benchmark new file mode 100644 index 0000000..fc1f938 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q01.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q01.benchmark +# description: Run query 01 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=1 +QUERY_NUMBER_PADDED=01 diff --git a/benchmark/tpch/sf1/local/delta_attach/q02.benchmark b/benchmark/tpch/sf1/local/delta_attach/q02.benchmark new file mode 100644 index 0000000..84c3bbc --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q02.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q02.benchmark +# description: Run query 02 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=2 +QUERY_NUMBER_PADDED=02 diff --git a/benchmark/tpch/sf1/local/delta_attach/q03.benchmark b/benchmark/tpch/sf1/local/delta_attach/q03.benchmark new file mode 100644 index 0000000..18d2608 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q03.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q03.benchmark +# description: Run query 03 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=3 +QUERY_NUMBER_PADDED=03 diff --git a/benchmark/tpch/sf1/local/delta_attach/q04.benchmark b/benchmark/tpch/sf1/local/delta_attach/q04.benchmark new file mode 100644 index 0000000..a9ab91e --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q04.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q04.benchmark +# description: Run query 04 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=4 +QUERY_NUMBER_PADDED=04 diff --git a/benchmark/tpch/sf1/local/delta_attach/q05.benchmark b/benchmark/tpch/sf1/local/delta_attach/q05.benchmark new file mode 100644 index 0000000..d276a76 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q05.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q05.benchmark +# description: Run query 05 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=5 +QUERY_NUMBER_PADDED=05 diff --git a/benchmark/tpch/sf1/local/delta_attach/q06.benchmark b/benchmark/tpch/sf1/local/delta_attach/q06.benchmark new file mode 100644 index 0000000..a525c49 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q06.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q06.benchmark +# description: Run query 06 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=6 +QUERY_NUMBER_PADDED=06 diff --git a/benchmark/tpch/sf1/local/delta_attach/q07.benchmark b/benchmark/tpch/sf1/local/delta_attach/q07.benchmark new file mode 100644 index 0000000..42177a3 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q07.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q07.benchmark +# description: Run query 07 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=7 +QUERY_NUMBER_PADDED=07 diff --git a/benchmark/tpch/sf1/local/delta_attach/q08.benchmark b/benchmark/tpch/sf1/local/delta_attach/q08.benchmark new file mode 100644 index 0000000..3f4f74d --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q08.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q08.benchmark +# description: Run query 08 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=8 +QUERY_NUMBER_PADDED=08 diff --git a/benchmark/tpch/sf1/local/delta_attach/q09.benchmark b/benchmark/tpch/sf1/local/delta_attach/q09.benchmark new file mode 100644 index 0000000..cb80c45 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q09.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q09.benchmark +# description: Run query 09 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=9 +QUERY_NUMBER_PADDED=09 diff --git a/benchmark/tpch/sf1/local/delta_attach/q10.benchmark b/benchmark/tpch/sf1/local/delta_attach/q10.benchmark new file mode 100644 index 0000000..a800252 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q10.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q10.benchmark +# description: Run query 10 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=10 +QUERY_NUMBER_PADDED=10 diff --git a/benchmark/tpch/sf1/local/delta_attach/q11.benchmark b/benchmark/tpch/sf1/local/delta_attach/q11.benchmark new file mode 100644 index 0000000..11baed8 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q11.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q11.benchmark +# description: Run query 11 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=11 +QUERY_NUMBER_PADDED=11 diff --git a/benchmark/tpch/sf1/local/delta_attach/q12.benchmark b/benchmark/tpch/sf1/local/delta_attach/q12.benchmark new file mode 100644 index 0000000..e115292 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q12.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q12.benchmark +# description: Run query 12 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=12 +QUERY_NUMBER_PADDED=12 diff --git a/benchmark/tpch/sf1/local/delta_attach/q13.benchmark b/benchmark/tpch/sf1/local/delta_attach/q13.benchmark new file mode 100644 index 0000000..729c4f2 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q13.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q13.benchmark +# description: Run query 13 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=13 +QUERY_NUMBER_PADDED=13 diff --git a/benchmark/tpch/sf1/local/delta_attach/q14.benchmark b/benchmark/tpch/sf1/local/delta_attach/q14.benchmark new file mode 100644 index 0000000..923abb0 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q14.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q14.benchmark +# description: Run query 14 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=14 +QUERY_NUMBER_PADDED=14 diff --git a/benchmark/tpch/sf1/local/delta_attach/q15.benchmark b/benchmark/tpch/sf1/local/delta_attach/q15.benchmark new file mode 100644 index 0000000..c16240c --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q15.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q15.benchmark +# description: Run query 15 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=15 +QUERY_NUMBER_PADDED=15 diff --git a/benchmark/tpch/sf1/local/delta_attach/q16.benchmark b/benchmark/tpch/sf1/local/delta_attach/q16.benchmark new file mode 100644 index 0000000..83db3e0 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q16.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q16.benchmark +# description: Run query 16 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=16 +QUERY_NUMBER_PADDED=16 diff --git a/benchmark/tpch/sf1/local/delta_attach/q17.benchmark b/benchmark/tpch/sf1/local/delta_attach/q17.benchmark new file mode 100644 index 0000000..28dbc83 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q17.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q17.benchmark +# description: Run query 17 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=17 +QUERY_NUMBER_PADDED=17 diff --git a/benchmark/tpch/sf1/local/delta_attach/q18.benchmark b/benchmark/tpch/sf1/local/delta_attach/q18.benchmark new file mode 100644 index 0000000..1e969a7 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q18.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q18.benchmark +# description: Run query 18 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=18 +QUERY_NUMBER_PADDED=18 diff --git a/benchmark/tpch/sf1/local/delta_attach/q19.benchmark b/benchmark/tpch/sf1/local/delta_attach/q19.benchmark new file mode 100644 index 0000000..259c78a --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q19.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q19.benchmark +# description: Run query 19 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=19 +QUERY_NUMBER_PADDED=19 diff --git a/benchmark/tpch/sf1/local/delta_attach/q20.benchmark b/benchmark/tpch/sf1/local/delta_attach/q20.benchmark new file mode 100644 index 0000000..82d1c3a --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q20.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q20.benchmark +# description: Run query 20 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=20 +QUERY_NUMBER_PADDED=20 diff --git a/benchmark/tpch/sf1/local/delta_attach/q21.benchmark b/benchmark/tpch/sf1/local/delta_attach/q21.benchmark new file mode 100644 index 0000000..bd30f2a --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q21.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q21.benchmark +# description: Run query 21 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=21 +QUERY_NUMBER_PADDED=21 diff --git a/benchmark/tpch/sf1/local/delta_attach/q22.benchmark b/benchmark/tpch/sf1/local/delta_attach/q22.benchmark new file mode 100644 index 0000000..410457e --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/q22.benchmark @@ -0,0 +1,7 @@ +# name: benchmark/tpch/sf1/local/delta_attach/q22.benchmark +# description: Run query 22 from the TPC-H benchmark +# group: [sf1-parquet] + +template benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in +QUERY_NUMBER=22 +QUERY_NUMBER_PADDED=22 diff --git a/benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in b/benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in new file mode 100644 index 0000000..fb8c916 --- /dev/null +++ b/benchmark/tpch/sf1/local/delta_attach/tpch_sf1_delta.benchmark.in @@ -0,0 +1,17 @@ +# name: ${FILE_PATH} +# description: ${DESCRIPTION} +# group: [sf1] + +name Q${QUERY_NUMBER_PADDED} +group tpch +subgroup sf1 + +require delta + +require parquet + +load benchmark/tpch/sf1/local/delta_attach/load.sql + +run duckdb/extension/tpch/dbgen/queries/q${QUERY_NUMBER_PADDED}.sql + +result duckdb/extension/tpch/dbgen/answers/sf1/q${QUERY_NUMBER_PADDED}.csv \ No newline at end of file diff --git a/duckdb b/duckdb index f680b7d..9f3db54 160000 --- a/duckdb +++ b/duckdb @@ -1 +1 @@ -Subproject commit f680b7d08f56183391b581077d4baf589e1cc8bd +Subproject commit 9f3db54cc308f38afee235bd6b7bdf61142e4995 diff --git a/extension-ci-tools b/extension-ci-tools index f5594c6..b46e390 160000 --- a/extension-ci-tools +++ b/extension-ci-tools @@ -1 +1 @@ -Subproject commit f5594c61803daee122a5245afb817966e1a4545c +Subproject commit b46e39024cb2fc96fcec258a7a1304d510bbe914 diff --git a/scripts/generate_test_data.py b/scripts/generate_test_data.py index b817faa..e3ab444 100644 --- a/scripts/generate_test_data.py +++ b/scripts/generate_test_data.py @@ -32,7 +32,7 @@ def generate_test_data_delta_rs_multi(path, init, tables, splits = 1): os.makedirs(f"{generated_path}") - # First we write a DuckDB file TODO: this should go in 10 appends as well? + # First we write a DuckDB file TODO: this should go in N appends as well? con = duckdb.connect(f"{generated_path}/duckdb.db") con.sql(init) @@ -40,14 +40,21 @@ def generate_test_data_delta_rs_multi(path, init, tables, splits = 1): # Then we write the parquet files for table in tables: total_count = con.sql(f"select count(*) from ({table['query']})").fetchall()[0][0] - tuples_per_file = math.ceil(total_count / splits) + # At least 1 tuple per file + if total_count < splits: + splits = total_count + tuples_per_file = total_count // splits + remainder = total_count % splits file_no = 0 + write_from = 0 while file_no < splits: os.makedirs(f"{generated_path}/{table['name']}/parquet", exist_ok=True) # Write DuckDB's reference data - con.sql(f"COPY ({table['query']} where rowid >= {(file_no) * tuples_per_file} and rowid < {(file_no+1) * tuples_per_file}) to '{generated_path}/{table['name']}/parquet/data_{file_no}.parquet' (FORMAT parquet)") + write_to = write_from + tuples_per_file + (1 if file_no < remainder else 0) + con.sql(f"COPY ({table['query']} where rowid >= {write_from} and rowid < {write_to}) to '{generated_path}/{table['name']}/parquet/data_{file_no}.parquet' (FORMAT parquet)") file_no += 1 + write_from = write_to for table in tables: con = duckdb.connect(f"{generated_path}/duckdb.db") diff --git a/scripts/plot.py b/scripts/plot.py index 9090f3f..2ca01bc 100644 --- a/scripts/plot.py +++ b/scripts/plot.py @@ -5,6 +5,7 @@ parser = argparse.ArgumentParser(description='Plot the results in ./benchmark_results') parser.add_argument('-p','--pattern', help='Pattern to match result csv files to', required=False, default='*.csv') parser.add_argument('-w','--width', help='Width of graph, adjust to fit data', required=False, default=20) +parser.add_argument('-n','--name', help='name of the graph ', required=False, default='') args = vars(parser.parse_args()) ### Parse Query Results @@ -34,5 +35,5 @@ import numpy as np plt.rcParams["figure.figsize"] = [int(args['width']), 5] -fig = benchmark_results.pivot(index='benchmark', columns='config', values='timing').plot(kind='bar', title='', ylabel='runtime [s]').get_figure() +fig = benchmark_results.pivot(index='benchmark', columns='config', values='timing').plot(kind='bar', title=args['name'], ylabel='runtime [s]').get_figure() fig.savefig('benchmark_results/result.png') \ No newline at end of file diff --git a/src/delta_extension.cpp b/src/delta_extension.cpp index 1a316d9..ce650aa 100644 --- a/src/delta_extension.cpp +++ b/src/delta_extension.cpp @@ -6,14 +6,52 @@ #include "duckdb.hpp" #include "duckdb/common/exception.hpp" #include "duckdb/main/extension_util.hpp" +#include "duckdb/storage/storage_extension.hpp" +#include "storage/delta_catalog.hpp" +#include "storage/delta_transaction_manager.hpp" namespace duckdb { +static unique_ptr DeltaCatalogAttach(StorageExtensionInfo *storage_info, ClientContext &context, + AttachedDatabase &db, const string &name, AttachInfo &info, + AccessMode access_mode) { + + auto res = make_uniq(db, info.path, access_mode); + + for (const auto& option : info.options) { + if (StringUtil::Lower(option.first) == "pin_snapshot") { + res->use_cache = option.second.GetValue(); + } + } + + res->SetDefaultTable(DEFAULT_SCHEMA, DEFAULT_DELTA_TABLE); + + return std::move(res); +} + +static unique_ptr CreateTransactionManager(StorageExtensionInfo *storage_info, AttachedDatabase &db, + Catalog &catalog) { + auto &delta_catalog = catalog.Cast(); + return make_uniq(db, delta_catalog); +} + +class DeltaStorageExtension : public StorageExtension { +public: + DeltaStorageExtension() { + attach = DeltaCatalogAttach; + create_transaction_manager = CreateTransactionManager; + } +}; + static void LoadInternal(DatabaseInstance &instance) { // Load functions for (const auto &function : DeltaFunctions::GetTableFunctions(instance)) { ExtensionUtil::RegisterFunction(instance, function); } + + // Register the "single table" delta catalog (to ATTACH a single delta table) + auto &config = DBConfig::GetConfig(instance); + config.storage_extensions["delta"] = make_uniq(); } void DeltaExtension::Load(DuckDB &db) { diff --git a/src/functions/delta_scan.cpp b/src/functions/delta_scan.cpp index 65eb34f..3a85989 100644 --- a/src/functions/delta_scan.cpp +++ b/src/functions/delta_scan.cpp @@ -19,7 +19,9 @@ #include #include #include +#include #include +#include namespace duckdb { @@ -387,22 +389,42 @@ string DeltaSnapshot::ToDeltaPath(const string &raw_path) { } void DeltaSnapshot::Bind(vector &return_types, vector &names) { - if (!initialized) { - InitializeFiles(); + if (have_bound) { + names = this->names; + return_types = this->types; + return; + } + + if (!initialized_snapshot) { + InitializeSnapshot(); } - auto schema = SchemaVisitor::VisitSnapshotSchema(snapshot.get()); + + unique_ptr schema; + + { + auto snapshot_ref = snapshot->GetLockingRef(); + schema = SchemaVisitor::VisitSnapshotSchema(snapshot_ref.GetPtr()); + } + for (const auto &field: *schema) { names.push_back(field.first); return_types.push_back(field.second); } // Store the bound names for resolving the complex filter pushdown later + have_bound = true; this->names = names; + this->types = return_types; } string DeltaSnapshot::GetFile(idx_t i) { - if (!initialized) { - InitializeFiles(); + if (!initialized_snapshot) { + InitializeSnapshot(); } + + if(!initialized_scan) { + InitializeScan(); + } + // We already have this file if (i < resolved_files.size()) { return resolved_files[i]; @@ -432,35 +454,46 @@ string DeltaSnapshot::GetFile(idx_t i) { return resolved_files[i]; } -void DeltaSnapshot::InitializeFiles() { +void DeltaSnapshot::InitializeSnapshot() { auto path_slice = KernelUtils::ToDeltaString(paths[0]); - // Register engine auto interface_builder = CreateBuilder(context, paths[0]); extern_engine = TryUnpackKernelResult( ffi::builder_build(interface_builder)); - // Initialize Snapshot - snapshot = TryUnpackKernelResult(ffi::snapshot(path_slice, extern_engine.get())); + if (!snapshot) { + snapshot = make_shared_ptr(TryUnpackKernelResult(ffi::snapshot(path_slice, extern_engine.get()))); + } + + initialized_snapshot = true; +} + +void DeltaSnapshot::InitializeScan() { + auto snapshot_ref = snapshot->GetLockingRef(); // Create Scan PredicateVisitor visitor(names, &table_filters); - scan = TryUnpackKernelResult(ffi::scan(snapshot.get(), extern_engine.get(), &visitor)); + scan = TryUnpackKernelResult(ffi::scan(snapshot_ref.GetPtr(), extern_engine.get(), &visitor)); // Create GlobalState global_state = ffi::get_global_scan_state(scan.get()); // Set version - this->version = ffi::version(snapshot.get()); + this->version = ffi::version(snapshot_ref.GetPtr()); // Create scan data iterator scan_data_iterator = TryUnpackKernelResult(ffi::kernel_scan_data_init(extern_engine.get(), scan.get())); - initialized = true; + initialized_scan = true; } unique_ptr DeltaSnapshot::ComplexFilterPushdown(ClientContext &context, const MultiFileReaderOptions &options, MultiFilePushdownInfo &info, vector> &filters) { FilterCombiner combiner(context); + + if (filters.empty()) { + return nullptr; + } + for (const auto &filter : filters) { combiner.AddFilter(filter->Copy()); } @@ -471,6 +504,9 @@ unique_ptr DeltaSnapshot::ComplexFilterPushdown(ClientContext &co filtered_list->table_filters = std::move(filterstmp); filtered_list->names = names; + // Copy over the snapshot, this avoids reparsing metadata + filtered_list->snapshot = snapshot; + return std::move(filtered_list); } @@ -484,16 +520,11 @@ vector DeltaSnapshot::GetAllFiles() { } FileExpandResult DeltaSnapshot::GetExpandResult() { - // GetFile(1) will ensure at least the first 2 files are expanded if they are available - GetFile(1); - - if (resolved_files.size() > 1) { - return FileExpandResult::MULTIPLE_FILES; - } else if (resolved_files.size() == 1) { - return FileExpandResult::SINGLE_FILE; - } - - return FileExpandResult::NO_FILES; + // We avoid exposing the ExpandResult to DuckDB here because we want to materialize the Snapshot as late as possible: + // materializing too early (GetExpandResult is called *before* filter pushdown by the Parquet scanner), will lead into + // needing to create 2 scans of the snapshot TODO: we need to investigate if this is actually a sensible decision with + // some benchmarking, its currently based on intuition. + return FileExpandResult::MULTIPLE_FILES; } idx_t DeltaSnapshot::GetTotalFileCount() { @@ -529,8 +560,14 @@ unique_ptr DeltaSnapshot::GetCardinality(ClientContext &context) return nullptr; } -unique_ptr DeltaMultiFileReader::CreateInstance() { - return std::move(make_uniq()); +unique_ptr DeltaMultiFileReader::CreateInstance(const TableFunction &table_function) { + auto result = make_uniq(); + + if (table_function.function_info) { + result->snapshot = table_function.function_info->Cast().snapshot; + } + + return std::move(result); } bool DeltaMultiFileReader::Bind(MultiFileReaderOptions &options, MultiFileList &files, @@ -618,11 +655,20 @@ void DeltaMultiFileReader::FinalizeBind(const MultiFileReaderOptions &file_optio } } -unique_ptr DeltaMultiFileReader::CreateFileList(ClientContext &context, const vector& paths, FileGlobOptions options) { +shared_ptr DeltaMultiFileReader::CreateFileList(ClientContext &context, const vector& paths, FileGlobOptions options) { if (paths.size() != 1) { throw BinderException("'delta_scan' only supports single path as input"); } + + if (snapshot) { + // TODO: assert that we are querying the same path as this injected snapshot + // This takes the kernel snapshot from the delta snapshot and ensures we use that snapshot for reading + if (snapshot) { + return snapshot; + } + } + return make_uniq(context, paths[0]); } diff --git a/src/include/delta_extension.hpp b/src/include/delta_extension.hpp index d6b13f2..89fbc2d 100644 --- a/src/include/delta_extension.hpp +++ b/src/include/delta_extension.hpp @@ -2,6 +2,8 @@ #include "duckdb.hpp" +#define DEFAULT_DELTA_TABLE "delta_table" + namespace duckdb { class DeltaExtension : public Extension { diff --git a/src/include/delta_utils.hpp b/src/include/delta_utils.hpp index 9b33c5c..7b14386 100644 --- a/src/include/delta_utils.hpp +++ b/src/include/delta_utils.hpp @@ -108,6 +108,61 @@ typedef TemplatedUniqueKernelPointer KernelScan typedef TemplatedUniqueKernelPointer KernelGlobalScanState; typedef TemplatedUniqueKernelPointer KernelScanDataIterator; +template +struct SharedKernelPointer; + +// A reference to a SharedKernelPointer, only 1 can be handed out at the same time +template +struct SharedKernelRef { + friend struct SharedKernelPointer; +public: + KernelType* GetPtr() { + return owning_pointer.kernel_ptr.get(); + } + ~SharedKernelRef() { + owning_pointer.lock.unlock(); + } + +protected: + SharedKernelRef(SharedKernelPointer& owning_pointer_p) : owning_pointer(owning_pointer_p) { + owning_pointer.lock.lock(); + } + +protected: + // The pointer that owns this ref + SharedKernelPointer& owning_pointer; +}; + +// Wrapper around ffi objects to share between threads +template +struct SharedKernelPointer { + friend struct SharedKernelRef; +public: + SharedKernelPointer(TemplatedUniqueKernelPointer unique_kernel_ptr) : kernel_ptr(unique_kernel_ptr) {} + SharedKernelPointer(KernelType* ptr) : kernel_ptr(ptr){} + SharedKernelPointer(){} + + SharedKernelPointer(SharedKernelPointer&& other) : SharedKernelPointer() { + other.lock.lock(); + lock.lock(); + kernel_ptr = std::move(other.kernel_ptr); + lock.lock(); + other.lock.lock(); + } + + // Returns a reference to the underlying kernel object. The SharedKernelPointer to this object will be locked for the + // lifetime of this reference + SharedKernelRef GetLockingRef() { + return SharedKernelRef(*this); + } + +protected: + TemplatedUniqueKernelPointer kernel_ptr; + mutex lock; +}; + +typedef SharedKernelPointer SharedKernelSnapshot; + struct KernelUtils { static ffi::KernelStringSlice ToDeltaString(const string &str); static string FromDeltaString(const struct ffi::KernelStringSlice slice); diff --git a/src/include/functions/delta_scan.hpp b/src/include/functions/delta_scan.hpp index aac35cc..d467d10 100644 --- a/src/include/functions/delta_scan.hpp +++ b/src/include/functions/delta_scan.hpp @@ -12,6 +12,12 @@ #include "duckdb/common/multi_file_reader.hpp" namespace duckdb { +struct DeltaSnapshot; + +struct DeltaFunctionInfo : public TableFunctionInfo { + shared_ptr snapshot; + string expected_path; +}; struct DeltaFileMetaData { DeltaFileMetaData() {}; @@ -57,8 +63,8 @@ struct DeltaSnapshot : public MultiFileList { string GetFile(idx_t i) override; protected: - // TODO: How to guarantee we only call this after the filter pushdown? - void InitializeFiles(); + void InitializeSnapshot(); + void InitializeScan(); template T TryUnpackKernelResult(ffi::ExternResult result) { @@ -70,7 +76,8 @@ struct DeltaSnapshot : public MultiFileList { idx_t version; //! Delta Kernel Structures - KernelSnapshot snapshot; + shared_ptr snapshot; + KernelExternEngine extern_engine; KernelScan scan; KernelGlobalScanState global_state; @@ -78,12 +85,16 @@ struct DeltaSnapshot : public MultiFileList { //! Names vector names; + vector types; + bool have_bound = false; //! Metadata map for files vector> metadata; //! Current file list resolution state - bool initialized = false; + bool initialized_snapshot = false; + bool initialized_scan = false; + bool files_exhausted = false; vector resolved_files; TableFilterSet table_filters; @@ -103,9 +114,9 @@ struct DeltaMultiFileReaderGlobalState : public MultiFileReaderGlobalState { }; struct DeltaMultiFileReader : public MultiFileReader { - static unique_ptr CreateInstance(); + static unique_ptr CreateInstance(const TableFunction &table_function); //! Return a DeltaSnapshot - unique_ptr CreateFileList(ClientContext &context, const vector &paths, + shared_ptr CreateFileList(ClientContext &context, const vector &paths, FileGlobOptions options) override; //! Override the regular parquet bind using the MultiFileReader Bind. The bind from these are what DuckDB's file @@ -141,6 +152,10 @@ struct DeltaMultiFileReader : public MultiFileReader { //! Override the ParseOption call to parse delta_scan specific options bool ParseOption(const string &key, const Value &val, MultiFileReaderOptions &options, ClientContext &context) override; + + // A snapshot can be injected into the multifilereader, this ensures the GetMultiFileList can return this snapshot + // (note that the path should match the one passed to CreateFileList) + shared_ptr snapshot; }; } // namespace duckdb diff --git a/src/include/storage/delta_catalog.hpp b/src/include/storage/delta_catalog.hpp new file mode 100644 index 0000000..faeb00c --- /dev/null +++ b/src/include/storage/delta_catalog.hpp @@ -0,0 +1,81 @@ +//===----------------------------------------------------------------------===// +// DuckDB +// +// storage/delta_catalog.hpp +// +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include "delta_schema_entry.hpp" +#include "duckdb/catalog/catalog.hpp" +#include "duckdb/function/table_function.hpp" +#include "duckdb/common/enums/access_mode.hpp" + +namespace duckdb { +class DeltaSchemaEntry; + +class DeltaClearCacheFunction : public TableFunction { +public: + DeltaClearCacheFunction(); + + static void ClearCacheOnSetting(ClientContext &context, SetScope scope, Value ¶meter); +}; + +class DeltaCatalog : public Catalog { +public: + explicit DeltaCatalog(AttachedDatabase &db_p, const string &internal_name, AccessMode access_mode); + ~DeltaCatalog(); + + string path; + AccessMode access_mode; + bool use_cache; + +public: + void Initialize(bool load_builtin) override; + string GetCatalogType() override { + return "delta"; + } + + optional_ptr CreateSchema(CatalogTransaction transaction, CreateSchemaInfo &info) override; + + void ScanSchemas(ClientContext &context, std::function callback) override; + + optional_ptr GetSchema(CatalogTransaction transaction, const string &schema_name, + OnEntryNotFound if_not_found, + QueryErrorContext error_context = QueryErrorContext()) override; + + unique_ptr PlanInsert(ClientContext &context, LogicalInsert &op, + unique_ptr plan) override; + unique_ptr PlanCreateTableAs(ClientContext &context, LogicalCreateTable &op, + unique_ptr plan) override; + unique_ptr PlanDelete(ClientContext &context, LogicalDelete &op, + unique_ptr plan) override; + unique_ptr PlanUpdate(ClientContext &context, LogicalUpdate &op, + unique_ptr plan) override; + unique_ptr BindCreateIndex(Binder &binder, CreateStatement &stmt, TableCatalogEntry &table, + unique_ptr plan) override; + + DatabaseSize GetDatabaseSize(ClientContext &context) override; + + optional_idx GetCatalogVersion(ClientContext &context) override; + + bool InMemory() override; + string GetDBPath() override; + + bool UseCachedSnapshot(); + + DeltaSchemaEntry& GetMainSchema() { + return *main_schema; + } + +private: + void DropSchema(ClientContext &context, DropInfo &info) override; + +private: + unique_ptr main_schema; + string default_schema; +}; + +} // namespace duckdb diff --git a/src/include/storage/delta_schema_entry.hpp b/src/include/storage/delta_schema_entry.hpp new file mode 100644 index 0000000..c8a8d09 --- /dev/null +++ b/src/include/storage/delta_schema_entry.hpp @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// DuckDB +// +// storage/delta_schema_entry.hpp +// +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include "duckdb/catalog/catalog_entry/schema_catalog_entry.hpp" +#include "storage/delta_table_entry.hpp" + +namespace duckdb { +class DeltaTransaction; + +class DeltaSchemaEntry : public SchemaCatalogEntry { +public: + DeltaSchemaEntry(Catalog &catalog, CreateSchemaInfo &info); + ~DeltaSchemaEntry() override; + +public: + optional_ptr CreateTable(CatalogTransaction transaction, BoundCreateTableInfo &info) override; + optional_ptr CreateFunction(CatalogTransaction transaction, CreateFunctionInfo &info) override; + optional_ptr CreateIndex(CatalogTransaction transaction, CreateIndexInfo &info, + TableCatalogEntry &table) override; + optional_ptr CreateView(CatalogTransaction transaction, CreateViewInfo &info) override; + optional_ptr CreateSequence(CatalogTransaction transaction, CreateSequenceInfo &info) override; + optional_ptr CreateTableFunction(CatalogTransaction transaction, + CreateTableFunctionInfo &info) override; + optional_ptr CreateCopyFunction(CatalogTransaction transaction, + CreateCopyFunctionInfo &info) override; + optional_ptr CreatePragmaFunction(CatalogTransaction transaction, + CreatePragmaFunctionInfo &info) override; + optional_ptr CreateCollation(CatalogTransaction transaction, CreateCollationInfo &info) override; + optional_ptr CreateType(CatalogTransaction transaction, CreateTypeInfo &info) override; + void Alter(CatalogTransaction transaction, AlterInfo &info) override; + void Scan(ClientContext &context, CatalogType type, const std::function &callback) override; + void Scan(CatalogType type, const std::function &callback) override; + void DropEntry(ClientContext &context, DropInfo &info) override; + optional_ptr GetEntry(CatalogTransaction transaction, CatalogType type, const string &name) override; + + optional_ptr GetCachedTable(); + +private: + //! Delta tables may be cached in the SchemaEntry. Since the TableEntry holds the snapshot, this allows sharing a snapshot + //! between different scans. + unique_ptr cached_table; + mutex lock; +}; + +} // namespace duckdb diff --git a/src/include/storage/delta_table_entry.hpp b/src/include/storage/delta_table_entry.hpp new file mode 100644 index 0000000..c131694 --- /dev/null +++ b/src/include/storage/delta_table_entry.hpp @@ -0,0 +1,36 @@ +//===----------------------------------------------------------------------===// +// DuckDB +// +// storage/delta_table_entry.hpp +// +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include "duckdb/catalog/catalog_entry/table_catalog_entry.hpp" +#include "duckdb/parser/parsed_data/create_table_info.hpp" + +namespace duckdb { +struct DeltaSnapshot; + +class DeltaTableEntry : public TableCatalogEntry { +public: + DeltaTableEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateTableInfo &info); + ~DeltaTableEntry(); + +public: + unique_ptr GetStatistics(ClientContext &context, column_t column_id) override; + + TableFunction GetScanFunction(ClientContext &context, unique_ptr &bind_data) override; + + TableStorageInfo GetStorageInfo(ClientContext &context) override; + + void BindUpdateConstraints(Binder &binder, LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update, + ClientContext &context) override; + +public: + shared_ptr snapshot; +}; + +} // namespace duckdb diff --git a/src/include/storage/delta_transaction.hpp b/src/include/storage/delta_transaction.hpp new file mode 100644 index 0000000..3a004ef --- /dev/null +++ b/src/include/storage/delta_transaction.hpp @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// DuckDB +// +// storage/delta_transaction.hpp +// +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include "duckdb/transaction/transaction.hpp" + +namespace duckdb { +class DeltaCatalog; +class DeltaSchemaEntry; +class DeltaTableEntry; +struct DeltaSnapshot; + +enum class DeltaTransactionState { TRANSACTION_NOT_YET_STARTED, TRANSACTION_STARTED, TRANSACTION_FINISHED }; + +class DeltaTransaction : public Transaction { +public: + DeltaTransaction(DeltaCatalog &delta_catalog, TransactionManager &manager, ClientContext &context); + ~DeltaTransaction() override; + + void Start(); + void Commit(); + void Rollback(); + + static DeltaTransaction &Get(ClientContext &context, Catalog &catalog); + AccessMode GetAccessMode() const; + + void SetReadWrite() override { + throw NotImplementedException("Can not start read-write transaction"); + }; +public: + unique_ptr table_entry; + +private: + // DeltaConnection connection; + DeltaTransactionState transaction_state; + AccessMode access_mode; +}; + +} // namespace duckdb diff --git a/src/include/storage/delta_transaction_manager.hpp b/src/include/storage/delta_transaction_manager.hpp new file mode 100644 index 0000000..3957982 --- /dev/null +++ b/src/include/storage/delta_transaction_manager.hpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// DuckDB +// +// storage/delta_transaction_manager.hpp +// +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include "duckdb/transaction/transaction_manager.hpp" +#include "storage/delta_catalog.hpp" +#include "storage/delta_transaction.hpp" + +namespace duckdb { + +class DeltaTransactionManager : public TransactionManager { +public: + DeltaTransactionManager(AttachedDatabase &db_p, DeltaCatalog &delta_catalog); + + Transaction &StartTransaction(ClientContext &context) override; + ErrorData CommitTransaction(ClientContext &context, Transaction &transaction) override; + void RollbackTransaction(Transaction &transaction) override; + + void Checkpoint(ClientContext &context, bool force = false) override; + +private: + DeltaCatalog &delta_catalog; + mutex transaction_lock; + reference_map_t> transactions; +}; + +} // namespace duckdb diff --git a/src/storage/delta_catalog.cpp b/src/storage/delta_catalog.cpp new file mode 100644 index 0000000..4e57d23 --- /dev/null +++ b/src/storage/delta_catalog.cpp @@ -0,0 +1,108 @@ +#include "storage/delta_catalog.hpp" +#include "storage/delta_schema_entry.hpp" +#include "storage/delta_transaction.hpp" +#include "duckdb/storage/database_size.hpp" +#include "duckdb/parser/parsed_data/drop_info.hpp" +#include "duckdb/parser/parsed_data/create_schema_info.hpp" +#include "duckdb/main/attached_database.hpp" + +#include "functions/delta_scan.hpp" +#include "storage/delta_transaction_manager.hpp" + +namespace duckdb { + +DeltaCatalog::DeltaCatalog(AttachedDatabase &db_p, const string &path, AccessMode access_mode) + : Catalog(db_p), path(path), access_mode(access_mode), use_cache(false) { +} + +DeltaCatalog::~DeltaCatalog() = default; + +void DeltaCatalog::Initialize(bool load_builtin) { + CreateSchemaInfo info; + main_schema = make_uniq(*this, info); +} + +optional_ptr DeltaCatalog::CreateSchema(CatalogTransaction transaction, CreateSchemaInfo &info) { + throw BinderException("Delta tables do not support creating new schemas"); +} + +void DeltaCatalog::DropSchema(ClientContext &context, DropInfo &info) { + throw BinderException("Delta tables do not support dropping schemas"); +} + +void DeltaCatalog::ScanSchemas(ClientContext &context, std::function callback) { + callback(*main_schema); +} + +optional_ptr DeltaCatalog::GetSchema(CatalogTransaction transaction, const string &schema_name, + OnEntryNotFound if_not_found, QueryErrorContext error_context) { + if (schema_name == DEFAULT_SCHEMA || schema_name == INVALID_SCHEMA) { + return main_schema.get(); + } + if (if_not_found == OnEntryNotFound::RETURN_NULL) { + return nullptr; + } + return nullptr; +} + +bool DeltaCatalog::InMemory() { + return false; +} + +string DeltaCatalog::GetDBPath() { + return path; +} + +bool DeltaCatalog::UseCachedSnapshot() { + return use_cache; +} + +optional_idx DeltaCatalog::GetCatalogVersion(ClientContext &context) { + auto &delta_transaction = DeltaTransaction::Get(context, *this); + + // Option 1: snapshot is cached table-wide + auto cached_snapshot = main_schema->GetCachedTable(); + if (cached_snapshot) { + return cached_snapshot->snapshot->version; + } + + // Option 2: snapshot is cached in transaction + if (delta_transaction.table_entry) { + return delta_transaction.table_entry->snapshot->version; + } + + // FIXME: this is not allowed + return optional_idx::Invalid(); +} + +DatabaseSize DeltaCatalog::GetDatabaseSize(ClientContext &context) { + if (default_schema.empty()) { + throw InvalidInputException("Attempting to fetch the database size - but no database was provided " + "in the connection string"); + } + DatabaseSize size; + return size; +} + +unique_ptr DeltaCatalog::PlanInsert(ClientContext &context, LogicalInsert &op, + unique_ptr plan) { + throw NotImplementedException("DeltaCatalog does not support inserts"); +} +unique_ptr DeltaCatalog::PlanCreateTableAs(ClientContext &context, LogicalCreateTable &op, + unique_ptr plan) { + throw NotImplementedException("DeltaCatalog does not support creating new tables"); +} +unique_ptr DeltaCatalog::PlanDelete(ClientContext &context, LogicalDelete &op, + unique_ptr plan) { + throw NotImplementedException("DeltaCatalog does not support deletes"); +} +unique_ptr DeltaCatalog::PlanUpdate(ClientContext &context, LogicalUpdate &op, + unique_ptr plan) { + throw NotImplementedException("DeltaCatalog does not support updates"); +} +unique_ptr DeltaCatalog::BindCreateIndex(Binder &binder, CreateStatement &stmt, TableCatalogEntry &table, + unique_ptr plan) { + throw NotImplementedException("DeltaCatalog does not support creating indices"); +} + +} // namespace duckdb diff --git a/src/storage/delta_schema_entry.cpp b/src/storage/delta_schema_entry.cpp new file mode 100644 index 0000000..7e15c5b --- /dev/null +++ b/src/storage/delta_schema_entry.cpp @@ -0,0 +1,184 @@ +#include "storage/delta_schema_entry.hpp" + +#include "functions/delta_scan.hpp" +#include "storage/delta_catalog.hpp" + +#include "delta_extension.hpp" + +#include "storage/delta_table_entry.hpp" +#include "storage/delta_transaction.hpp" +#include "duckdb/parser/parsed_data/create_view_info.hpp" +#include "duckdb/parser/parsed_data/create_index_info.hpp" +#include "duckdb/planner/parsed_data/bound_create_table_info.hpp" +#include "duckdb/parser/parsed_data/drop_info.hpp" +#include "duckdb/parser/constraints/list.hpp" +#include "duckdb/common/unordered_set.hpp" +#include "duckdb/parser/parsed_data/alter_info.hpp" +#include "duckdb/parser/parsed_data/alter_table_info.hpp" +#include "duckdb/parser/parsed_expression_iterator.hpp" + + +namespace duckdb { + +DeltaSchemaEntry::DeltaSchemaEntry(Catalog &catalog, CreateSchemaInfo &info) + : SchemaCatalogEntry(catalog, info) { +} + +DeltaSchemaEntry::~DeltaSchemaEntry() { +} + +DeltaTransaction &GetDeltaTransaction(CatalogTransaction transaction) { + if (!transaction.transaction) { + throw InternalException("No transaction!?"); + } + return transaction.transaction->Cast(); +} + +optional_ptr DeltaSchemaEntry::CreateTable(CatalogTransaction transaction, BoundCreateTableInfo &info) { + throw BinderException("Delta tables do not support creating tables"); +} + +optional_ptr DeltaSchemaEntry::CreateFunction(CatalogTransaction transaction, CreateFunctionInfo &info) { + throw BinderException("Delta tables do not support creating functions"); +} + +void DeltaUnqualifyColumnRef(ParsedExpression &expr) { + if (expr.type == ExpressionType::COLUMN_REF) { + auto &colref = expr.Cast(); + auto name = std::move(colref.column_names.back()); + colref.column_names = {std::move(name)}; + return; + } + ParsedExpressionIterator::EnumerateChildren(expr, DeltaUnqualifyColumnRef); +} + +optional_ptr DeltaSchemaEntry::CreateIndex(CatalogTransaction transaction, CreateIndexInfo &info, + TableCatalogEntry &table) { + throw NotImplementedException("CreateIndex"); +} + +string GetDeltaCreateView(CreateViewInfo &info) { + throw NotImplementedException("GetCreateView"); +} + +optional_ptr DeltaSchemaEntry::CreateView(CatalogTransaction transaction, CreateViewInfo &info) { + throw BinderException("Delta tables do not support creating views"); +} + +optional_ptr DeltaSchemaEntry::CreateType(CatalogTransaction transaction, CreateTypeInfo &info) { + throw BinderException("Delta databases do not support creating types"); +} + +optional_ptr DeltaSchemaEntry::CreateSequence(CatalogTransaction transaction, CreateSequenceInfo &info) { + throw BinderException("Delta databases do not support creating sequences"); +} + +optional_ptr DeltaSchemaEntry::CreateTableFunction(CatalogTransaction transaction, + CreateTableFunctionInfo &info) { + throw BinderException("Delta databases do not support creating table functions"); +} + +optional_ptr DeltaSchemaEntry::CreateCopyFunction(CatalogTransaction transaction, + CreateCopyFunctionInfo &info) { + throw BinderException("Delta databases do not support creating copy functions"); +} + +optional_ptr DeltaSchemaEntry::CreatePragmaFunction(CatalogTransaction transaction, + CreatePragmaFunctionInfo &info) { + throw BinderException("Delta databases do not support creating pragma functions"); +} + +optional_ptr DeltaSchemaEntry::CreateCollation(CatalogTransaction transaction, CreateCollationInfo &info) { + throw BinderException("Delta databases do not support creating collations"); +} + +void DeltaSchemaEntry::Alter(CatalogTransaction transaction, AlterInfo &info) { + throw NotImplementedException("Delta tables do not support altering"); +} + +bool CatalogTypeIsSupported(CatalogType type) { + switch (type) { + case CatalogType::TABLE_ENTRY: + return true; + default: + return false; + } +} + +static unique_ptr CreateTableEntry(ClientContext &context, DeltaCatalog &delta_catalog, DeltaSchemaEntry &schema_entry) { + auto snapshot = make_shared_ptr(context, delta_catalog.GetDBPath()); + + // Get the names and types from the delta snapshot + vector return_types; + vector names; + snapshot->Bind(return_types, names); + + CreateTableInfo table_info; + for (idx_t i = 0; i < return_types.size(); i++) { + table_info.columns.AddColumn(ColumnDefinition(names[i], return_types[i])); + } + table_info.table = DEFAULT_DELTA_TABLE; + auto table_entry = make_uniq(delta_catalog, schema_entry, table_info); + table_entry->snapshot = std::move(snapshot); + + return table_entry; +} + +void DeltaSchemaEntry::Scan(ClientContext &context, CatalogType type, + const std::function &callback) { + if (!CatalogTypeIsSupported(type)) { + auto transaction = catalog.GetCatalogTransaction(context); + auto default_table = GetEntry(transaction, type, DEFAULT_DELTA_TABLE); + if (default_table) { + callback(*default_table); + } + } + +} +void DeltaSchemaEntry::Scan(CatalogType type, const std::function &callback) { + throw NotImplementedException("Scan without context not supported"); +} + +void DeltaSchemaEntry::DropEntry(ClientContext &context, DropInfo &info) { + throw NotImplementedException("Delta tables do not support dropping"); +} + +optional_ptr DeltaSchemaEntry::GetEntry(CatalogTransaction transaction, CatalogType type, + const string &name) { + if (!transaction.HasContext()) { + throw NotImplementedException("Can not DeltaSchemaEntry::GetEntry without context"); + } + auto &context = transaction.GetContext(); + + if (type == CatalogType::TABLE_ENTRY && name == DEFAULT_DELTA_TABLE) { + auto &delta_transaction = GetDeltaTransaction(transaction); + auto &delta_catalog = catalog.Cast(); + + if (delta_transaction.table_entry) { + return *delta_transaction.table_entry; + } + + if (delta_catalog.UseCachedSnapshot()) { + unique_lock l(lock); + if (!cached_table) { + cached_table = CreateTableEntry(context, delta_catalog, *this); + } + return *cached_table; + } + + delta_transaction.table_entry = CreateTableEntry(context, delta_catalog, *this); + return *delta_transaction.table_entry; + } + + return nullptr; +} + +optional_ptr DeltaSchemaEntry::GetCachedTable() { + lock_guard lck(lock); + if (cached_table) { + return *cached_table; + } + return nullptr; +} + +} // namespace duckdb diff --git a/src/storage/delta_table_entry.cpp b/src/storage/delta_table_entry.cpp new file mode 100644 index 0000000..f82caa4 --- /dev/null +++ b/src/storage/delta_table_entry.cpp @@ -0,0 +1,74 @@ +#include "storage/delta_catalog.hpp" +#include "storage/delta_schema_entry.hpp" +#include "storage/delta_table_entry.hpp" + +#include "delta_utils.hpp" +#include "functions/delta_scan.hpp" + +#include "storage/delta_transaction.hpp" +#include "duckdb/storage/statistics/base_statistics.hpp" +#include "duckdb/storage/table_storage_info.hpp" +#include "duckdb/main/extension_util.hpp" +#include "duckdb/main/database.hpp" +#include "duckdb/main/secret/secret_manager.hpp" +#include "duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp" +#include "duckdb/parser/tableref/table_function_ref.hpp" +#include "../../duckdb/third_party/catch/catch.hpp" +#include "functions/delta_scan.hpp" + +#include + +namespace duckdb { + +DeltaTableEntry::DeltaTableEntry(Catalog &catalog, SchemaCatalogEntry &schema, CreateTableInfo &info) + : TableCatalogEntry(catalog, schema, info) { + this->internal = false; +} + +DeltaTableEntry::~DeltaTableEntry() = default; + +unique_ptr DeltaTableEntry::GetStatistics(ClientContext &context, column_t column_id) { + return nullptr; +} + +void DeltaTableEntry::BindUpdateConstraints(Binder &binder, LogicalGet &, LogicalProjection &, LogicalUpdate &, + ClientContext &) { + throw NotImplementedException("BindUpdateConstraints for delta table"); +} + +TableFunction DeltaTableEntry::GetScanFunction(ClientContext &context, unique_ptr &bind_data) { + auto &db = DatabaseInstance::GetDatabase(context); + auto &delta_function_set = ExtensionUtil::GetTableFunction(db, "delta_scan"); + + auto delta_scan_function = delta_function_set.functions.GetFunctionByArguments(context, {LogicalType::VARCHAR}); + auto &delta_catalog = catalog.Cast(); + + // Copy over the internal kernel snapshot + auto function_info = make_shared_ptr(); + + function_info->snapshot = this->snapshot; + delta_scan_function.function_info = std::move(function_info); + + vector inputs = {delta_catalog.GetDBPath()}; + named_parameter_map_t param_map; + vector return_types; + vector names; + TableFunctionRef empty_ref; + + + TableFunctionBindInput bind_input(inputs, param_map, return_types, names, nullptr, nullptr, delta_scan_function, + empty_ref); + + auto result = delta_scan_function.bind(context, bind_input, return_types, names); + bind_data = std::move(result); + + return delta_scan_function; +} + +TableStorageInfo DeltaTableEntry::GetStorageInfo(ClientContext &context) { + TableStorageInfo result; + // TODO fill info + return result; +} + +} // namespace duckdb diff --git a/src/storage/delta_transaction.cpp b/src/storage/delta_transaction.cpp new file mode 100644 index 0000000..3846c47 --- /dev/null +++ b/src/storage/delta_transaction.cpp @@ -0,0 +1,42 @@ +#include "storage/delta_transaction.hpp" +#include "storage/delta_catalog.hpp" +#include "duckdb/parser/parsed_data/create_view_info.hpp" +#include "duckdb/catalog/catalog_entry/index_catalog_entry.hpp" +#include "duckdb/catalog/catalog_entry/view_catalog_entry.hpp" +#include "functions/delta_scan.hpp" +#include "storage/delta_table_entry.hpp" + +namespace duckdb { + +DeltaTransaction::DeltaTransaction(DeltaCatalog &delta_catalog, TransactionManager &manager, ClientContext &context) + : Transaction(manager, context), access_mode(delta_catalog.access_mode) { +} + +DeltaTransaction::~DeltaTransaction() { +} + +void DeltaTransaction::Start() { + transaction_state = DeltaTransactionState::TRANSACTION_NOT_YET_STARTED; +} +void DeltaTransaction::Commit() { + if (transaction_state == DeltaTransactionState::TRANSACTION_STARTED) { + transaction_state = DeltaTransactionState::TRANSACTION_FINISHED; + // NOP: we only support read-only transactions currently + } +} +void DeltaTransaction::Rollback() { + if (transaction_state == DeltaTransactionState::TRANSACTION_STARTED) { + transaction_state = DeltaTransactionState::TRANSACTION_FINISHED; + // NOP: we only support read-only transactions currently + } +} + +DeltaTransaction &DeltaTransaction::Get(ClientContext &context, Catalog &catalog) { + return Transaction::Get(context, catalog).Cast(); +} + +AccessMode DeltaTransaction::GetAccessMode() const { + return access_mode; +} + +} // namespace duckdb diff --git a/src/storage/delta_transaction_manager.cpp b/src/storage/delta_transaction_manager.cpp new file mode 100644 index 0000000..4d64f77 --- /dev/null +++ b/src/storage/delta_transaction_manager.cpp @@ -0,0 +1,38 @@ +#include "storage/delta_transaction_manager.hpp" +#include "duckdb/main/attached_database.hpp" + +namespace duckdb { + +DeltaTransactionManager::DeltaTransactionManager(AttachedDatabase &db_p, DeltaCatalog &delta_catalog) + : TransactionManager(db_p), delta_catalog(delta_catalog) { +} + +Transaction &DeltaTransactionManager::StartTransaction(ClientContext &context) { + auto transaction = make_uniq(delta_catalog, *this, context); + transaction->Start(); + auto &result = *transaction; + lock_guard l(transaction_lock); + transactions[result] = std::move(transaction); + return result; +} + +ErrorData DeltaTransactionManager::CommitTransaction(ClientContext &context, Transaction &transaction) { + auto &delta_transaction = transaction.Cast(); + delta_transaction.Commit(); + lock_guard l(transaction_lock); + transactions.erase(transaction); + return ErrorData(); +} + +void DeltaTransactionManager::RollbackTransaction(Transaction &transaction) { + auto &delta_transaction = transaction.Cast(); + delta_transaction.Rollback(); + lock_guard l(transaction_lock); + transactions.erase(transaction); +} + +void DeltaTransactionManager::Checkpoint(ClientContext &context, bool force) { + // NOP +} + +} // namespace duckdb diff --git a/test/sql/dat/attach.test b/test/sql/dat/attach.test new file mode 100644 index 0000000..de6615d --- /dev/null +++ b/test/sql/dat/attach.test @@ -0,0 +1,125 @@ +# name: test/sql/dat/attach.test +# description: Test attaching a delta table +# group: [dat] + +require parquet + +require delta + +require-env DAT_PATH + +statement ok +ATTACH '${DAT_PATH}/out/reader_tests/generated/all_primitive_types/delta' as dt (TYPE delta) + +# We can query the table by the catalog name +query I +select utf8 from dt +---- +0 +1 +2 +3 +4 + +# We can query the table using the catalog name + the constant `delta_table` as name +query I +select utf8 from dt.delta_table +---- +0 +1 +2 +3 +4 + +# We can query the table using the catalog name + default schema + the constant `delta_table` as name +query I +select utf8 from dt.main.delta_table +---- +0 +1 +2 +3 +4 + +# Now we create a different table that is actually called dt +statement ok +create table dt as select 1 as id, 2 as utf8 + +# This is now ambiguous! +statement error +from dt +---- +Catalog Error: Ambiguity detected for 'dt': this could either refer to the 'Table' 'dt', or the attached catalog 'dt' which has a default table. To avoid this error, either detach the catalog and reattach under a different name, or use a fully qualified name for the 'Table': 'memory.main.dt' or for the Catalog Default Table: 'dt.main.delta_table'. + +# Join the two tables using fully qualified names +query III +SELECT + id, + dt1.utf8, + dt2.utf8 +FROM + memory.main.dt as dt1 +LEFT JOIN + dt.main.delta_table as dt2 +ON + dt1.utf8 = dt2.utf8 +---- +1 2 2 + + +# You shouldn't be doing this, but its technically possible: we mount the single-table-catalog +statement ok +use dt + +# We can still query the delta catalog default table by its name +query I +select utf8 from dt +---- +0 +1 +2 +3 +4 + +# Or by the default delta table name (`delta_table`) +query I +select utf8 from delta_table +---- +0 +1 +2 +3 +4 + +# Or by specifying the default schema +query I +select utf8 from main.delta_table +---- +0 +1 +2 +3 +4 + +statement ok +USE memory + +statement ok +DROP TABLE main.dt + +statement ok +DETACH dt + +# Test the PIN_SNAPSHOT option: the snapshot is now pinned on attaching +statement ok +ATTACH '${DAT_PATH}/out/reader_tests/generated/all_primitive_types/delta' as dt (TYPE delta, PIN_SNAPSHOT) + +# This query will now reuse +query I +select utf8 from dt +---- +0 +1 +2 +3 +4 \ No newline at end of file From cc4eea647800e80353ee73e794ad29b0d0edc052 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Fri, 25 Oct 2024 16:41:41 +0200 Subject: [PATCH 2/9] minor fixes --- benchmark/benchmark.Makefile | 2 +- duckdb | 2 +- src/storage/delta_catalog.cpp | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/benchmark/benchmark.Makefile b/benchmark/benchmark.Makefile index 4387d5e..3e3bf9c 100644 --- a/benchmark/benchmark.Makefile +++ b/benchmark/benchmark.Makefile @@ -35,7 +35,7 @@ bench-run-tpch-sf1-parquet: bench-output-dir bench-run-tpch-sf1-duckdb: bench-output-dir ./build/release/benchmark/benchmark_runner --root-dir './' 'benchmark/tpch/sf1/local/duckdb/$(BENCHMARK_PATTERN)' 2>&1 | tee benchmark_results/tpch-sf1-duckdb.csv # COMPARES TPCH SF1 on parquet file vs on delta files vs on duckdb files -bench-run-tpch-sf1: bench-run-tpch-sf1-delta bench-run-tpch-sf1-parquet bench-run-tpch-sf1-attach +bench-run-tpch-sf1: bench-run-tpch-sf1-delta bench-run-tpch-sf1-parquet bench-run-tpch-sf1-delta-attach ### # TPCDS diff --git a/duckdb b/duckdb index 9f3db54..c651907 160000 --- a/duckdb +++ b/duckdb @@ -1 +1 @@ -Subproject commit 9f3db54cc308f38afee235bd6b7bdf61142e4995 +Subproject commit c65190792003312ad96e4b8bdf16430a26da2f01 diff --git a/src/storage/delta_catalog.cpp b/src/storage/delta_catalog.cpp index 4e57d23..1e8ac4e 100644 --- a/src/storage/delta_catalog.cpp +++ b/src/storage/delta_catalog.cpp @@ -71,8 +71,7 @@ optional_idx DeltaCatalog::GetCatalogVersion(ClientContext &context) { return delta_transaction.table_entry->snapshot->version; } - // FIXME: this is not allowed - return optional_idx::Invalid(); + return {}; } DatabaseSize DeltaCatalog::GetDatabaseSize(ClientContext &context) { From 3c19a20f010f00c61cecf215062d189f8ac47e2e Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Wed, 6 Nov 2024 10:57:38 +0100 Subject: [PATCH 3/9] bump duckdb to main --- .github/workflows/MainDistributionPipeline.yml | 10 +++++----- duckdb | 2 +- extension-ci-tools | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 496db97..61a2a2d 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -14,10 +14,10 @@ concurrency: jobs: duckdb-stable-build: name: Build extension binaries - uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@v1.1.2 + uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@main with: - duckdb_version: v1.1.2 - ci_tools_version: v1.1.2 + duckdb_version: main + ci_tools_version: main extension_name: delta enable_rust: true exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools' @@ -25,10 +25,10 @@ jobs: duckdb-stable-deploy: name: Deploy extension binaries needs: duckdb-stable-build - uses: duckdb/extension-ci-tools/.github/workflows/_extension_deploy.yml@v1.1.2 + uses: duckdb/extension-ci-tools/.github/workflows/_extension_deploy.yml@main secrets: inherit with: extension_name: delta - duckdb_version: v1.1.2 + duckdb_version: main exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools' deploy_latest: ${{ startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' }} diff --git a/duckdb b/duckdb index c651907..844d35b 160000 --- a/duckdb +++ b/duckdb @@ -1 +1 @@ -Subproject commit c65190792003312ad96e4b8bdf16430a26da2f01 +Subproject commit 844d35b7c5e400b0cc2578f683f603881af14944 diff --git a/extension-ci-tools b/extension-ci-tools index b46e390..83f847f 160000 --- a/extension-ci-tools +++ b/extension-ci-tools @@ -1 +1 @@ -Subproject commit b46e39024cb2fc96fcec258a7a1304d510bbe914 +Subproject commit 83f847f8467a760f6c66dc7996c13300210220a8 From 2374e61797bd89917fb3f12e2184e97f6dc24e09 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Thu, 7 Nov 2024 16:57:19 +0100 Subject: [PATCH 4/9] bump to recent nightly --- .github/workflows/MainDistributionPipeline.yml | 3 ++- duckdb | 2 +- extension-ci-tools | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 61a2a2d..b84fedb 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -16,7 +16,8 @@ jobs: name: Build extension binaries uses: duckdb/extension-ci-tools/.github/workflows/_extension_distribution.yml@main with: - duckdb_version: main + # pip install duckdb==1.1.4.dev1594 + duckdb_version: 0ccf3c25cc ci_tools_version: main extension_name: delta enable_rust: true diff --git a/duckdb b/duckdb index 844d35b..0ccf3c2 160000 --- a/duckdb +++ b/duckdb @@ -1 +1 @@ -Subproject commit 844d35b7c5e400b0cc2578f683f603881af14944 +Subproject commit 0ccf3c25ccbb25fb90616e77b38f6d138f82950d diff --git a/extension-ci-tools b/extension-ci-tools index 83f847f..3e987be 160000 --- a/extension-ci-tools +++ b/extension-ci-tools @@ -1 +1 @@ -Subproject commit 83f847f8467a760f6c66dc7996c13300210220a8 +Subproject commit 3e987be862c95d0f7fc674fa242c97ce3a37ee04 From 56200f870309531e9ab422813cfa3c7fb44fdc47 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Fri, 8 Nov 2024 11:09:41 +0100 Subject: [PATCH 5/9] disable mingw build --- .github/workflows/MainDistributionPipeline.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index b84fedb..0f4294f 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -21,7 +21,7 @@ jobs: ci_tools_version: main extension_name: delta enable_rust: true - exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools' + exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw' duckdb-stable-deploy: name: Deploy extension binaries @@ -31,5 +31,5 @@ jobs: with: extension_name: delta duckdb_version: main - exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools' + exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw' deploy_latest: ${{ startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' }} From ecfca609000788591f0337ce6ccfe2c51f634854 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Fri, 8 Nov 2024 11:13:58 +0100 Subject: [PATCH 6/9] small ci fixes --- .github/workflows/LocalTesting.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/LocalTesting.yml b/.github/workflows/LocalTesting.yml index fe2fe02..b3a897d 100644 --- a/.github/workflows/LocalTesting.yml +++ b/.github/workflows/LocalTesting.yml @@ -210,12 +210,14 @@ jobs: - name: Build shell: bash - run: make generate-data + run: | + make generate-data + make release - name: Test shell: bash run: | - GENERATED_DATA_AVAILABLE=1 make test + GENERATED_DATA_AVAILABLE=1 make test_release regression-test-benchmark-runner: name: Performance Regression Tests @@ -280,19 +282,19 @@ jobs: if: always() shell: bash run: | - python3 ./duckdb/scripts/regression_test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/tpch_sf1_local.csv --verbose --threads=2 --root-dir=. + python3 ./duckdb/scripts/regression/test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/tpch_sf1_local.csv --verbose --threads=2 --root-dir=. - name: Regression Test TPC-DS if: always() shell: bash run: | - python ./duckdb/scripts/regression_test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/tpcds_sf1_local.csv --verbose --threads=2 --root-dir=. + python ./duckdb/scripts/regression/test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/tpcds_sf1_local.csv --verbose --threads=2 --root-dir=. - name: Regression Test Micro if: always() shell: bash run: | - python ./duckdb/scripts/regression_test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/micro.csv --verbose --threads=2 --root-dir=. + python ./duckdb/scripts/regression/test_runner.py --old=duckdb_delta/build/release/benchmark/benchmark_runner --new=build/release/benchmark/benchmark_runner --benchmarks=.github/regression/micro.csv --verbose --threads=2 --root-dir=. - name: Test benchmark makefile shell: bash From 5cf23c84fd533e95a827e8f93dc147377eb4d650 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Fri, 8 Nov 2024 11:17:30 +0100 Subject: [PATCH 7/9] make python3 available --- .github/workflows/MainDistributionPipeline.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 0f4294f..a3112af 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -22,6 +22,7 @@ jobs: extension_name: delta enable_rust: true exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw' + extra_toolchains: 'python3' duckdb-stable-deploy: name: Deploy extension binaries From 77373bc72da7aba764462bc3b6d9e61459bbc407 Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Fri, 8 Nov 2024 11:20:01 +0100 Subject: [PATCH 8/9] bump vcpkg --- .github/workflows/MainDistributionPipeline.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index a3112af..7f03bff 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -23,6 +23,7 @@ jobs: enable_rust: true exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw' extra_toolchains: 'python3' + vcpkg_commit: c82f74667287d3dc386bce81e44964370c91a289 duckdb-stable-deploy: name: Deploy extension binaries From ca12e53ef60705ef86a10849fa2f2186eaf58e1e Mon Sep 17 00:00:00 2001 From: Sam Ansmink Date: Fri, 8 Nov 2024 12:46:46 +0100 Subject: [PATCH 9/9] fix mismatching duckdb version --- .github/workflows/MainDistributionPipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 7f03bff..f43fd4e 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -32,6 +32,6 @@ jobs: secrets: inherit with: extension_name: delta - duckdb_version: main + duckdb_version: 0ccf3c25cc exclude_archs: 'wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw' deploy_latest: ${{ startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main' }}