dbt-adapters 1.6.1__tar.gz → 1.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dbt-adapters might be problematic. Click here for more details.

Files changed (166) hide show
  1. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/PKG-INFO +3 -4
  2. dbt_adapters-1.7.2/dbt/adapters/__about__.py +1 -0
  3. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/impl.py +8 -12
  4. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/relation.py +11 -0
  5. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/exceptions/compilation.py +4 -2
  6. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +3 -2
  7. dbt_adapters-1.7.2/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +259 -0
  8. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/snapshots/snapshot.sql +16 -11
  9. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/snapshots/snapshot_merge.sql +10 -3
  10. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/snapshots/strategies.sql +18 -12
  11. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/pyproject.toml +2 -3
  12. dbt_adapters-1.6.1/dbt/adapters/__about__.py +0 -1
  13. dbt_adapters-1.6.1/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +0 -206
  14. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/.gitignore +0 -0
  15. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/LICENSE +0 -0
  16. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/README.md +0 -0
  17. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/__init__.py +0 -0
  18. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/__init__.py +0 -0
  19. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/README.md +0 -0
  20. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/__init__.py +0 -0
  21. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/column.py +0 -0
  22. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/connections.py +0 -0
  23. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/meta.py +0 -0
  24. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/plugin.py +0 -0
  25. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/base/query_headers.py +0 -0
  26. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/cache.py +0 -0
  27. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/capability.py +0 -0
  28. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/clients/__init__.py +0 -0
  29. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/clients/jinja.py +0 -0
  30. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/contracts/__init__.py +0 -0
  31. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/contracts/connection.py +0 -0
  32. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/contracts/macros.py +0 -0
  33. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/contracts/relation.py +0 -0
  34. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/README.md +0 -0
  35. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/__init__.py +0 -0
  36. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/adapter_types.proto +0 -0
  37. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/adapter_types_pb2.py +0 -0
  38. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/base_types.py +0 -0
  39. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/logging.py +0 -0
  40. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/events/types.py +0 -0
  41. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/exceptions/__init__.py +0 -0
  42. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/exceptions/alias.py +0 -0
  43. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/exceptions/cache.py +0 -0
  44. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/exceptions/connection.py +0 -0
  45. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/exceptions/database.py +0 -0
  46. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/factory.py +0 -0
  47. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/protocol.py +0 -0
  48. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/py.typed +0 -0
  49. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/__init__.py +0 -0
  50. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/cursor.py +0 -0
  51. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/description.py +0 -0
  52. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/execute.py +0 -0
  53. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/fetchall.py +0 -0
  54. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/fetchmany.py +0 -0
  55. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/fetchone.py +0 -0
  56. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/cursor/rowcount.py +0 -0
  57. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/record/handle.py +0 -0
  58. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/reference_keys.py +0 -0
  59. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/relation_configs/README.md +0 -0
  60. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/relation_configs/__init__.py +0 -0
  61. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/relation_configs/config_base.py +0 -0
  62. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/relation_configs/config_change.py +0 -0
  63. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/relation_configs/config_validation.py +0 -0
  64. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/sql/__init__.py +0 -0
  65. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/sql/connections.py +0 -0
  66. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/sql/impl.py +0 -0
  67. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/adapters/utils.py +0 -0
  68. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/__init__.py +0 -0
  69. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/__init__.py +0 -0
  70. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/dbt_project.yml +0 -0
  71. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/docs/overview.md +0 -0
  72. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/apply_grants.sql +0 -0
  73. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/columns.sql +0 -0
  74. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/freshness.sql +0 -0
  75. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/indexes.sql +0 -0
  76. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/metadata.sql +0 -0
  77. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/persist_docs.sql +0 -0
  78. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/relation.sql +0 -0
  79. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/schema.sql +0 -0
  80. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/show.sql +0 -0
  81. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/timestamps.sql +0 -0
  82. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/adapters/validate_sql.sql +0 -0
  83. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/etc/datetime.sql +0 -0
  84. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/etc/statement.sql +0 -0
  85. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/generic_test_sql/accepted_values.sql +0 -0
  86. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/generic_test_sql/not_null.sql +0 -0
  87. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/generic_test_sql/relationships.sql +0 -0
  88. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/generic_test_sql/unique.sql +0 -0
  89. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/get_custom_name/get_custom_alias.sql +0 -0
  90. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/get_custom_name/get_custom_database.sql +0 -0
  91. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql +0 -0
  92. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/configs.sql +0 -0
  93. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/hooks.sql +0 -0
  94. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql +0 -0
  95. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/clone/clone.sql +0 -0
  96. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/clone/create_or_replace_clone.sql +0 -0
  97. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql +0 -0
  98. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql +0 -0
  99. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/incremental/merge.sql +0 -0
  100. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql +0 -0
  101. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/incremental/strategies.sql +0 -0
  102. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/materialized_view.sql +0 -0
  103. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/table.sql +0 -0
  104. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/models/view.sql +0 -0
  105. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/seeds/helpers.sql +0 -0
  106. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/seeds/seed.sql +0 -0
  107. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/tests/helpers.sql +0 -0
  108. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/tests/test.sql +0 -0
  109. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/tests/unit.sql +0 -0
  110. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/materializations/tests/where_subquery.sql +0 -0
  111. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/python_model/python.sql +0 -0
  112. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/column/columns_spec_ddl.sql +0 -0
  113. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/create.sql +0 -0
  114. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/create_backup.sql +0 -0
  115. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/create_intermediate.sql +0 -0
  116. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/drop.sql +0 -0
  117. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/drop_backup.sql +0 -0
  118. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/materialized_view/alter.sql +0 -0
  119. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/materialized_view/create.sql +0 -0
  120. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/materialized_view/drop.sql +0 -0
  121. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/materialized_view/refresh.sql +0 -0
  122. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/materialized_view/rename.sql +0 -0
  123. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/materialized_view/replace.sql +0 -0
  124. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/rename.sql +0 -0
  125. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/rename_intermediate.sql +0 -0
  126. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/replace.sql +0 -0
  127. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/schema.sql +0 -0
  128. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/table/create.sql +0 -0
  129. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/table/drop.sql +0 -0
  130. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/table/rename.sql +0 -0
  131. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/table/replace.sql +0 -0
  132. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/view/create.sql +0 -0
  133. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/view/drop.sql +0 -0
  134. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/view/rename.sql +0 -0
  135. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/relations/view/replace.sql +0 -0
  136. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql +0 -0
  137. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/any_value.sql +0 -0
  138. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/array_append.sql +0 -0
  139. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/array_concat.sql +0 -0
  140. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/array_construct.sql +0 -0
  141. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/bool_or.sql +0 -0
  142. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/cast.sql +0 -0
  143. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/cast_bool_to_text.sql +0 -0
  144. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/concat.sql +0 -0
  145. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/data_types.sql +0 -0
  146. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/date.sql +0 -0
  147. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/date_spine.sql +0 -0
  148. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/date_trunc.sql +0 -0
  149. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/dateadd.sql +0 -0
  150. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/datediff.sql +0 -0
  151. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/escape_single_quotes.sql +0 -0
  152. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/except.sql +0 -0
  153. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/generate_series.sql +0 -0
  154. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/hash.sql +0 -0
  155. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/intersect.sql +0 -0
  156. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/last_day.sql +0 -0
  157. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/length.sql +0 -0
  158. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/listagg.sql +0 -0
  159. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/literal.sql +0 -0
  160. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/position.sql +0 -0
  161. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/replace.sql +0 -0
  162. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/right.sql +0 -0
  163. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/safe_cast.sql +0 -0
  164. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/macros/utils/split_part.sql +0 -0
  165. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/global_project/tests/generic/builtin.sql +0 -0
  166. {dbt_adapters-1.6.1 → dbt_adapters-1.7.2}/dbt/include/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-adapters
