dbt-adapters 1.10.1__tar.gz → 1.10.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 (165) hide show
  1. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/PKG-INFO +1 -1
  2. dbt_adapters-1.10.2/dbt/adapters/__about__.py +1 -0
  3. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/impl.py +55 -2
  4. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +49 -5
  5. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/snapshots/snapshot.sql +1 -1
  6. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/snapshots/strategies.sql +8 -4
  7. dbt_adapters-1.10.1/dbt/adapters/__about__.py +0 -1
  8. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/.gitignore +0 -0
  9. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/LICENSE +0 -0
  10. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/README.md +0 -0
  11. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/__init__.py +0 -0
  12. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/__init__.py +0 -0
  13. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/README.md +0 -0
  14. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/__init__.py +0 -0
  15. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/column.py +0 -0
  16. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/connections.py +0 -0
  17. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/meta.py +0 -0
  18. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/plugin.py +0 -0
  19. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/query_headers.py +0 -0
  20. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/base/relation.py +0 -0
  21. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/cache.py +0 -0
  22. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/capability.py +0 -0
  23. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/clients/__init__.py +0 -0
  24. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/clients/jinja.py +0 -0
  25. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/contracts/__init__.py +0 -0
  26. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/contracts/connection.py +0 -0
  27. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/contracts/macros.py +0 -0
  28. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/contracts/relation.py +0 -0
  29. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/README.md +0 -0
  30. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/__init__.py +0 -0
  31. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/adapter_types.proto +0 -0
  32. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/adapter_types_pb2.py +0 -0
  33. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/base_types.py +0 -0
  34. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/logging.py +0 -0
  35. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/events/types.py +0 -0
  36. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/exceptions/__init__.py +0 -0
  37. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/exceptions/alias.py +0 -0
  38. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/exceptions/cache.py +0 -0
  39. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/exceptions/compilation.py +0 -0
  40. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/exceptions/connection.py +0 -0
  41. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/exceptions/database.py +0 -0
  42. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/factory.py +0 -0
  43. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/protocol.py +0 -0
  44. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/py.typed +0 -0
  45. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/__init__.py +0 -0
  46. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/cursor.py +0 -0
  47. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/description.py +0 -0
  48. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/execute.py +0 -0
  49. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/fetchall.py +0 -0
  50. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/fetchmany.py +0 -0
  51. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/fetchone.py +0 -0
  52. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/cursor/rowcount.py +0 -0
  53. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/record/handle.py +0 -0
  54. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/reference_keys.py +0 -0
  55. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/relation_configs/README.md +0 -0
  56. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/relation_configs/__init__.py +0 -0
  57. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/relation_configs/config_base.py +0 -0
  58. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/relation_configs/config_change.py +0 -0
  59. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/relation_configs/config_validation.py +0 -0
  60. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/sql/__init__.py +0 -0
  61. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/sql/connections.py +0 -0
  62. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/sql/impl.py +0 -0
  63. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/adapters/utils.py +0 -0
  64. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/__init__.py +0 -0
  65. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/__init__.py +0 -0
  66. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/dbt_project.yml +0 -0
  67. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/docs/overview.md +0 -0
  68. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/apply_grants.sql +0 -0
  69. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/columns.sql +0 -0
  70. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/freshness.sql +0 -0
  71. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/indexes.sql +0 -0
  72. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/metadata.sql +0 -0
  73. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/persist_docs.sql +0 -0
  74. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/relation.sql +0 -0
  75. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/schema.sql +0 -0
  76. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/show.sql +0 -0
  77. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/timestamps.sql +0 -0
  78. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/adapters/validate_sql.sql +0 -0
  79. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/etc/datetime.sql +0 -0
  80. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/etc/statement.sql +0 -0
  81. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/generic_test_sql/accepted_values.sql +0 -0
  82. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/generic_test_sql/not_null.sql +0 -0
  83. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/generic_test_sql/relationships.sql +0 -0
  84. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/generic_test_sql/unique.sql +0 -0
  85. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/get_custom_name/get_custom_alias.sql +0 -0
  86. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/get_custom_name/get_custom_database.sql +0 -0
  87. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql +0 -0
  88. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/configs.sql +0 -0
  89. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/hooks.sql +0 -0
  90. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql +0 -0
  91. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/clone/clone.sql +0 -0
  92. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/clone/create_or_replace_clone.sql +0 -0
  93. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql +0 -0
  94. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +0 -0
  95. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql +0 -0
  96. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/incremental/merge.sql +0 -0
  97. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql +0 -0
  98. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/incremental/strategies.sql +0 -0
  99. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/materialized_view.sql +0 -0
  100. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/table.sql +0 -0
  101. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/models/view.sql +0 -0
  102. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/seeds/helpers.sql +0 -0
  103. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/seeds/seed.sql +0 -0
  104. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/snapshots/snapshot_merge.sql +0 -0
  105. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/tests/helpers.sql +0 -0
  106. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/tests/test.sql +0 -0
  107. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/tests/unit.sql +0 -0
  108. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/materializations/tests/where_subquery.sql +0 -0
  109. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/python_model/python.sql +0 -0
  110. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/column/columns_spec_ddl.sql +0 -0
  111. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/create.sql +0 -0
  112. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/create_backup.sql +0 -0
  113. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/create_intermediate.sql +0 -0
  114. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/drop.sql +0 -0
  115. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/drop_backup.sql +0 -0
  116. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/materialized_view/alter.sql +0 -0
  117. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/materialized_view/create.sql +0 -0
  118. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/materialized_view/drop.sql +0 -0
  119. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/materialized_view/refresh.sql +0 -0
  120. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/materialized_view/rename.sql +0 -0
  121. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/materialized_view/replace.sql +0 -0
  122. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/rename.sql +0 -0
  123. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/rename_intermediate.sql +0 -0
  124. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/replace.sql +0 -0
  125. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/schema.sql +0 -0
  126. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/table/create.sql +0 -0
  127. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/table/drop.sql +0 -0
  128. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/table/rename.sql +0 -0
  129. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/table/replace.sql +0 -0
  130. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/view/create.sql +0 -0
  131. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/view/drop.sql +0 -0
  132. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/view/rename.sql +0 -0
  133. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/relations/view/replace.sql +0 -0
  134. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql +0 -0
  135. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/any_value.sql +0 -0
  136. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/array_append.sql +0 -0
  137. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/array_concat.sql +0 -0
  138. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/array_construct.sql +0 -0
  139. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/bool_or.sql +0 -0
  140. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/cast.sql +0 -0
  141. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/cast_bool_to_text.sql +0 -0
  142. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/concat.sql +0 -0
  143. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/data_types.sql +0 -0
  144. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/date.sql +0 -0
  145. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/date_spine.sql +0 -0
  146. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/date_trunc.sql +0 -0
  147. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/dateadd.sql +0 -0
  148. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/datediff.sql +0 -0
  149. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/escape_single_quotes.sql +0 -0
  150. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/except.sql +0 -0
  151. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/generate_series.sql +0 -0
  152. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/hash.sql +0 -0
  153. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/intersect.sql +0 -0
  154. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/last_day.sql +0 -0
  155. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/length.sql +0 -0
  156. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/listagg.sql +0 -0
  157. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/literal.sql +0 -0
  158. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/position.sql +0 -0
  159. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/replace.sql +0 -0
  160. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/right.sql +0 -0
  161. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/safe_cast.sql +0 -0
  162. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/macros/utils/split_part.sql +0 -0
  163. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/global_project/tests/generic/builtin.sql +0 -0
  164. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/dbt/include/py.typed +0 -0
  165. {dbt_adapters-1.10.1 → dbt_adapters-1.10.2}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-adapters
