From 39c8e645b740f22a4e2e37b6c90100fdee60671b Mon Sep 17 00:00:00 2001 From: Christophe Oudar Date: Mon, 24 Aug 2026 00:51:52 -1000 Subject: [PATCH 1/3] fix: execute Elementary INSERTs with fetch=false so Fusion does not Storage-Read destination tables dbt.run_query always fetches results. Fusion's BigQuery path then reads the job destination table, which OOMs on large elementary tables during on-run-end. Callers already discarded those INSERT results. --- macros/edr/tests/on_run_end/handle_tests_results.sql | 4 ++-- macros/utils/run_queries/run_query.sql | 8 ++++++++ macros/utils/table_operations/insert_rows.sql | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/macros/edr/tests/on_run_end/handle_tests_results.sql b/macros/edr/tests/on_run_end/handle_tests_results.sql index 002d40d39..b41114080 100644 --- a/macros/edr/tests/on_run_end/handle_tests_results.sql +++ b/macros/edr/tests/on_run_end/handle_tests_results.sql @@ -220,7 +220,7 @@ {%- do elementary.edr_create_table_as( true, temp_relation, test_tables_union_query ) %} - {% do elementary.run_query(insert_query) %} + {% do elementary.execute_no_fetch(insert_query) %} {# DuckDB: commit so insert survives dbt's post-on-run-end ROLLBACK #} {% if target.type == "duckdb" %} {% do adapter.commit() %} {% endif %} @@ -280,7 +280,7 @@ {%- do elementary.edr_create_table_as( true, temp_relation, test_tables_union_query ) %} - {% do elementary.run_query(insert_query) %} + {% do elementary.execute_no_fetch(insert_query) %} {# DuckDB: commit so insert survives dbt's post-on-run-end ROLLBACK #} {% if target.type == "duckdb" %} {% do adapter.commit() %} {% endif %} diff --git a/macros/utils/run_queries/run_query.sql b/macros/utils/run_queries/run_query.sql index 500e453a2..34a78a44b 100644 --- a/macros/utils/run_queries/run_query.sql +++ b/macros/utils/run_queries/run_query.sql @@ -11,6 +11,14 @@ {% do return(query_result) %} {% endmacro %} +{# DML/DDL must not use dbt.run_query: Fusion's BigQuery path Storage-Reads the + destination table when fetch=true, which OOMs on large elementary tables. #} +{% macro execute_no_fetch(query) %} + {% do adapter.execute( + elementary.format_query_with_metadata(query), fetch=false + ) %} +{% endmacro %} + {% macro format_query_with_metadata(query) %} {% do return( adapter.dispatch("format_query_with_metadata", "elementary")(query) diff --git a/macros/utils/table_operations/insert_rows.sql b/macros/utils/table_operations/insert_rows.sql index bb881c0e9..7db715fa9 100644 --- a/macros/utils/table_operations/insert_rows.sql +++ b/macros/utils/table_operations/insert_rows.sql @@ -69,7 +69,7 @@ "[{}/{}] Running insert query.".format(loop.index, queries_len) ) %} {% do elementary.begin_duration_measure_context("run_insert_rows_query") %} - {% do elementary.run_query(insert_query) %} + {% do elementary.execute_no_fetch(insert_query) %} {% do elementary.end_duration_measure_context("run_insert_rows_query") %} {% endfor %} From e3c64f1280b777b385ca355ea94eb0f736346bc1 Mon Sep 17 00:00:00 2001 From: Christophe Oudar Date: Mon, 24 Aug 2026 00:57:28 -1000 Subject: [PATCH 2/3] chore: describe execute_no_fetch as discard-result DML, not a warehouse-specific fetch bug Callers that ignore INSERT results should not use run_query, which always fetches. --- macros/utils/run_queries/run_query.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macros/utils/run_queries/run_query.sql b/macros/utils/run_queries/run_query.sql index 34a78a44b..da16696a7 100644 --- a/macros/utils/run_queries/run_query.sql +++ b/macros/utils/run_queries/run_query.sql @@ -11,8 +11,8 @@ {% do return(query_result) %} {% endmacro %} -{# DML/DDL must not use dbt.run_query: Fusion's BigQuery path Storage-Reads the - destination table when fetch=true, which OOMs on large elementary tables. #} +{# Execute without fetching a result set. Use this for DML/DDL whose callers + discard the result; dbt.run_query always fetches. #} {% macro execute_no_fetch(query) %} {% do adapter.execute( elementary.format_query_with_metadata(query), fetch=false From 17b09092af0bc65eb709cb79c55af71555b6f1cb Mon Sep 17 00:00:00 2001 From: Itamar Hartstein Date: Mon, 7 Sep 2026 00:09:25 +0300 Subject: [PATCH 3/3] fix: format execute_no_fetch macro --- macros/utils/run_queries/run_query.sql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/macros/utils/run_queries/run_query.sql b/macros/utils/run_queries/run_query.sql index da16696a7..1bf356b11 100644 --- a/macros/utils/run_queries/run_query.sql +++ b/macros/utils/run_queries/run_query.sql @@ -14,9 +14,7 @@ {# Execute without fetching a result set. Use this for DML/DDL whose callers discard the result; dbt.run_query always fetches. #} {% macro execute_no_fetch(query) %} - {% do adapter.execute( - elementary.format_query_with_metadata(query), fetch=false - ) %} + {% do adapter.execute(elementary.format_query_with_metadata(query), fetch=false) %} {% endmacro %} {% macro format_query_with_metadata(query) %}