Skip to content

Commit 84a4fb8

Browse files
committed
Release v1.3.1 changes
- Added module and client_identifier as dbt connection string - Bugfix for dbt snapshots #52 - oracledb dependency upgraded to 1.2.1 - Global temp relation name (time format) includes milliseconds
1 parent 4a64486 commit 84a4fb8

File tree

6 files changed

+29
-5
lines changed

6 files changed

+29
-5
lines changed

dbt/adapters/oracle/connections.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
from dataclasses import dataclass, field
2020
import enum
2121
import time
22+
import uuid
2223

2324
import dbt.exceptions
2425
from dbt.adapters.base import Credentials
2526
from dbt.adapters.sql import SQLConnectionManager
2627
from dbt.contracts.connection import AdapterResponse
2728
from dbt.events import AdapterLogger
2829

30+
from dbt.version import __version__ as dbt_version
2931
from dbt.adapters.oracle.connection_helper import oracledb, SQLNET_ORA_CONFIG
3032

3133
logger = AdapterLogger("oracle")
@@ -177,6 +179,9 @@ def open(cls, connection):
177179

178180
try:
179181
handle = oracledb.connect(**conn_config)
182+
# client_identifier and module are saved in corresponding columns in v$session
183+
handle.module = f'dbt-{dbt_version}'
184+
handle.client_identifier = f'dbt-oracle-client-{uuid.uuid4()}'
180185
connection.handle = handle
181186
connection.state = 'open'
182187
except oracledb.DatabaseError as e:
@@ -270,7 +275,6 @@ def add_query(
270275

271276
logger.debug(f'On {connection.name}: f{log_sql}')
272277
pre = time.time()
273-
274278
cursor = connection.handle.cursor()
275279
cursor.execute(sql, bindings)
276280
connection.handle.commit()

dbt/include/oracle/macros/adapters.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@
348348

349349
{% macro oracle__make_temp_relation(base_relation, suffix) %}
350350
{% set dt = modules.datetime.datetime.now() %}
351-
{% set dtstring = dt.strftime("%H%M%S") %}
351+
{% set dtstring = dt.strftime("%H%M%S%f") %}
352352
{% set tmp_identifier = 'o$pt_' ~ base_relation.identifier ~ dtstring %}
353353
{% set tmp_relation = base_relation.incorporate(
354354
path={"identifier": tmp_identifier, "schema": None}) -%}

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,23 @@
9898
{%- endfor -%}
9999
{{ return([ns.column_added, intersection]) }}
100100
{%- endmacro %}
101+
102+
{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}
103+
{% set primary_key = config['unique_key'] %}
104+
{% set updated_at = config['updated_at'] %}
105+
{% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}
106+
107+
{% set row_changed_expr -%}
108+
({{ snapshotted_rel }}.dbt_valid_from < {{ current_rel }}.{{ updated_at }})
109+
{%- endset %}
110+
{# updated_at should be cast as timestamp because in hash computation "CAST(date as VARCHAR)" truncates time fields #}
111+
{% set scd_id_expr = snapshot_hash_arguments([primary_key, 'CAST(' ~ updated_at ~ ' AS TIMESTAMP)']) %}
112+
113+
{% do return({
114+
"unique_key": primary_key,
115+
"updated_at": updated_at,
116+
"row_changed": row_changed_expr,
117+
"scd_id": scd_id_expr,
118+
"invalidate_hard_deletes": invalidate_hard_deletes
119+
}) %}
120+
{% endmacro %}

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
dbt-core==1.3.1
22
cx_Oracle==8.3.0
3-
oracledb==1.2.0
3+
oracledb==1.2.1
44

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ include_package_data = True
3434
install_requires =
3535
dbt-core==1.3.1
3636
cx_Oracle==8.3.0
37-
oracledb==1.2.0
37+
oracledb==1.2.1
3838
test_suite=tests
3939
test_requires =
4040
dbt-tests-adapter==1.3.1

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
requirements = [
3535
"dbt-core==1.3.1",
3636
"cx_Oracle==8.3.0",
37-
"oracledb==1.2.0"
37+
"oracledb==1.2.1"
3838
]
3939

4040
test_requirements = [

0 commit comments

Comments
 (0)