3
- Version: 1.10.1
3
+ Version: 1.10.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
@@ -0,0 +1 @@
1
+ version = "1.10.2"
@@ -206,6 +206,14 @@ class FreshnessResponse(TypedDict):
206
206
  age: float # age in seconds
207
207
 
208
208
 
209
+ class SnapshotStrategy(TypedDict):
210
+ unique_key: Optional[str]
211
+ updated_at: Optional[str]
212
+ row_changed: Optional[str]
213
+ scd_id: Optional[str]
214
+ hard_deletes: Optional[str]
215
+
216
+
209
217
  class BaseAdapter(metaclass=AdapterMeta):
210
218
  """The BaseAdapter provides an abstract base class for adapters.
211
219
 
@@ -795,8 +803,8 @@ class BaseAdapter(metaclass=AdapterMeta):
795
803
  columns = self.get_columns_in_relation(relation)
796
804
  names = set(c.name.lower() for c in columns)
797
805
  missing = []
798
- # Note: we're not checking dbt_updated_at here because it's not
799
- # always present.
806
+ # Note: we're not checking dbt_updated_at or dbt_is_deleted here because they
807
+ # aren't always present.
800
808
  for column in ("dbt_scd_id", "dbt_valid_from", "dbt_valid_to"):
801
809
  desired = column_names[column] if column_names else column
802
810
  if desired not in names:
@@ -805,6 +813,28 @@ class BaseAdapter(metaclass=AdapterMeta):
805
813
  if missing:
806
814
  raise SnapshotTargetNotSnapshotTableError(missing)
807
815
 
816
+ @available.parse_none
817
+ def assert_valid_snapshot_target_given_strategy(
818
+ self, relation: BaseRelation, column_names: Dict[str, str], strategy: SnapshotStrategy
819
+ ) -> None:
820
+ # Assert everything we can with the legacy function.
821
+ self.valid_snapshot_target(relation, column_names)
822
+
823
+ # Now do strategy-specific checks.
824
+ # TODO: Make these checks more comprehensive.
825
+ if strategy.get("hard_deletes", None) == "new_record":
826
+ columns = self.get_columns_in_relation(relation)
827
+ names = set(c.name.lower() for c in columns)
828
+ missing = []
829
+
830
+ for column in ("dbt_is_deleted",):
831
+ desired = column_names[column] if column_names else column
832
+ if desired not in names:
833
+ missing.append(desired)
834
+
835
+ if missing:
836
+ raise SnapshotTargetNotSnapshotTableError(missing)
837
+
808
838
  @available.parse_none
809
839
  def expand_target_column_types(
810
840
  self, from_relation: BaseRelation, to_relation: BaseRelation
@@ -1795,6 +1825,29 @@ class BaseAdapter(metaclass=AdapterMeta):
1795
1825
  """
