{% macro unique_key_join_on(unique_key, identifier, from_identifier) %} {% if unique_key | is_list %} {% for key in unique_key %} {% set source_unique_key = (identifier ~ ".dbt_unique_key_" ~ loop.index) | trim %} {% set target_unique_key = (from_identifier ~ ".dbt_unique_key_" ~ loop.index) | trim %} {# Use Oracle-specific NULL-safe equality matching oracle__equals macro #} ({{ source_unique_key }} = {{ target_unique_key }} OR ({{ source_unique_key }} IS NULL AND {{ target_unique_key }} IS NULL)) {%- if not loop.last %} and {%- endif %} {% endfor %} {% else %} {# Use Oracle-specific NULL-safe equality for single unique_key as well #} ({{ identifier }}.dbt_unique_key = {{ from_identifier }}.dbt_unique_key OR ({{ identifier }}.dbt_unique_key IS NULL AND {{ from_identifier }}.dbt_unique_key IS NULL)) {% endif %} {% endmacro %}