Skip to content

Commit 03f260e

Browse files
committed
Added support for insert append for direct path inserts fixing ER #174
1 parent 607f332 commit 03f260e

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Configuration variables
2-
VERSION=1.9.1
2+
VERSION=1.9.2
33
PROJ_DIR?=$(shell pwd)
44
VENV_DIR?=${PROJ_DIR}/.bldenv
55
BUILD_DIR=${PROJ_DIR}/build

dbt/include/oracle/macros/materializations/incremental/strategies.sql

+15-4
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,15 @@
9494
9595
{% macro oracle__get_incremental_append_sql(args_dict) %}
9696
{%- set parallel = config.get('parallel', none) -%}
97+
{%- set insert_mode = config.get('insert_mode', none) -%}
9798
{%- set dest_columns = args_dict["dest_columns"] -%}
9899
{%- set temp_relation = args_dict["temp_relation"] -%}
99100
{%- set target_relation = args_dict["target_relation"] -%}
100101
{%- set dest_column_names = dest_columns | map(attribute='name') | list -%}
101102
{%- set dest_cols_csv = get_quoted_column_csv(model, dest_column_names) -%}
102-
INSERT {% if parallel %} /*+PARALLEL({{ parallel }})*/ {% endif %} INTO {{ target_relation }} ({{ dest_cols_csv }})
103+
INSERT {% if parallel %} /*+PARALLEL({{ parallel }})*/ {% endif %}
104+
{% if insert_mode == 'append' %} /*+ append */ {% endif %}
105+
INTO {{ target_relation }} ({{ dest_cols_csv }})
103106
(
104107
SELECT {{ dest_cols_csv }}
105108
FROM {{ temp_relation }}
@@ -108,6 +111,7 @@
108111
109112
{% macro oracle__get_incremental_merge_sql(args_dict) %}
110113
{%- set parallel = config.get('parallel', none) -%}
114+
{%- set insert_mode = config.get('insert_mode', none) -%}
111115
{%- set dest_columns = args_dict["dest_columns"] -%}
112116
{%- set temp_relation = args_dict["temp_relation"] -%}
113117
{%- set target_relation = args_dict["target_relation"] -%}
@@ -138,7 +142,9 @@
138142
{% endfor -%}
139143
)
140144
{%- else -%}
141-
insert {% if parallel %} /*+parallel({{ parallel }})*/ {% endif %} into {{ target_relation }} ({{ dest_cols_csv }})
145+
insert {% if parallel %} /*+parallel({{ parallel }})*/ {% endif %}
146+
{% if insert_mode == 'append' %} /*+ append */ {% endif %}
147+
into {{ target_relation }} ({{ dest_cols_csv }})
142148
(
143149
select {{ dest_cols_csv }}
144150
from {{ temp_relation }}
@@ -178,6 +184,7 @@
178184
179185
{% macro oracle__get_incremental_delete_insert_sql(args_dict) %}
180186
{%- set parallel = config.get('parallel', none) -%}
187+
{%- set insert_mode = config.get('insert_mode', none) -%}
181188
{%- set dest_columns = args_dict["dest_columns"] -%}
182189
{%- set temp_relation = args_dict["temp_relation"] -%}
183190
{%- set target_relation = args_dict["target_relation"] -%}
@@ -188,12 +195,16 @@
188195
{%- if unique_key or incremental_predicates -%}
189196
BEGIN
190197
EXECUTE IMMEDIATE '{{ oracle__get_delete_sql_for_delete_insert_strategy(target_relation, temp_relation, unique_key, incremental_predicates) }}';
191-
EXECUTE IMMEDIATE 'insert {% if parallel %} /*+parallel({{ parallel }})*/ {% endif %} into {{ target_relation }} ({{ dest_cols_csv }})(
198+
EXECUTE IMMEDIATE 'insert {% if parallel %} /*+parallel({{ parallel }})*/ {% endif %}
199+
{% if insert_mode == 'append' %} /*+ append */ {% endif %}
200+
into {{ target_relation }} ({{ dest_cols_csv }})(
192201
select {{ dest_cols_csv }}
193202
from {{ temp_relation }})';
194203
END;
195204
{%- else -%}
196-
insert {% if parallel %} /*+parallel({{ parallel }})*/ {% endif %} into {{ target_relation }} ({{ dest_cols_csv }})
205+
insert {% if parallel %} /*+parallel({{ parallel }})*/ {% endif %}
206+
{% if insert_mode == 'append' %} /*+ append */ {% endif %}
207+
into {{ target_relation }} ({{ dest_cols_csv }})
197208
(
198209
select {{ dest_cols_csv }}
199210
from {{ temp_relation }}

dbt_adbs_test_project/models/us_product_delete_insert.sql

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
incremental_predicates=["DBT_INTERNAL_DEST.calendar_month_desc > TO_CHAR(sysdate, ''yyyy/mm/dd'')"],
2121
incremental_strategy='delete+insert',
2222
parallel=4,
23+
insert_mode="append",
2324
partition_config={"clause": "PARTITION BY HASH(PROD_NAME) PARTITIONS 4"},
2425
table_compression_clause='COLUMN STORE COMPRESS FOR QUERY LOW')
2526
}}

setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = dbt-oracle
3-
version = 1.9.1
3+
version = 1.9.2
44
description = dbt (data build tool) adapter for Oracle Autonomous Database
55
long_description = file: README.md
66
long_description_content_type = text/markdown

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161

6262
url = 'https://github.com/oracle/dbt-oracle'
6363

64-
VERSION = '1.9.1'
64+
VERSION = '1.9.2'
6565
setup(
6666
author="Oracle",
6767
python_requires='>=3.9',

0 commit comments

Comments
 (0)