dbt-adapters 1.7.0__tar.gz → 1.8.0__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.7.0 → dbt_adapters-1.8.0}/PKG-INFO +3 -4
  2. dbt_adapters-1.8.0/dbt/adapters/__about__.py +1 -0
  3. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/__init__.py +1 -0
  4. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/impl.py +34 -6
  5. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/relation.py +19 -0
  6. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +3 -2
  7. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +72 -25
  8. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot.sql +10 -8
  9. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot_merge.sql +6 -1
  10. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/snapshots/strategies.sql +4 -2
  11. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/pyproject.toml +2 -3
  12. dbt_adapters-1.7.0/dbt/adapters/__about__.py +0 -1
  13. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/.gitignore +0 -0
  14. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/LICENSE +0 -0
  15. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/README.md +0 -0
  16. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/__init__.py +0 -0
  17. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/__init__.py +0 -0
  18. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/README.md +0 -0
  19. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/column.py +0 -0
  20. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/connections.py +0 -0
  21. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/meta.py +0 -0
  22. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/plugin.py +0 -0
  23. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/base/query_headers.py +0 -0
  24. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/cache.py +0 -0
  25. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/capability.py +0 -0
  26. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/clients/__init__.py +0 -0
  27. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/clients/jinja.py +0 -0
  28. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/contracts/__init__.py +0 -0
  29. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/contracts/connection.py +0 -0
  30. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/contracts/macros.py +0 -0
  31. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/contracts/relation.py +0 -0
  32. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/README.md +0 -0
  33. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/__init__.py +0 -0
  34. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/adapter_types.proto +0 -0
  35. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/adapter_types_pb2.py +0 -0
  36. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/base_types.py +0 -0
  37. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/logging.py +0 -0
  38. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/events/types.py +0 -0
  39. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/exceptions/__init__.py +0 -0
  40. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/exceptions/alias.py +0 -0
  41. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/exceptions/cache.py +0 -0
  42. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/exceptions/compilation.py +0 -0
  43. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/exceptions/connection.py +0 -0
  44. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/exceptions/database.py +0 -0
  45. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/factory.py +0 -0
  46. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/protocol.py +0 -0
  47. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/py.typed +0 -0
  48. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/__init__.py +0 -0
  49. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/cursor.py +0 -0
  50. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/description.py +0 -0
  51. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/execute.py +0 -0
  52. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/fetchall.py +0 -0
  53. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/fetchmany.py +0 -0
  54. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/fetchone.py +0 -0
  55. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/cursor/rowcount.py +0 -0
  56. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/record/handle.py +0 -0
  57. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/reference_keys.py +0 -0
  58. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/relation_configs/README.md +0 -0
  59. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/relation_configs/__init__.py +0 -0
  60. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/relation_configs/config_base.py +0 -0
  61. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/relation_configs/config_change.py +0 -0
  62. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/relation_configs/config_validation.py +0 -0
  63. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/sql/__init__.py +0 -0
  64. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/sql/connections.py +0 -0
  65. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/sql/impl.py +0 -0
  66. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/adapters/utils.py +0 -0
  67. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/__init__.py +0 -0
  68. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/__init__.py +0 -0
  69. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/dbt_project.yml +0 -0
  70. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/docs/overview.md +0 -0
  71. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/apply_grants.sql +0 -0
  72. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/columns.sql +0 -0
  73. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/freshness.sql +0 -0
  74. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/indexes.sql +0 -0
  75. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/metadata.sql +0 -0
  76. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/persist_docs.sql +0 -0
  77. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/relation.sql +0 -0
  78. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/schema.sql +0 -0
  79. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/show.sql +0 -0
  80. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/timestamps.sql +0 -0
  81. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/adapters/validate_sql.sql +0 -0
  82. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/etc/datetime.sql +0 -0
  83. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/etc/statement.sql +0 -0
  84. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/generic_test_sql/accepted_values.sql +0 -0
  85. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/generic_test_sql/not_null.sql +0 -0
  86. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/generic_test_sql/relationships.sql +0 -0
  87. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/generic_test_sql/unique.sql +0 -0
  88. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/get_custom_name/get_custom_alias.sql +0 -0
  89. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/get_custom_name/get_custom_database.sql +0 -0
  90. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql +0 -0
  91. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/configs.sql +0 -0
  92. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/hooks.sql +0 -0
  93. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql +0 -0
  94. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/clone/clone.sql +0 -0
  95. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/clone/create_or_replace_clone.sql +0 -0
  96. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql +0 -0
  97. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql +0 -0
  98. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/incremental/merge.sql +0 -0
  99. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql +0 -0
  100. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/incremental/strategies.sql +0 -0
  101. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/materialized_view.sql +0 -0
  102. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/table.sql +0 -0
  103. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/models/view.sql +0 -0
  104. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/seeds/helpers.sql +0 -0
  105. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/seeds/seed.sql +0 -0
  106. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/tests/helpers.sql +0 -0
  107. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/tests/test.sql +0 -0
  108. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/tests/unit.sql +0 -0
  109. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/materializations/tests/where_subquery.sql +0 -0
  110. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/python_model/python.sql +0 -0
  111. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/column/columns_spec_ddl.sql +0 -0
  112. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/create.sql +0 -0
  113. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/create_backup.sql +0 -0
  114. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/create_intermediate.sql +0 -0
  115. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/drop.sql +0 -0
  116. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/drop_backup.sql +0 -0
  117. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/materialized_view/alter.sql +0 -0
  118. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/materialized_view/create.sql +0 -0
  119. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/materialized_view/drop.sql +0 -0
  120. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/materialized_view/refresh.sql +0 -0
  121. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/materialized_view/rename.sql +0 -0
  122. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/materialized_view/replace.sql +0 -0
  123. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/rename.sql +0 -0
  124. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/rename_intermediate.sql +0 -0
  125. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/replace.sql +0 -0
  126. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/schema.sql +0 -0
  127. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/table/create.sql +0 -0
  128. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/table/drop.sql +0 -0
  129. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/table/rename.sql +0 -0
  130. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/table/replace.sql +0 -0
  131. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/view/create.sql +0 -0
  132. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/view/drop.sql +0 -0
  133. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/view/rename.sql +0 -0
  134. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/relations/view/replace.sql +0 -0
  135. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql +0 -0
  136. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/any_value.sql +0 -0
  137. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/array_append.sql +0 -0
  138. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/array_concat.sql +0 -0
  139. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/array_construct.sql +0 -0
  140. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/bool_or.sql +0 -0
  141. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/cast.sql +0 -0
  142. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/cast_bool_to_text.sql +0 -0
  143. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/concat.sql +0 -0
  144. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/data_types.sql +0 -0
  145. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/date.sql +0 -0
  146. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/date_spine.sql +0 -0
  147. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/date_trunc.sql +0 -0
  148. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/dateadd.sql +0 -0
  149. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/datediff.sql +0 -0
  150. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/escape_single_quotes.sql +0 -0
  151. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/except.sql +0 -0
  152. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/generate_series.sql +0 -0
  153. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/hash.sql +0 -0
  154. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/intersect.sql +0 -0
  155. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/last_day.sql +0 -0
  156. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/length.sql +0 -0
  157. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/listagg.sql +0 -0
  158. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/literal.sql +0 -0
  159. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/position.sql +0 -0
  160. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/replace.sql +0 -0
  161. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/right.sql +0 -0
  162. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/safe_cast.sql +0 -0
  163. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/macros/utils/split_part.sql +0 -0
  164. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/global_project/tests/generic/builtin.sql +0 -0
  165. {dbt_adapters-1.7.0 → dbt_adapters-1.8.0}/dbt/include/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-adapters