1796
1826
  return {}
1797
1827
 
1828
+ @available.parse_none
1829
+ @classmethod
1830
+ def get_hard_deletes_behavior(cls, config):
1831
+ """Check the hard_deletes config enum, and the legacy invalidate_hard_deletes
1832
+ config flag in order to determine which behavior should be used for deleted
1833
+ records in a snapshot. The default is to ignore them."""
1834
+ invalidate_hard_deletes = config.get("invalidate_hard_deletes", None)
1835
+ hard_deletes = config.get("hard_deletes", None)
1836
+
1837
+ if invalidate_hard_deletes is not None and hard_deletes is not None:
1838
+ raise DbtValidationError(
1839
+ "You cannot set both the invalidate_hard_deletes and hard_deletes config properties on the same snapshot."
1840
+ )
1841
+
1842
+ if invalidate_hard_deletes or hard_deletes == "invalidate":
1843
+ return "invalidate"
1844
+ elif hard_deletes == "new_record":
1845
+ return "new_record"
1846
+ elif hard_deletes is None or hard_deletes == "ignore":
1847
+ return "ignore"
1848
+
1849
+ raise DbtValidationError("Invalid setting for property hard_deletes.")
1850
+
1798
1851
 
1799
1852
  COLUMNS_EQUAL_SQL = """
1800
1853
  with diff_count as (
@@ -35,7 +35,7 @@
35
35
  {% endmacro %}
36
36
 
37
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'}) }}
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', 'dbt_is_deleted': 'dbt_is_deleted'}) }}
39
39
  {% endmacro %}
40
40
 
41
41
  {% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}
@@ -82,7 +82,7 @@
82
82
  from snapshot_query
83
83
  ),
84
84
 
85
- {%- if strategy.invalidate_hard_deletes %}
85
+ {%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}
86
86
 
87
87
  deletes_source_data as (
88
88
 
@@ -96,6 +96,9 @@
96
96
  select
97
97
  'insert' as dbt_change_type,
98
98
  source_data.*
99
+ {%- if strategy.hard_deletes == 'new_record' -%}
100
+ ,'False' as {{ columns.dbt_is_deleted }}
101
+ {%- endif %}
99
102
 
100
103
  from insertions_source_data as source_data
101
104
  left outer join snapshotted_data
@@ -113,6 +116,9 @@
113
116
  'update' as dbt_change_type,
114
117
  source_data.*,
115
118
  snapshotted_data.{{ columns.dbt_scd_id }}
119
+ {%- if strategy.hard_deletes == 'new_record' -%}
120
+ , snapshotted_data.{{ columns.dbt_is_deleted }}
121
+ {%- endif %}
116
122
 
117
123
  from updates_source_data as source_data
118
124
  join snapshotted_data
@@ -122,9 +128,8 @@
122
128
  )
123
129
  )
124
130
 
125
- {%- if strategy.invalidate_hard_deletes -%}
131
+ {%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}
126
132
  ,
127
-
128
133
  deletes as (
129
134
 
130
135
  select
@@ -134,7 +139,38 @@
134
139
  {{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},
135
140
  {{ snapshot_get_time() }} as {{ columns.dbt_valid_to }},
136
141
  snapshotted_data.{{ columns.dbt_scd_id }}
142
+ {%- if strategy.hard_deletes == 'new_record' -%}
143
+ , snapshotted_data.{{ columns.dbt_is_deleted }}
144
+ {%- endif %}
145
+ from snapshotted_data
146
+ left join deletes_source_data as source_data
147
+ on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
148
+ where {{ unique_key_is_null(strategy.unique_key, "source_data") }}
149
+ )
150
+ {%- endif %}
151
+
152
+ {%- if strategy.hard_deletes == 'new_record' %}
153
+ {% set source_sql_cols = get_column_schema_from_query(source_sql) %}
154
+ ,
155
+ deletion_records as (
137
156
 
157
+ select
158
+ 'insert' as dbt_change_type,
159
+ {%- for col in source_sql_cols -%}
160
+ snapshotted_data.{{ adapter.quote(col.column) }},
161
+ {% endfor -%}
162
+ {%- if strategy.unique_key | is_list -%}
163
+ {%- for key in strategy.unique_key -%}
164
+ snapshotted_data.{{ key }} as dbt_unique_key_{{ loop.index }},
165
+ {% endfor -%}
166
+ {%- else -%}
167
+ snapshotted_data.dbt_unique_key as dbt_unique_key,
168
+ {% endif -%}
169
+ {{ snapshot_get_time() }} as {{ columns.dbt_valid_from }},
170
+ {{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},
171
+ snapshotted_data.{{ columns.dbt_valid_to }} as {{ columns.dbt_valid_to }},
172
+ snapshotted_data.{{ columns.dbt_scd_id }},
173
+ 'True' as {{ columns.dbt_is_deleted }}
138
174
  from snapshotted_data
139
175
  left join deletes_source_data as source_data
140
176
  on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
@@ -145,10 +181,15 @@
145
181
  select * from insertions
146
182
  union all
147
183
  select * from updates
148
- {%- if strategy.invalidate_hard_deletes %}
184
+ {%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}
149
185
  union all
150
186
  select * from deletes
151
187
  {%- endif %}
188
+ {%- if strategy.hard_deletes == 'new_record' %}
189
+ union all
190
+ select * from deletion_records
191
+ {%- endif %}
192
+
152
193
 
153
194
  {%- endmacro %}
154
195
 
@@ -165,6 +206,9 @@
165
206
  {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
166
207
  {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
167
208
  {{ get_dbt_valid_to_current(strategy, columns) }}
209
+ {%- if strategy.hard_deletes == 'new_record' -%}
210
+ , 'False' as {{ columns.dbt_is_deleted }}
211
+ {% endif -%}
168
212
  from (
169
213
  {{ sql }}
170
214
  ) sbq
@@ -37,7 +37,7 @@
37
37
 
38
38
  {% set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() %}
39
39
 
40
- {{ adapter.valid_snapshot_target(target_relation, columns) }}
40
+ {{ adapter.assert_valid_snapshot_target_given_strategy(target_relation, columns, strategy) }}
41
41
 
42
42
  {% set build_or_select_sql = snapshot_staging_table(strategy, sql, target_relation) %}
43
43
  {% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}
@@ -54,7 +54,8 @@
54
54
  {# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}
55
55
  {% set primary_key = config.get('unique_key') %}
56
56
  {% set updated_at = config.get('updated_at') %}
57
- {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes') or false %}
57
+ {% set hard_deletes = adapter.get_hard_deletes_behavior(config) %}
58
+ {% set invalidate_hard_deletes = hard_deletes == 'invalidate' %}
58
59
  {% set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() %}
59
60
 
60
61
  {#/*
@@ -78,7 +79,8 @@
78
79
  "updated_at": updated_at,
79
80
  "row_changed": row_changed_expr,
80
81
  "scd_id": scd_id_expr,
81
- "invalidate_hard_deletes": invalidate_hard_deletes
82
+ "invalidate_hard_deletes": invalidate_hard_deletes,
83
+ "hard_deletes": hard_deletes
82
84
  }) %}
83
85
  {% endmacro %}
84
86
 
@@ -141,7 +143,8 @@
141
143
  {# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}
142
144
  {% set check_cols_config = config.get('check_cols') %}
143
145
  {% set primary_key = config.get('unique_key') %}
144
- {% set invalidate_hard_deletes = config.get('invalidate_hard_deletes') or false %}
146
+ {% set hard_deletes = adapter.get_hard_deletes_behavior(config) %}
147
+ {% set invalidate_hard_deletes = hard_deletes == 'invalidate' %}
145
148
  {% set updated_at = config.get('updated_at') or snapshot_get_time() %}
146
149
 
147
150
  {% set column_added = false %}
@@ -175,6 +178,7 @@
175
178
  "updated_at": updated_at,
176
179
  "row_changed": row_changed_expr,
177
180
  "scd_id": scd_id_expr,
178
- "invalidate_hard_deletes": invalidate_hard_deletes
181
+ "invalidate_hard_deletes": invalidate_hard_deletes,
182
+ "hard_deletes": hard_deletes
179
183
  }) %}
180
184
  {% endmacro %}
@@ -1 +0,0 @@
1
- version = "1.10.1"
File without changes
File without changes
File without changes