3
- Version: 1.6.1
3
+ Version: 1.7.2
4
4
  Summary: The set of adapter protocols and base functionality that supports integration with dbt-core
5
5
  Project-URL: Homepage, https://github.com/dbt-labs/dbt-adapters
6
6
  Project-URL: Documentation, https://docs.getdbt.com
@@ -16,14 +16,13 @@ Classifier: License :: OSI Approved :: Apache Software License
16
16
  Classifier: Operating System :: MacOS :: MacOS X
17
17
  Classifier: Operating System :: Microsoft :: Windows
18
18
  Classifier: Operating System :: POSIX :: Linux
19
- Classifier: Programming Language :: Python :: 3.8
20
19
  Classifier: Programming Language :: Python :: 3.9
21
20
  Classifier: Programming Language :: Python :: 3.10
22
21
  Classifier: Programming Language :: Python :: 3.11
23
22
  Classifier: Programming Language :: Python :: 3.12
24
- Requires-Python: >=3.8.0
23
+ Requires-Python: >=3.9.0
25
24
  Requires-Dist: agate<2.0,>=1.0
26
- Requires-Dist: dbt-common<2.0,>=1.8
25
+ Requires-Dist: dbt-common<2.0,>=1.11
27
26
  Requires-Dist: mashumaro[msgpack]<4.0,>=3.0