3
- Version: 1.7.0
3
+ Version: 1.8.0
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.8.0"
@@ -12,4 +12,5 @@ from dbt.adapters.base.relation import (
12
12
  BaseRelation,
13
13
  RelationType,
14
14
  SchemaSearchMap,
15
+ AdapterTrackingRelationInfo,
15
16
  )
@@ -4,6 +4,7 @@ from concurrent.futures import as_completed, Future
4
4
  from contextlib import contextmanager
5
5
  from datetime import datetime
6
6
  from enum import Enum
7
+ from importlib import import_module
7
8
  from multiprocessing.context import SpawnContext
8
9
  from typing import (
9
10
  Any,
@@ -61,12 +62,14 @@ from dbt.adapters.base.relation import (
61
62
  ComponentName,
62
63
  InformationSchema,
63
64
  SchemaSearchMap,
65
+ AdapterTrackingRelationInfo,
64
66
  )
65
67
  from dbt.adapters.cache import RelationsCache, _make_ref_key_dict
66
68
  from dbt.adapters.capability import Capability, CapabilityDict
67
69
  from dbt.adapters.contracts.connection import Credentials
68
70
  from dbt.adapters.contracts.macros import MacroResolverProtocol
69
71
  from dbt.adapters.contracts.relation import RelationConfig
72
+
70
73
  from dbt.adapters.events.types import (
71
74
  CacheMiss,
72
75
  CatalogGenerationError,
@@ -300,12 +303,13 @@ class BaseAdapter(metaclass=AdapterMeta):
300
303
  @behavior.setter # type: ignore
301
304
  def behavior(self, flags: List[BehaviorFlag]) -> None:
302
305
  flags.extend(self._behavior_flags)
303
- try:
304
- # we don't always get project flags, for example during `dbt debug`
305
- self._behavior = Behavior(flags, self.config.flags)
306
- except AttributeError:
307
- # in that case, don't load any behavior to avoid unexpected defaults
308
- self._behavior = Behavior([], {})
306
+
307
+ # we don't always get project flags, for example, the project file is not loaded during `dbt debug`
308
+ # in that case, load the default values for behavior flags to avoid compilation errors
309
+ # this mimics not loading a project file, or not specifying flags in a project file
310
+ user_overrides = getattr(self.config, "flags", {})
311
+
312
+ self._behavior = Behavior(flags, user_overrides)
309
313
 
310
314
  @property
311
315
  def _behavior_flags(self) -> List[BehaviorFlag]:
@@ -1743,6 +1747,30 @@ class BaseAdapter(metaclass=AdapterMeta):
1743
1747
  def supports(cls, capability: Capability) -> bool:
1744
1748
  return bool(cls.capabilities()[capability])
1745
1749
 
1750
+ @classmethod
1751
+ def get_adapter_run_info(cls, config: RelationConfig) -> AdapterTrackingRelationInfo:
1752
+ adapter_class_name, *_ = cls.__name__.split("Adapter")
1753
+ adapter_name = adapter_class_name.lower()
1754
+
1755
+ if adapter_name == "base":
1756
+ adapter_version = ""
1757
+ else:
1758
+ adapter_version = import_module(f"dbt.adapters.{adapter_name}.__version__").version
1759
+
1760
+ return AdapterTrackingRelationInfo(
1761
+ adapter_name=adapter_name,
1762
+ base_adapter_version=import_module("dbt.adapters.__about__").version,
1763
+ adapter_version=adapter_version,
1764
+ model_adapter_details=cls._get_adapter_specific_run_info(config),
1765
+ )
1766
+
1767
+ @classmethod
1768
+ def _get_adapter_specific_run_info(cls, config) -> Dict[str, Any]:
1769
+ """
1770
+ Adapter maintainers should overwrite this method to return any run metadata that should be captured during a run.
1771
+ """
1772
+ return {}
1773
+
1746
1774
 
1747
1775
  COLUMNS_EQUAL_SQL = """
1748
1776
  with diff_count as (
@@ -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
@@ -531,3 +542,11 @@ class SchemaSearchMap(Dict[InformationSchema, Set[Optional[str]]]):
531
542
  )
532
543
 
533
544
  return new
545
+
546
+
547
+ @dataclass(frozen=True, eq=False, repr=False)
548
+ class AdapterTrackingRelationInfo(FakeAPIObject, Hashable):
549
+ adapter_name: str
550
+ base_adapter_version: str
551
+ adapter_version: str
552
+ model_adapter_details: Any
@@ -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
 
@@ -49,22 +49,24 @@
49
49
 
50
50
  snapshotted_data as (
51
51
 
52
- select *,
53
- {{ strategy.unique_key }} as dbt_unique_key
54
-
52
+ select *, {{ unique_key_fields(strategy.unique_key) }}
55
53
  from {{ target_relation }}
56
- where {{ columns.dbt_valid_to }} is null
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 %}
57
61
 
58
62
  ),
59
63
 
60
64
  insertions_source_data as (
61
65
 
62
- select
63
- *,
64
- {{ strategy.unique_key }} as dbt_unique_key,
66
+ select *, {{ unique_key_fields(strategy.unique_key) }},
65
67
  {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
66
68
  {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
67
- nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as {{ columns.dbt_valid_to }},
69
+ {{ get_dbt_valid_to_current(strategy, columns) }},
68
70
  {{ strategy.scd_id }} as {{ columns.dbt_scd_id }}
69
71
 
70
72
  from snapshot_query
@@ -72,9 +74,7 @@
72
74
 
73
75
  updates_source_data as (
74
76
 
75
- select
76
- *,
77
- {{ strategy.unique_key }} as dbt_unique_key,
77
+ select *, {{ unique_key_fields(strategy.unique_key) }},
78
78
  {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
79
79
  {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
80
80
  {{ strategy.updated_at }} as {{ columns.dbt_valid_to }}
@@ -86,9 +86,7 @@
86
86
 
87
87
  deletes_source_data as (
88
88
 
89
- select
90
- *,
91
- {{ strategy.unique_key }} as dbt_unique_key
89
+ select *, {{ unique_key_fields(strategy.unique_key) }}
92
90
  from snapshot_query
93
91
  ),
94
92
  {% endif %}
@@ -100,13 +98,11 @@
100
98
  source_data.*
101
99
 
102
100
  from insertions_source_data as source_data
103
- left outer join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key
104
- where snapshotted_data.dbt_unique_key is null
105
- or (
106
- snapshotted_data.dbt_unique_key is not null
107
- and (
108
- {{ strategy.row_changed }}
109
- )
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
+
110
106
  )
111
107
 
112
108
  ),
@@ -119,7 +115,8 @@
119
115
  snapshotted_data.{{ columns.dbt_scd_id }}
120
116
 
121
117
  from updates_source_data as source_data
122
- join snapshotted_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key
118
+ join snapshotted_data
119
+ on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
123
120
  where (
124
121
  {{ strategy.row_changed }}
125
122
  )
@@ -139,8 +136,9 @@
139
136
  snapshotted_data.{{ columns.dbt_scd_id }}
140
137
 
141
138
  from snapshotted_data
142
- left join deletes_source_data as source_data on snapshotted_data.dbt_unique_key = source_data.dbt_unique_key
143
- where source_data.dbt_unique_key is null
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") }}
144
142
  )
145
143
  {%- endif %}
146
144
 
@@ -166,7 +164,7 @@
166
164
  {{ strategy.scd_id }} as {{ columns.dbt_scd_id }},
167
165
  {{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
168
166
  {{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
169
- nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}) as {{ columns.dbt_valid_to }}
167
+ {{ get_dbt_valid_to_current(strategy, columns) }}
170
168
  from (
171
169
  {{ sql }}
172
170
  ) sbq
@@ -210,3 +208,52 @@
210
208
  {% endif %}
211
209
  {% endif %}
212
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 %}
@@ -46,20 +46,22 @@
46
46
  {% do adapter.expand_target_column_types(from_relation=staging_table,
47
47
  to_relation=target_relation) %}
48
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
+
49
57
  {% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)
50
- | rejectattr('name', 'equalto', 'dbt_change_type')
51
- | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')
52
- | rejectattr('name', 'equalto', 'dbt_unique_key')
53
- | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')
58
+ | rejectattr('name', 'in', remove_columns)
54
59
  | list %}
55
60
 
56
61
  {% do create_columns(target_relation, missing_columns) %}
57
62
 
58
63
  {% set source_columns = adapter.get_columns_in_relation(staging_table)
59
- | rejectattr('name', 'equalto', 'dbt_change_type')
60
- | rejectattr('name', 'equalto', 'DBT_CHANGE_TYPE')
61
- | rejectattr('name', 'equalto', 'dbt_unique_key')
62
- | rejectattr('name', 'equalto', 'DBT_UNIQUE_KEY')
64
+ | rejectattr('name', 'in', remove_columns)
63
65
  | list %}
64
66
 
65
67
  {% set quoted_source_columns = [] %}
@@ -14,7 +14,12 @@
14
14
  on DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }} = DBT_INTERNAL_DEST.{{ columns.dbt_scd_id }}
15
15
 
16
16
  when matched
17
- and DBT_INTERNAL_DEST.{{ columns.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 %}
18
23
  and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')
19
24
  then update
20
25
  set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}
@@ -70,7 +70,8 @@
70
70
  ({{ snapshotted_rel }}.{{ columns.dbt_valid_from }} < {{ current_rel }}.{{ updated_at }})
71
71
  {%- endset %}
72
72
 
73
- {% 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) %}
74
75
 
75
76
  {% do return({
76
77
  "unique_key": primary_key,
@@ -166,7 +167,8 @@
166
167
  )
167
168
  {%- endset %}
168
169
 
169
- {% 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) %}
170
172
 
171
173
  {% do return({
172
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.7.0"
File without changes
File without changes
File without changes