28
27
  Requires-Dist: protobuf<5.0,>=3.0
29
28
  Requires-Dist: pytz>=2015.7
@@ -0,0 +1 @@
1
+ version = "1.7.2"
@@ -83,7 +83,6 @@ from dbt.adapters.exceptions import (
83
83
  QuoteConfigTypeError,
84
84
  RelationReturnedMultipleResultsError,
85
85
  RenameToNoneAttemptedError,
86
- SnapshotTargetIncompleteError,
87
86
  SnapshotTargetNotSnapshotTableError,
88
87
  UnexpectedNonTimestampError,
89
88
  )
@@ -764,7 +763,9 @@ class BaseAdapter(metaclass=AdapterMeta):
764
763
  return [col for (col_name, col) in from_columns.items() if col_name in missing_columns]
765
764
 
766
765
  @available.parse_none
767
- def valid_snapshot_target(self, relation: BaseRelation) -> None:
766
+ def valid_snapshot_target(
767
+ self, relation: BaseRelation, column_names: Optional[Dict[str, str]] = None
768
+ ) -> None:
768
769
  """Ensure that the target relation is valid, by making sure it has the
769
770
  expected columns.
770
771
 
@@ -782,21 +783,16 @@ class BaseAdapter(metaclass=AdapterMeta):
782
783
 
783
784
  columns = self.get_columns_in_relation(relation)
784
785
  names = set(c.name.lower() for c in columns)
785
- expanded_keys = ("scd_id", "valid_from", "valid_to")
786
- extra = []
787
786
  missing = []
788
- for legacy in expanded_keys:
789
- desired = "dbt_" + legacy
787
+ # Note: we're not checking dbt_updated_at here because it's not
788
+ # always present.
789
+ for column in ("dbt_scd_id", "dbt_valid_from", "dbt_valid_to"):
790
+ desired = column_names[column] if column_names else column
790
791
  if desired not in names:
791
792
  missing.append(desired)
792
- if legacy in names:
793
- extra.append(legacy)
794
793
 
795
794
  if missing:
796
- if extra:
797
- raise SnapshotTargetIncompleteError(extra, missing)
798
- else:
799
- raise SnapshotTargetNotSnapshotTableError(missing)
795
+ raise SnapshotTargetNotSnapshotTableError(missing)
800
796
 
801
797
  @available.parse_none
802
798
  def expand_target_column_types(
@@ -6,6 +6,7 @@ from typing import (
6
6
  Dict,
7
7
  FrozenSet,
8
8
  Iterator,
9
+ List,
9
10
  Optional,
10
11
  Set,
11
12
  Tuple,
@@ -341,6 +342,16 @@ class BaseRelation(FakeAPIObject, Hashable):
341
342
  )
342
343
  return cls.from_dict(kwargs)
343
344
 
345
+ @classmethod
346
+ def scd_args(cls: Type[Self], primary_key: Union[str, List[str]], updated_at) -> List[str]:
347
+ scd_args = []
348
+ if isinstance(primary_key, list):
349
+ scd_args.extend(primary_key)
350
+ else:
351
+ scd_args.append(primary_key)
352
+ scd_args.append(updated_at)
353
+ return scd_args
354
+
344
355
  @property
345
356
  def can_be_renamed(self) -> bool:
346
357
  return self.type in self.renameable_relations
@@ -150,8 +150,10 @@ class SnapshotTargetNotSnapshotTableError(CompilationError):
150
150
  super().__init__(msg=self.get_message())
151
151
 
152
152
  def get_message(self) -> str:
153
- msg = 'Snapshot target is not a snapshot table (missing "{}")'.format(
154
- '", "'.join(self.missing)
153
+ missing = '", "'.join(self.missing)
154
+ msg = (
155
+ f'Snapshot target is missing configured columns (missing "{missing}"). '
156
+ "See https://docs.getdbt.com/docs/build/snapshots#snapshot-meta-fields for more information."
155
157
  )
156
158
  return msg
157
159
 
@@ -32,6 +32,9 @@
32
32
 
33
33
  {% set to_drop = [] %}
34
34
 
35
+ {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}
36
+ {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}
37
+
35
38
  {% if existing_relation is none %}
36
39
  {% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}
37
40
  {% elif full_refresh_mode %}
@@ -52,9 +55,7 @@
52
55
  {% endif %}
53
56
 
54
57
  {#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}
55
- {% set incremental_strategy = config.get('incremental_strategy') or 'default' %}
56
58
  {% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}
57
- {% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}
58
59
  {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}
59
60
  {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}
60
61
 
@@ -0,0 +1,259 @@
1
+ {#
2
+ Add new columns to the table if applicable
3
+ #}
4
+ {% macro create_columns(relation, columns) %}
5
+ {{ adapter.dispatch('create_columns', 'dbt')(relation, columns) }}
6
+ {% endmacro %}
7
+
8
+ {% macro default__create_columns(relation, columns) %}
9
+ {% for column in columns %}
10
+ {% call statement() %}
11
+ alter table {{ relation.render() }} add column "{{ column.name }}" {{ column.data_type }};
12
+ {% endcall %}
13
+ {% endfor %}
14
+ {% endmacro %}
15
+
16
+
17
+ {% macro post_snapshot(staging_relation) %}
18
+ {{ adapter.dispatch('post_snapshot', 'dbt')(staging_relation) }}
19
+ {% endmacro %}
20
+
21
+ {% macro default__post_snapshot(staging_relation) %}
22
+ {# no-op #}
23
+ {% endmacro %}
24
+
25
+ {% macro get_true_sql() %}
26
+ {{ adapter.dispatch('get_true_sql', 'dbt')() }}
27
+ {% endmacro %}
28
+
29
+ {% macro default__get_true_sql() %}
30
+ {{ return('TRUE') }}
31
+ {% endmacro %}
32
+
33
+ {% macro snapshot_staging_table(strategy, source_sql, target_relation) -%}
34
+ {{ adapter.dispatch('snapshot_staging_table', 'dbt')(strategy, source_sql, target_relation) }}
35
+ {% endmacro %}
36
+
37
+ {% macro get_snapshot_table_column_names() %}
38
+ {{ return({'dbt_valid_to': 'dbt_valid_to', 'dbt_valid_from': 'dbt_valid_from', 'dbt_scd_id': 'dbt_scd_id', 'dbt_updated_at': 'dbt_updated_at'}) }}
39
+ {% endmacro %}
40
+
41
+ {% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}
42
+ {% set columns = config.get('snapshot_table_column_names') or get_snapshot_table_column_names() %}
43
+
44
+ with snapshot_query as (
45
+
46
+ {{ source_sql }}
47
+
48
+ ),
49
+
50
+ snapshotted_data as (
51
+
52
+ select *, {{ unique_key_fields(strategy.unique_key) }}
53
+ from {{ target_relation }}
54
+ where
55
+ {% if config.get('dbt_valid_to_current') %}
56
+ {# Check for either dbt_valid_to_current OR null, in order to correctly update records with nulls #}
57
+ ( {{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or {{ columns.dbt_valid_to }} is null)
58
+ {% else %}
59
+ {{ columns.dbt_valid_to }} is null
60
+ {% endif %}
61
+
62
+ ),
63
+
64
+ insertions_source_data as (
65
+
66
+ select *, {{ unique_key_fields(strategy.unique_key) }},
67
+ {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
68
+ {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
69
+ {{ get_dbt_valid_to_current(strategy, columns) }},
70
+ {{ strategy.scd_id }} as {{ columns.dbt_scd_id }}
71
+
72
+ from snapshot_query
73
+ ),
74
+
75
+ updates_source_data as (
76
+
77
+ select *, {{ unique_key_fields(strategy.unique_key) }},
78
+ {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
79
+ {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
80
+ {{ strategy.updated_at }} as {{ columns.dbt_valid_to }}
81
+
82
+ from snapshot_query
83
+ ),
84
+
85
+ {%- if strategy.invalidate_hard_deletes %}
86
+
87
+ deletes_source_data as (
88
+
89
+ select *, {{ unique_key_fields(strategy.unique_key) }}
90
+ from snapshot_query
91
+ ),
92
+ {% endif %}
93
+
94
+ insertions as (
95
+
96
+ select
97
+ 'insert' as dbt_change_type,
98
+ source_data.*
99
+
100
+ from insertions_source_data as source_data
101
+ left outer join snapshotted_data
102
+ on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
103
+ where {{ unique_key_is_null(strategy.unique_key, "snapshotted_data") }}
104
+ or ({{ unique_key_is_not_null(strategy.unique_key, "snapshotted_data") }} and ({{ strategy.row_changed }})
105
+
106
+ )
107
+
108
+ ),
109
+
110
+ updates as (
111
+
112
+ select
113
+ 'update' as dbt_change_type,
114
+ source_data.*,
115
+ snapshotted_data.{{ columns.dbt_scd_id }}
116
+
117
+ from updates_source_data as source_data
118
+ join snapshotted_data
119
+ on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
120
+ where (
121
+ {{ strategy.row_changed }}
122
+ )
123
+ )
124
+
125
+ {%- if strategy.invalidate_hard_deletes -%}
126
+ ,
127
+
128
+ deletes as (
129
+
130
+ select
131
+ 'delete' as dbt_change_type,
132
+ source_data.*,
133
+ {{ snapshot_get_time() }} as {{ columns.dbt_valid_from }},
134
+ {{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},
135
+ {{ snapshot_get_time() }} as {{ columns.dbt_valid_to }},
136
+ snapshotted_data.{{ columns.dbt_scd_id }}
137
+
138
+ from snapshotted_data
139
+ left join deletes_source_data as source_data
140
+ on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
141
+ where {{ unique_key_is_null(strategy.unique_key, "source_data") }}
142
+ )
143
+ {%- endif %}
144
+
145
+ select * from insertions
146
+ union all
147
+ select * from updates
148
+ {%- if strategy.invalidate_hard_deletes %}
149
+ union all
150
+ select * from deletes
151
+ {%- endif %}
152
+
153
+ {%- endmacro %}
154
+
155
+
156
+ {% macro build_snapshot_table(strategy, sql) -%}
157
+ {{ adapter.dispatch('build_snapshot_table', 'dbt')(strategy, sql) }}
158
+ {% endmacro %}
159
+
160
+ {% macro default__build_snapshot_table(strategy, sql) %}
161
+ {% set columns = config.get('snapshot_table_column_names') or get_snapshot_table_column_names() %}
162
+
163
+ select *,
164
+ {{ strategy.scd_id }} as {{ columns.dbt_scd_id }},
165
+ {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
166
+ {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
167
+ {{ get_dbt_valid_to_current(strategy, columns) }}
168
+ from (
169
+ {{ sql }}
170
+ ) sbq
171
+
172
+ {% endmacro %}
173
+
174
+
175
+ {% macro build_snapshot_staging_table(strategy, sql, target_relation) %}
176
+ {% set temp_relation = make_temp_relation(target_relation) %}
177
+
178
+ {% set select = snapshot_staging_table(strategy, sql, target_relation) %}
179
+
180
+ {% call statement('build_snapshot_staging_relation') %}
181
+ {{ create_table_as(True, temp_relation, select) }}
182
+ {% endcall %}
183
+
184
+ {% do return(temp_relation) %}
185
+ {% endmacro %}
186
+
187
+
188
+ {% macro get_updated_at_column_data_type(snapshot_sql) %}
189
+ {% set snapshot_sql_column_schema = get_column_schema_from_query(snapshot_sql) %}
190
+ {% set dbt_updated_at_data_type = null %}
191
+ {% set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}
192
+ {% set ns.dbt_updated_at_data_type = null -%}
193
+ {% for column in snapshot_sql_column_schema %}
194
+ {% if ((column.column == 'dbt_updated_at') or (column.column == 'DBT_UPDATED_AT')) %}
195
+ {% set ns.dbt_updated_at_data_type = column.dtype %}
196
+ {% endif %}
197
+ {% endfor %}
198
+ {{ return(ns.dbt_updated_at_data_type or none) }}
199
+ {% endmacro %}
200
+
201
+
202
+ {% macro check_time_data_types(sql) %}
203
+ {% set dbt_updated_at_data_type = get_updated_at_column_data_type(sql) %}
204
+ {% set snapshot_get_time_data_type = get_snapshot_get_time_data_type() %}
205
+ {% if snapshot_get_time_data_type is not none and dbt_updated_at_data_type is not none and snapshot_get_time_data_type != dbt_updated_at_data_type %}
206
+ {% if exceptions.warn_snapshot_timestamp_data_types %}
207
+ {{ exceptions.warn_snapshot_timestamp_data_types(snapshot_get_time_data_type, dbt_updated_at_data_type) }}
208
+ {% endif %}
209
+ {% endif %}
210
+ {% endmacro %}
211
+
212
+
213
+ {% macro get_dbt_valid_to_current(strategy, columns) %}
214
+ {% set dbt_valid_to_current = config.get('dbt_valid_to_current') or "null" %}
215
+ coalesce(nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}), {{dbt_valid_to_current}})
216
+ as {{ columns.dbt_valid_to }}
217
+ {% endmacro %}
218
+
219
+
220
+ {% macro unique_key_fields(unique_key) %}
221
+ {% if unique_key | is_list %}
222
+ {% for key in unique_key %}
223
+ {{ key }} as dbt_unique_key_{{ loop.index }}
224
+ {%- if not loop.last %} , {%- endif %}
225
+ {% endfor %}
226
+ {% else %}
227
+ {{ unique_key }} as dbt_unique_key
228
+ {% endif %}
229
+ {% endmacro %}
230
+
231
+
232
+ {% macro unique_key_join_on(unique_key, identifier, from_identifier) %}
233
+ {% if unique_key | is_list %}
234
+ {% for key in unique_key %}
235
+ {{ identifier }}.dbt_unique_key_{{ loop.index }} = {{ from_identifier }}.dbt_unique_key_{{ loop.index }}
236
+ {%- if not loop.last %} and {%- endif %}
237
+ {% endfor %}
238
+ {% else %}
239
+ {{ identifier }}.dbt_unique_key = {{ from_identifier }}.dbt_unique_key
240
+ {% endif %}
241
+ {% endmacro %}
242
+
243
+
244
+ {% macro unique_key_is_null(unique_key, identifier) %}
245
+ {% if unique_key | is_list %}
246
+ {{ identifier }}.dbt_unique_key_1 is null
247
+ {% else %}
248
+ {{ identifier }}.dbt_unique_key is null
249
+ {% endif %}
250
+ {% endmacro %}
251
+
252
+
253
+ {% macro unique_key_is_not_null(unique_key, identifier) %}
254
+ {% if unique_key | is_list %}
255
+ {{ identifier }}.dbt_unique_key_1 is not null
256
+ {% else %}
257
+ {{ identifier }}.dbt_unique_key is not null
258
+ {% endif %}
259
+ {% endmacro %}
@@ -1,5 +1,4 @@
1
1
  {% materialization snapshot, default %}
2
- {%- set config = model['config'] -%}
3
2
 
4
3
  {%- set target_table = model.get('alias', model.get('name')) -%}
5
4
 
@@ -24,7 +23,9 @@
24
23
  {{ run_hooks(pre_hooks, inside_transaction=True) }}
25
24
 
26
25
  {% set strategy_macro = strategy_dispatch(strategy_name) %}
27
- {% set strategy = strategy_macro(model, "snapshotted_data", "source_data", config, target_relation_exists) %}
26
+ {# The model['config'] parameter below is no longer used, but passing anyway for compatibility #}
27
+ {# It was a dictionary of config, instead of the config object from the context #}
28
+ {% set strategy = strategy_macro(model, "snapshotted_data", "source_data", model['config'], target_relation_exists) %}
28
29
 
29
30
  {% if not target_relation_exists %}
30
31
 
@@ -34,7 +35,9 @@
34
35
 
35
36
  {% else %}
36
37
 
37
- {{ adapter.valid_snapshot_target(target_relation) }}
38
+ {% set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() %}
39
+
40
+ {{ adapter.valid_snapshot_target(target_relation, columns) }}
38
41
 
39
42
  {% set build_or_select_sql = snapshot_staging_table(strategy, sql, target_relation) %}
40
43
  {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}
@@ -43,20 +46,22 @@
43
46
  {% do adapter.expand_target_column_types(from_relation=staging_table,
44
47
  to_relation=target_relation) %}
45
48
 
49
+ {% set remove_columns = ['dbt_change_type', 'DBT_CHANGE_TYPE', 'dbt_unique_key', 'DBT_UNIQUE_KEY'] %}
50
+ {% if unique_key | is_list %}
51
+ {% for key in strategy.unique_key %}
52
+ {{ remove_columns.append('dbt_unique_key_' + loop.index|string) }}
53
+ {{ remove_columns.append('DBT_UNIQUE_KEY_' + loop.index|string) }}
54
+ {% endfor %}
55
+ {% endif %}
56
+
46
57
  {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)
47
- | rejectattr('name', 'equalto', 'dbt_change_type')
48
- | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')
49
- | rejectattr('name', 'equalto', 'dbt_unique_key')
50
- | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')
58
+ | rejectattr('name', 'in', remove_columns)
51
59
  | list %}
52
60
 
53
61
  {% do create_columns(target_relation, missing_columns) %}
54
62
 
55
63
  {% set source_columns = adapter.get_columns_in_relation(staging_table)
56
- | rejectattr('name', 'equalto', 'dbt_change_type')
57
- | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')
58
- | rejectattr('name', 'equalto', 'dbt_unique_key')
59
- | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')
64
+ | rejectattr('name', 'in', remove_columns)
60
65
  | list %}
61
66
 
62
67
  {% set quoted_source_columns = [] %}
@@ -7,15 +7,22 @@
7
7
  {% macro default__snapshot_merge_sql(target, source, insert_cols) -%}
8
8
  {%- set insert_cols_csv = insert_cols | join(', ') -%}
9
9
 
10
+ {%- set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() -%}
11
+
10
12
  merge into {{ target.render() }} as DBT_INTERNAL_DEST
11
13
  using {{ source }} as DBT_INTERNAL_SOURCE
12
- on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id
14
+ on DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }} = DBT_INTERNAL_DEST.{{ columns.dbt_scd_id }}
13
15
 
14
16
  when matched
15
- and DBT_INTERNAL_DEST.dbt_valid_to is null
17
+ {% if config.get("dbt_valid_to_current") %}
18
+ and (DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or
19
+ DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null)
20
+ {% else %}
21
+ and DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null
22
+ {% endif %}
16
23
  and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')
17
24
  then update
18
- set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to
25
+ set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}
19
26
 
20
27
  when not matched
21
28
  and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'
@@ -49,10 +49,13 @@
49
49
  {#
50
50
  Core strategy definitions
51
51
  #}
52
- {% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}
53
- {% set primary_key = config['unique_key'] %}
54
- {% set updated_at = config['updated_at'] %}
55
- {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}
52
+
53
+ {% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, model_config, target_exists) %}
54
+ {# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}
55
+ {% set primary_key = config.get('unique_key') %}
56
+ {% set updated_at = config.get('updated_at') %}
57
+ {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes') or false %}
58
+ {% set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() %}
56
59
 
57
60
  {#/*
58
61
  The snapshot relation might not have an {{ updated_at }} value if the
@@ -64,10 +67,11 @@
64
67
  See https://github.com/dbt-labs/dbt-core/issues/2350
65
68
  */ #}
66
69
  {% set row_changed_expr -%}
67
- ({{ snapshotted_rel }}.dbt_valid_from < {{ current_rel }}.{{ updated_at }})
70
+ ({{ snapshotted_rel }}.{{ columns.dbt_valid_from }} < {{ current_rel }}.{{ updated_at }})
68
71
  {%- endset %}
69
72
 
70
- {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}
73
+ {% set scd_args = api.Relation.scd_args(primary_key, updated_at) %}
74
+ {% set scd_id_expr = snapshot_hash_arguments(scd_args) %}
71
75
 
72
76
  {% do return({
73
77
  "unique_key": primary_key,
@@ -133,11 +137,12 @@
133
137
  {%- endmacro %}
134
138
 
135
139
 
136
- {% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, config, target_exists) %}
137
- {% set check_cols_config = config['check_cols'] %}
138
- {% set primary_key = config['unique_key'] %}
139
- {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes', false) %}
140
- {% set updated_at = config.get('updated_at', snapshot_get_time()) %}
140
+ {% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, model_config, target_exists) %}
141
+ {# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}
142
+ {% set check_cols_config = config.get('check_cols') %}
143
+ {% set primary_key = config.get('unique_key') %}
144
+ {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes') or false %}
145
+ {% set updated_at = config.get('updated_at') or snapshot_get_time() %}
141
146
 
142
147
  {% set column_added = false %}
143
148
 
@@ -162,7 +167,8 @@
162
167
  )
163
168
  {%- endset %}
164
169
 
165
- {% set scd_id_expr = snapshot_hash_arguments([primary_key, updated_at]) %}
170
+ {% set scd_args = api.Relation.scd_args(primary_key, updated_at) %}
171
+ {% set scd_id_expr = snapshot_hash_arguments(scd_args) %}
166
172
 
167
173
  {% do return({
168
174
  "unique_key": primary_key,
@@ -4,7 +4,7 @@ name = "dbt-adapters"
4
4
  description = "The set of adapter protocols and base functionality that supports integration with dbt-core"
5
5
  readme = "README.md"
6
6
  keywords = ["dbt", "adapter", "adapters", "database", "elt", "dbt-core", "dbt Core", "dbt Cloud", "dbt Labs"]
7
- requires-python = ">=3.8.0"
7
+ requires-python = ">=3.9.0"
8
8
  authors = [
9
9
  { name = "dbt Labs", email = "info@dbtlabs.com" },
10
10
  ]
@@ -17,14 +17,13 @@ classifiers = [
17
17
  "Operating System :: MacOS :: MacOS X",
18
18
  "Operating System :: Microsoft :: Windows",
19
19
  "Operating System :: POSIX :: Linux",
20
- "Programming Language :: Python :: 3.8",
21
20
  "Programming Language :: Python :: 3.9",
22
21
  "Programming Language :: Python :: 3.10",
23
22
  "Programming Language :: Python :: 3.11",
24
23
  "Programming Language :: Python :: 3.12",
25
24
  ]
26
25
  dependencies = [
27
- "dbt-common>=1.8,<2.0",
26
+ "dbt-common>=1.11,<2.0",
28
27
  "pytz>=2015.7",
29
28
  # installed via dbt-common but used directly
30
29
  "agate>=1.0,<2.0",
@@ -1 +0,0 @@
1
- version = "1.6.1"