dbt-adapters 1.3.2__tar.gz → 1.4.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 (167) hide show
  1. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/.gitignore +10 -0
  2. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/PKG-INFO +3 -3
  3. dbt_adapters-1.4.0/dbt/adapters/__about__.py +1 -0
  4. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/column.py +0 -3
  5. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/impl.py +24 -10
  6. dbt_adapters-1.4.0/dbt/adapters/record/__init__.py +2 -0
  7. dbt_adapters-1.4.0/dbt/adapters/record/cursor/cursor.py +54 -0
  8. dbt_adapters-1.4.0/dbt/adapters/record/cursor/description.py +37 -0
  9. dbt_adapters-1.4.0/dbt/adapters/record/cursor/execute.py +20 -0
  10. dbt_adapters-1.4.0/dbt/adapters/record/cursor/fetchall.py +66 -0
  11. dbt_adapters-1.4.0/dbt/adapters/record/cursor/fetchmany.py +23 -0
  12. dbt_adapters-1.4.0/dbt/adapters/record/cursor/fetchone.py +23 -0
  13. dbt_adapters-1.4.0/dbt/adapters/record/cursor/rowcount.py +23 -0
  14. dbt_adapters-1.4.0/dbt/adapters/record/handle.py +24 -0
  15. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/sql/connections.py +0 -3
  16. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/apply_grants.sql +4 -4
  17. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/columns.sql +5 -5
  18. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/relation.sql +1 -1
  19. dbt_adapters-1.4.0/dbt/include/global_project/macros/adapters/show.sql +26 -0
  20. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/clone/clone.sql +2 -2
  21. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/clone/create_or_replace_clone.sql +1 -1
  22. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +6 -3
  23. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/materialized_view.sql +2 -2
  24. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/seeds/helpers.sql +1 -1
  25. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/seeds/seed.sql +1 -1
  26. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +1 -1
  27. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot_merge.sql +1 -1
  28. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/drop.sql +1 -1
  29. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/drop.sql +1 -1
  30. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/rename.sql +1 -1
  31. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/drop.sql +1 -1
  32. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/create.sql +1 -1
  33. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/drop.sql +1 -1
  34. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/replace.sql +1 -1
  35. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql +9 -0
  36. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/pyproject.toml +6 -15
  37. dbt_adapters-1.3.2/dbt/adapters/__about__.py +0 -1
  38. dbt_adapters-1.3.2/dbt/adapters/record.py +0 -67
  39. dbt_adapters-1.3.2/dbt/include/global_project/macros/adapters/show.sql +0 -22
  40. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/LICENSE +0 -0
  41. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/README.md +0 -0
  42. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/__init__.py +0 -0
  43. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/__init__.py +0 -0
  44. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/README.md +0 -0
  45. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/__init__.py +0 -0
  46. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/connections.py +0 -0
  47. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/meta.py +0 -0
  48. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/plugin.py +0 -0
  49. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/query_headers.py +0 -0
  50. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/relation.py +0 -0
  51. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/cache.py +0 -0
  52. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/capability.py +0 -0
  53. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/clients/__init__.py +0 -0
  54. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/clients/jinja.py +0 -0
  55. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/__init__.py +0 -0
  56. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/connection.py +0 -0
  57. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/macros.py +0 -0
  58. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/relation.py +0 -0
  59. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/README.md +0 -0
  60. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/__init__.py +0 -0
  61. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/adapter_types.proto +0 -0
  62. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/adapter_types_pb2.py +0 -0
  63. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/base_types.py +0 -0
  64. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/logging.py +0 -0
  65. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/types.py +0 -0
  66. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/__init__.py +0 -0
  67. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/alias.py +0 -0
  68. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/cache.py +0 -0
  69. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/compilation.py +0 -0
  70. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/connection.py +0 -0
  71. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/database.py +0 -0
  72. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/factory.py +0 -0
  73. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/protocol.py +0 -0
  74. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/py.typed +0 -0
  75. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/reference_keys.py +0 -0
  76. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/README.md +0 -0
  77. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/__init__.py +0 -0
  78. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/config_base.py +0 -0
  79. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/config_change.py +0 -0
  80. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/config_validation.py +0 -0
  81. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/sql/__init__.py +0 -0
  82. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/sql/impl.py +0 -0
  83. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/utils.py +0 -0
  84. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/__init__.py +0 -0
  85. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/__init__.py +0 -0
  86. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/dbt_project.yml +0 -0
  87. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/docs/overview.md +0 -0
  88. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/freshness.sql +0 -0
  89. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/indexes.sql +0 -0
  90. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/metadata.sql +0 -0
  91. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/persist_docs.sql +0 -0
  92. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/schema.sql +0 -0
  93. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/timestamps.sql +0 -0
  94. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/validate_sql.sql +0 -0
  95. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/etc/datetime.sql +0 -0
  96. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/etc/statement.sql +0 -0
  97. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/accepted_values.sql +0 -0
  98. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/not_null.sql +0 -0
  99. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/relationships.sql +0 -0
  100. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/unique.sql +0 -0
  101. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/get_custom_name/get_custom_alias.sql +0 -0
  102. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/get_custom_name/get_custom_database.sql +0 -0
  103. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql +0 -0
  104. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/configs.sql +0 -0
  105. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/hooks.sql +0 -0
  106. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql +0 -0
  107. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql +0 -0
  108. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql +0 -0
  109. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/merge.sql +0 -0
  110. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql +0 -0
  111. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/strategies.sql +0 -0
  112. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/table.sql +0 -0
  113. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/view.sql +0 -0
  114. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot.sql +0 -0
  115. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/strategies.sql +0 -0
  116. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/helpers.sql +0 -0
  117. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/test.sql +0 -0
  118. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/unit.sql +0 -0
  119. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/where_subquery.sql +0 -0
  120. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/python_model/python.sql +0 -0
  121. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/column/columns_spec_ddl.sql +0 -0
  122. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/create.sql +0 -0
  123. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/create_backup.sql +0 -0
  124. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/create_intermediate.sql +0 -0
  125. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/drop_backup.sql +0 -0
  126. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/alter.sql +0 -0
  127. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/create.sql +0 -0
  128. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/refresh.sql +0 -0
  129. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/rename.sql +0 -0
  130. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/replace.sql +0 -0
  131. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/rename_intermediate.sql +0 -0
  132. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/replace.sql +0 -0
  133. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/schema.sql +0 -0
  134. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/create.sql +0 -0
  135. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/rename.sql +0 -0
  136. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/replace.sql +0 -0
  137. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/rename.sql +0 -0
  138. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/any_value.sql +0 -0
  139. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/array_append.sql +0 -0
  140. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/array_concat.sql +0 -0
  141. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/array_construct.sql +0 -0
  142. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/bool_or.sql +0 -0
  143. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/cast.sql +0 -0
  144. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/cast_bool_to_text.sql +0 -0
  145. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/concat.sql +0 -0
  146. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/data_types.sql +0 -0
  147. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/date.sql +0 -0
  148. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/date_spine.sql +0 -0
  149. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/date_trunc.sql +0 -0
  150. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/dateadd.sql +0 -0
  151. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/datediff.sql +0 -0
  152. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/escape_single_quotes.sql +0 -0
  153. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/except.sql +0 -0
  154. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/generate_series.sql +0 -0
  155. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/hash.sql +0 -0
  156. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/intersect.sql +0 -0
  157. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/last_day.sql +0 -0
  158. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/length.sql +0 -0
  159. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/listagg.sql +0 -0
  160. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/literal.sql +0 -0
  161. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/position.sql +0 -0
  162. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/replace.sql +0 -0
  163. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/right.sql +0 -0
  164. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/safe_cast.sql +0 -0
  165. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/split_part.sql +0 -0
  166. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/tests/generic/builtin.sql +0 -0
  167. {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/py.typed +0 -0
@@ -154,3 +154,13 @@ cython_debug/
154
154
 
155
155
  # PyCharm
156
156
  .idea/
157
+
158
+ # MacOS
159
+ .DS_Store
160
+
161
+ # VSCode
162
+ .vscode/
163
+ .venv/
164
+
165
+ # Vim
166
+ *.swp
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-adapters
3
- Version: 1.3.2
3
+ Version: 1.4.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
@@ -11,7 +11,7 @@ Author-email: dbt Labs <info@dbtlabs.com>
11
11
  Maintainer-email: dbt Labs <info@dbtlabs.com>
12
12
  License-File: LICENSE
13
13
  Keywords: adapter,adapters,database,dbt,dbt Cloud,dbt Core,dbt Labs,dbt-core,elt
14
- Classifier: Development Status :: 2 - Pre-Alpha
14
+ Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: License :: OSI Approved :: Apache Software License
16
16
  Classifier: Operating System :: MacOS :: MacOS X
17
17
  Classifier: Operating System :: Microsoft :: Windows
@@ -23,7 +23,7 @@ Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Programming Language :: Python :: 3.12
24
24
  Requires-Python: >=3.8.0
25
25
  Requires-Dist: agate<2.0,>=1.0
26
- Requires-Dist: dbt-common<2.0,>=1.3
26
+ Requires-Dist: dbt-common<2.0,>=1.6
27
27
  Requires-Dist: mashumaro[msgpack]<4.0,>=3.0
28
28
  Requires-Dist: protobuf<5.0,>=3.0
29
29
  Requires-Dist: pytz>=2015.7
@@ -0,0 +1 @@
1
+ version = "1.4.0"
@@ -123,9 +123,6 @@ class Column:
123
123
  else:
124
124
  return "{}({},{})".format(dtype, precision, scale)
125
125
 
126
- def __repr__(self) -> str:
127
- return "<Column {} ({})>".format(self.name, self.data_type)
128
-
129
126
  @classmethod
130
127
  def from_description(cls, name: str, raw_data_type: str) -> "Column":
131
128
  match = re.match(r"([^(]+)(\([^)]+\))?", raw_data_type)
@@ -1602,8 +1602,13 @@ class BaseAdapter(metaclass=AdapterMeta):
1602
1602
  rendered_column_constraint = f"unique {constraint_expression}"
1603
1603
  elif constraint.type == ConstraintType.primary_key:
1604
1604
  rendered_column_constraint = f"primary key {constraint_expression}"
1605
- elif constraint.type == ConstraintType.foreign_key and constraint_expression:
1606
- rendered_column_constraint = f"references {constraint_expression}"
1605
+ elif constraint.type == ConstraintType.foreign_key:
1606
+ if constraint.to and constraint.to_columns:
1607
+ rendered_column_constraint = (
1608
+ f"references {constraint.to} ({', '.join(constraint.to_columns)})"
1609
+ )
1610
+ elif constraint_expression:
1611
+ rendered_column_constraint = f"references {constraint_expression}"
1607
1612
  elif constraint.type == ConstraintType.custom and constraint_expression:
1608
1613
  rendered_column_constraint = constraint_expression
1609
1614
 
@@ -1682,20 +1687,29 @@ class BaseAdapter(metaclass=AdapterMeta):
1682
1687
  rendering."""
1683
1688
  constraint_prefix = f"constraint {constraint.name} " if constraint.name else ""
1684
1689
  column_list = ", ".join(constraint.columns)
1690
+ rendered_model_constraint = None
1691
+
1685
1692
  if constraint.type == ConstraintType.check and constraint.expression:
1686
- return f"{constraint_prefix}check ({constraint.expression})"
1693
+ rendered_model_constraint = f"{constraint_prefix}check ({constraint.expression})"
1687
1694
  elif constraint.type == ConstraintType.unique:
1688
1695
  constraint_expression = f" {constraint.expression}" if constraint.expression else ""
1689
- return f"{constraint_prefix}unique{constraint_expression} ({column_list})"
1696
+ rendered_model_constraint = (
1697
+ f"{constraint_prefix}unique{constraint_expression} ({column_list})"
1698
+ )
1690
1699
  elif constraint.type == ConstraintType.primary_key:
1691
1700
  constraint_expression = f" {constraint.expression}" if constraint.expression else ""
1692
- return f"{constraint_prefix}primary key{constraint_expression} ({column_list})"
1693
- elif constraint.type == ConstraintType.foreign_key and constraint.expression:
1694
- return f"{constraint_prefix}foreign key ({column_list}) references {constraint.expression}"
1701
+ rendered_model_constraint = (
1702
+ f"{constraint_prefix}primary key{constraint_expression} ({column_list})"
1703
+ )
1704
+ elif constraint.type == ConstraintType.foreign_key:
1705
+ if constraint.to and constraint.to_columns:
1706
+ rendered_model_constraint = f"{constraint_prefix}foreign key ({column_list}) references {constraint.to} ({', '.join(constraint.to_columns)})"
1707
+ elif constraint.expression:
1708
+ rendered_model_constraint = f"{constraint_prefix}foreign key ({column_list}) references {constraint.expression}"
1695
1709
  elif constraint.type == ConstraintType.custom and constraint.expression:
1696
- return f"{constraint_prefix}{constraint.expression}"
1697
- else:
1698
- return None
1710
+ rendered_model_constraint = f"{constraint_prefix}{constraint.expression}"
1711
+
1712
+ return rendered_model_constraint
1699
1713
 
1700
1714
  @classmethod
1701
1715
  def capabilities(cls) -> CapabilityDict:
@@ -0,0 +1,2 @@
1
+ from dbt.adapters.record.handle import RecordReplayHandle
2
+ from dbt.adapters.record.cursor.cursor import RecordReplayCursor
@@ -0,0 +1,54 @@
1
+ from typing import Any, Optional
2
+
3
+ from dbt_common.record import record_function
4
+
5
+ from dbt.adapters.contracts.connection import Connection
6
+ from dbt.adapters.record.cursor.description import CursorGetDescriptionRecord
7
+ from dbt.adapters.record.cursor.execute import CursorExecuteRecord
8
+ from dbt.adapters.record.cursor.fetchone import CursorFetchOneRecord
9
+ from dbt.adapters.record.cursor.fetchmany import CursorFetchManyRecord
10
+ from dbt.adapters.record.cursor.fetchall import CursorFetchAllRecord
11
+ from dbt.adapters.record.cursor.rowcount import CursorGetRowCountRecord
12
+
13
+
14
+ class RecordReplayCursor:
15
+ """A proxy object used to wrap native database cursors under record/replay
16
+ modes. In record mode, this proxy notes the parameters and return values
17
+ of the methods and properties it implements, which closely match the Python
18
+ DB API 2.0 cursor methods used by many dbt adapters to interact with the
19
+ database or DWH. In replay mode, it mocks out those calls using previously
20
+ recorded calls, so that no interaction with a database actually occurs."""
21
+
22
+ def __init__(self, native_cursor: Any, connection: Connection) -> None:
23
+ self.native_cursor = native_cursor
24
+ self.connection = connection
25
+
26
+ @record_function(CursorExecuteRecord, method=True, id_field_name="connection_name")
27
+ def execute(self, operation, parameters=None) -> None:
28
+ self.native_cursor.execute(operation, parameters)
29
+
30
+ @record_function(CursorFetchOneRecord, method=True, id_field_name="connection_name")
31
+ def fetchone(self) -> Any:
32
+ return self.native_cursor.fetchone()
33
+
34
+ @record_function(CursorFetchManyRecord, method=True, id_field_name="connection_name")
35
+ def fetchmany(self, size: int) -> Any:
36
+ return self.native_cursor.fetchmany(size)
37
+
38
+ @record_function(CursorFetchAllRecord, method=True, id_field_name="connection_name")
39
+ def fetchall(self) -> Any:
40
+ return self.native_cursor.fetchall()
41
+
42
+ @property
43
+ def connection_name(self) -> Optional[str]:
44
+ return self.connection.name
45
+
46
+ @property
47
+ @record_function(CursorGetRowCountRecord, method=True, id_field_name="connection_name")
48
+ def rowcount(self) -> int:
49
+ return self.native_cursor.rowcount
50
+
51
+ @property
52
+ @record_function(CursorGetDescriptionRecord, method=True, id_field_name="connection_name")
53
+ def description(self) -> str:
54
+ return self.native_cursor.description
@@ -0,0 +1,37 @@
1
+ import dataclasses
2
+ from typing import Any, Iterable, Mapping
3
+
4
+ from dbt_common.record import Record, Recorder
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class CursorGetDescriptionParams:
9
+ connection_name: str
10
+
11
+
12
+ @dataclasses.dataclass
13
+ class CursorGetDescriptionResult:
14
+ columns: Iterable[Any]
15
+
16
+ def _to_dict(self) -> Any:
17
+ column_dicts = []
18
+ for c in self.columns:
19
+ # This captures the mandatory column information, but we might need
20
+ # more for some adapters.
21
+ # See https://peps.python.org/pep-0249/#description
22
+ column_dicts.append((c[0], c[1]))
23
+
24
+ return {"columns": column_dicts}
25
+
26
+ @classmethod
27
+ def _from_dict(cls, dct: Mapping) -> "CursorGetDescriptionResult":
28
+ return CursorGetDescriptionResult(columns=dct["columns"])
29
+
30
+
31
+ @Recorder.register_record_type
32
+ class CursorGetDescriptionRecord(Record):
33
+ """Implements record/replay support for the cursor.description property."""
34
+
35
+ params_cls = CursorGetDescriptionParams
36
+ result_cls = CursorGetDescriptionResult
37
+ group = "Database"
@@ -0,0 +1,20 @@
1
+ import dataclasses
2
+ from typing import Any, Iterable, Union, Mapping
3
+
4
+ from dbt_common.record import Record, Recorder
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class CursorExecuteParams:
9
+ connection_name: str
10
+ operation: str
11
+ parameters: Union[Iterable[Any], Mapping[str, Any]]
12
+
13
+
14
+ @Recorder.register_record_type
15
+ class CursorExecuteRecord(Record):
16
+ """Implements record/replay support for the cursor.execute() method."""
17
+
18
+ params_cls = CursorExecuteParams
19
+ result_cls = None
20
+ group = "Database"
@@ -0,0 +1,66 @@
1
+ import dataclasses
2
+ import datetime
3
+ from typing import Any, Dict, List, Mapping
4
+
5
+ from dbt_common.record import Record, Recorder
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class CursorFetchAllParams:
10
+ connection_name: str
11
+
12
+
13
+ @dataclasses.dataclass
14
+ class CursorFetchAllResult:
15
+ results: List[Any]
16
+
17
+ def _to_dict(self) -> Dict[str, Any]:
18
+ processed_results = []
19
+ for result in self.results:
20
+ result = tuple(map(self._process_value, result))
21
+ processed_results.append(result)
22
+
23
+ return {"results": processed_results}
24
+
25
+ @classmethod
26
+ def _from_dict(cls, dct: Mapping) -> "CursorFetchAllResult":
27
+ unprocessed_results = []
28
+ for result in dct["results"]:
29
+ result = tuple(map(cls._unprocess_value, result))
30
+ unprocessed_results.append(result)
31
+
32
+ return CursorFetchAllResult(unprocessed_results)
33
+
34
+ @classmethod
35
+ def _process_value(cls, value: Any) -> Any:
36
+ if type(value) is datetime.date:
37
+ return {"type": "date", "value": value.isoformat()}
38
+ elif type(value) is datetime.datetime:
39
+ return {"type": "datetime", "value": value.isoformat()}
40
+ else:
41
+ return value
42
+
43
+ @classmethod
44
+ def _unprocess_value(cls, value: Any) -> Any:
45
+ if type(value) is dict:
46
+ value_type = value.get("type")
47
+ if value_type == "date":
48
+ date_string = value.get("value")
49
+ assert isinstance(date_string, str)
50
+ return datetime.date.fromisoformat(date_string)
51
+ elif value_type == "datetime":
52
+ date_string = value.get("value")
53
+ assert isinstance(date_string, str)
54
+ return datetime.datetime.fromisoformat(date_string)
55
+ return value
56
+ else:
57
+ return value
58
+
59
+
60
+ @Recorder.register_record_type
61
+ class CursorFetchAllRecord(Record):
62
+ """Implements record/replay support for the cursor.fetchall() method."""
63
+
64
+ params_cls = CursorFetchAllParams
65
+ result_cls = CursorFetchAllResult
66
+ group = "Database"
@@ -0,0 +1,23 @@
1
+ import dataclasses
2
+ from typing import Any, List
3
+
4
+ from dbt_common.record import Record, Recorder
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class CursorFetchManyParams:
9
+ connection_name: str
10
+
11
+
12
+ @dataclasses.dataclass
13
+ class CursorFetchManyResult:
14
+ results: List[Any]
15
+
16
+
17
+ @Recorder.register_record_type
18
+ class CursorFetchManyRecord(Record):
19
+ """Implements record/replay support for the cursor.fetchmany() method."""
20
+
21
+ params_cls = CursorFetchManyParams
22
+ result_cls = CursorFetchManyResult
23
+ group = "Database"
@@ -0,0 +1,23 @@
1
+ import dataclasses
2
+ from typing import Any
3
+
4
+ from dbt_common.record import Record, Recorder
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class CursorFetchOneParams:
9
+ connection_name: str
10
+
11
+
12
+ @dataclasses.dataclass
13
+ class CursorFetchOneResult:
14
+ result: Any
15
+
16
+
17
+ @Recorder.register_record_type
18
+ class CursorFetchOneRecord(Record):
19
+ """Implements record/replay support for the cursor.fetchone() method."""
20
+
21
+ params_cls = CursorFetchOneParams
22
+ result_cls = CursorFetchOneResult
23
+ group = "Database"
@@ -0,0 +1,23 @@
1
+ import dataclasses
2
+ from typing import Optional
3
+
4
+ from dbt_common.record import Record, Recorder
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class CursorGetRowCountParams:
9
+ connection_name: str
10
+
11
+
12
+ @dataclasses.dataclass
13
+ class CursorGetRowCountResult:
14
+ rowcount: Optional[int]
15
+
16
+
17
+ @Recorder.register_record_type
18
+ class CursorGetRowCountRecord(Record):
19
+ """Implements record/replay support for the cursor.rowcount property."""
20
+
21
+ params_cls = CursorGetRowCountParams
22
+ result_cls = CursorGetRowCountResult
23
+ group = "Database"
@@ -0,0 +1,24 @@
1
+ from typing import Any
2
+
3
+ from dbt.adapters.contracts.connection import Connection
4
+
5
+ from dbt.adapters.record.cursor.cursor import RecordReplayCursor
6
+
7
+
8
+ class RecordReplayHandle:
9
+ """A proxy object used for record/replay modes. What adapters call a
10
+ 'handle' is typically a native database connection, but should not be
11
+ confused with the Connection protocol, which is a dbt-adapters concept.
12
+
13
+ Currently, the only function of the handle proxy is to provide a record/replay
14
+ aware cursor object when cursor() is called."""
15
+
16
+ def __init__(self, native_handle: Any, connection: Connection) -> None:
17
+ self.native_handle = native_handle
18
+ self.connection = connection
19
+
20
+ def cursor(self) -> Any:
21
+ # The native handle could be None if we are in replay mode, because no
22
+ # actual database access should be performed in that mode.
23
+ cursor = None if self.native_handle is None else self.native_handle.cursor()
24
+ return RecordReplayCursor(cursor, self.connection)
@@ -5,7 +5,6 @@ from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple, TYPE_CH
5
5
  from dbt_common.events.contextvars import get_node_info
6
6
  from dbt_common.events.functions import fire_event
7
7
  from dbt_common.exceptions import DbtInternalError, NotImplementedError
8
- from dbt_common.record import record_function
9
8
  from dbt_common.utils import cast_to_str
10
9
 
11
10
  from dbt.adapters.base import BaseConnectionManager
@@ -20,7 +19,6 @@ from dbt.adapters.events.types import (
20
19
  SQLQuery,
21
20
  SQLQueryStatus,
22
21
  )
23
- from dbt.adapters.record import QueryRecord
24
22
 
25
23
  if TYPE_CHECKING:
26
24
  import agate
@@ -143,7 +141,6 @@ class SQLConnectionManager(BaseConnectionManager):
143
141
 
144
142
  return table_from_data_flat(data, column_names)
145
143
 
146
- @record_function(QueryRecord, method=True, tuple_result=True)
147
144
  def execute(
148
145
  self,
149
146
  sql: str,
@@ -61,7 +61,7 @@
61
61
  {% endmacro %}
62
62
 
63
63
  {% macro default__get_show_grant_sql(relation) %}
64
- show grants on {{ relation }}
64
+ show grants on {{ relation.render() }}
65
65
  {% endmacro %}
66
66
 
67
67
 
@@ -70,7 +70,7 @@
70
70
  {% endmacro %}
71
71
 
72
72
  {%- macro default__get_grant_sql(relation, privilege, grantees) -%}
73
- grant {{ privilege }} on {{ relation }} to {{ grantees | join(', ') }}
73
+ grant {{ privilege }} on {{ relation.render() }} to {{ grantees | join(', ') }}
74
74
  {%- endmacro -%}
75
75
 
76
76
 
@@ -79,7 +79,7 @@
79
79
  {% endmacro %}
80
80
 
81
81
  {%- macro default__get_revoke_sql(relation, privilege, grantees) -%}
82
- revoke {{ privilege }} on {{ relation }} from {{ grantees | join(', ') }}
82
+ revoke {{ privilege }} on {{ relation.render() }} from {{ grantees | join(', ') }}
83
83
  {%- endmacro -%}
84
84
 
85
85
 
@@ -147,7 +147,7 @@
147
147
  {% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}
148
148
  {% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}
149
149
  {% if not (needs_granting or needs_revoking) %}
150
- {{ log('On ' ~ relation ~': All grants are in place, no revocation or granting needed.')}}
150
+ {{ log('On ' ~ relation.render() ~': All grants are in place, no revocation or granting needed.')}}
151
151
  {% endif %}
152
152
  {% else %}
153
153
  {#-- We don't think there's any chance of previous grants having carried over. --#}
@@ -96,10 +96,10 @@
96
96
  {%- set tmp_column = column_name + "__dbt_alter" -%}
97
97
 
98
98
  {% call statement('alter_column_type') %}
99
- alter table {{ relation }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};
100
- update {{ relation }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};
101
- alter table {{ relation }} drop column {{ adapter.quote(column_name) }} cascade;
102
- alter table {{ relation }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}
99
+ alter table {{ relation.render() }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};
100
+ update {{ relation.render() }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};
101
+ alter table {{ relation.render() }} drop column {{ adapter.quote(column_name) }} cascade;
102
+ alter table {{ relation.render() }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}
103
103
  {% endcall %}
104
104
 
105
105
  {% endmacro %}
@@ -120,7 +120,7 @@
120
120
 
121
121
  {% set sql -%}
122
122
 
123
- alter {{ relation.type }} {{ relation }}
123
+ alter {{ relation.type }} {{ relation.render() }}
124
124
 
125
125
  {% for column in add_columns %}
126
126
  add column {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}
@@ -38,7 +38,7 @@
38
38
 
39
39
  {% macro default__truncate_relation(relation) -%}
40
40
  {% call statement('truncate_relation') -%}
41
- truncate table {{ relation }}
41
+ truncate table {{ relation.render() }}
42
42
  {%- endcall %}
43
43
  {% endmacro %}
44
44
 
@@ -0,0 +1,26 @@
1
+ {#
2
+ We expect a syntax error if dbt show is invoked both with a --limit flag to show
3
+ and with a limit predicate embedded in its inline query. No special handling is
4
+ provided out-of-box.
5
+ #}
6
+ {% macro get_show_sql(compiled_code, sql_header, limit) -%}
7
+ {%- if sql_header is not none -%}
8
+ {{ sql_header }}
9
+ {%- endif %}
10
+ {{ get_limit_subquery_sql(compiled_code, limit) }}
11
+ {% endmacro %}
12
+
13
+ {#
14
+ Not necessarily a true subquery anymore. Now, merely a query subordinate
15
+ to the calling macro.
16
+ #}
17
+ {%- macro get_limit_subquery_sql(sql, limit) -%}
18
+ {{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}
19
+ {%- endmacro -%}
20
+
21
+ {% macro default__get_limit_sql(sql, limit) %}
22
+ {{ compiled_code }}
23
+ {% if limit is not none %}
24
+ limit {{ limit }}
25
+ {%- endif -%}
26
+ {% endmacro %}
@@ -27,14 +27,14 @@
27
27
 
28
28
  {%- set target_relation = this.incorporate(type='table') -%}
29
29
  {% if existing_relation is not none and not existing_relation.is_table %}
30
- {{ log("Dropping relation " ~ existing_relation ~ " because it is of type " ~ existing_relation.type) }}
30
+ {{ log("Dropping relation " ~ existing_relation.render() ~ " because it is of type " ~ existing_relation.type) }}
31
31
  {{ drop_relation_if_exists(existing_relation) }}
32
32
  {% endif %}
33
33
 
34
34
  -- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'
35
35
  {% call statement('main') %}
36
36
  {% if target_relation and defer_relation and target_relation == defer_relation %}
37
- {{ log("Target relation and defer relation are the same, skipping clone for relation: " ~ target_relation) }}
37
+ {{ log("Target relation and defer relation are the same, skipping clone for relation: " ~ target_relation.render()) }}
38
38
  {% else %}
39
39
  {{ create_or_replace_clone(target_relation, defer_relation) }}
40
40
  {% endif %}
@@ -3,5 +3,5 @@
3
3
  {% endmacro %}
4
4
 
5
5
  {% macro default__create_or_replace_clone(this_relation, defer_relation) %}
6
- create or replace table {{ this_relation }} clone {{ defer_relation }}
6
+ create or replace table {{ this_relation.render() }} clone {{ defer_relation.render() }}
7
7
  {% endmacro %}
@@ -39,9 +39,12 @@
39
39
  {% set need_swap = true %}
40
40
  {% else %}
41
41
  {% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}
42
- {% do adapter.expand_target_column_types(
43
- from_relation=temp_relation,
44
- to_relation=target_relation) %}
42
+ {% set contract_config = config.get('contract') %}
43
+ {% if not contract_config or not contract_config.enforced %}
44
+ {% do adapter.expand_target_column_types(
45
+ from_relation=temp_relation,
46
+ to_relation=target_relation) %}
47
+ {% endif %}
45
48
  {#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}
46
49
  {% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}
47
50
  {% if not dest_columns %}
@@ -71,9 +71,9 @@
71
71
  {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}
72
72
  {% elif on_configuration_change == 'continue' %}
73
73
  {% set build_sql = '' %}
74
- {{ exceptions.warn("Configuration changes were identified and `on_configuration_change` was set to `continue` for `" ~ target_relation ~ "`") }}
74
+ {{ exceptions.warn("Configuration changes were identified and `on_configuration_change` was set to `continue` for `" ~ target_relation.render() ~ "`") }}
75
75
  {% elif on_configuration_change == 'fail' %}
76
- {{ exceptions.raise_fail_fast_error("Configuration changes were identified and `on_configuration_change` was set to `fail` for `" ~ target_relation ~ "`") }}
76
+ {{ exceptions.raise_fail_fast_error("Configuration changes were identified and `on_configuration_change` was set to `fail` for `" ~ target_relation.render() ~ "`") }}
77
77
 
78
78
  {% else %}
79
79
  -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'
@@ -37,7 +37,7 @@
37
37
  {% set sql = create_csv_table(model, agate_table) %}
38
38
  {% else %}
39
39
  {{ adapter.truncate_relation(old_relation) }}
40
- {% set sql = "truncate table " ~ old_relation %}
40
+ {% set sql = "truncate table " ~ old_relation.render() %}
41
41
  {% endif %}
42
42
 
43
43
  {{ return(sql) }}
@@ -22,7 +22,7 @@
22
22
  -- build model
23
23
  {% set create_table_sql = "" %}
24
24
  {% if exists_as_view %}
25
- {{ exceptions.raise_compiler_error("Cannot seed to '{}', it is a view".format(old_relation)) }}
25
+ {{ exceptions.raise_compiler_error("Cannot seed to '{}', it is a view".format(old_relation.render())) }}
26
26
  {% elif exists_as_table %}
27
27
  {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}
28
28
  {% else %}
@@ -8,7 +8,7 @@
8
8
  {% macro default__create_columns(relation, columns) %}
9
9
  {% for column in columns %}
10
10
  {% call statement() %}
11
- alter table {{ relation }} add column "{{ column.name }}" {{ column.data_type }};
11
+ alter table {{ relation.render() }} add column "{{ column.name }}" {{ column.data_type }};
12
12
  {% endcall %}
13
13
  {% endfor %}
14
14
  {% endmacro %}
@@ -7,7 +7,7 @@
7
7
  {% macro default__snapshot_merge_sql(target, source, insert_cols) -%}
8
8
  {%- set insert_cols_csv = insert_cols | join(', ') -%}
9
9
 
10
- merge into {{ target }} as DBT_INTERNAL_DEST
10
+ merge into {{ target.render() }} as DBT_INTERNAL_DEST
11
11
  using {{ source }} as DBT_INTERNAL_SOURCE
12
12
  on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id
13
13
 
@@ -16,7 +16,7 @@
16
16
  {{ drop_materialized_view(relation) }}
17
17
 
18
18
  {%- else -%}
19
- drop {{ relation.type }} if exists {{ relation }} cascade
19
+ drop {{ relation.type }} if exists {{ relation.render() }} cascade
20
20
 
21
21
  {%- endif -%}
22
22
 
@@ -10,5 +10,5 @@ actually executes the drop, and `get_drop_sql`, which returns the template.
10
10
 
11
11
 
12
12
  {% macro default__drop_materialized_view(relation) -%}
13
- drop materialized view if exists {{ relation }} cascade
13
+ drop materialized view if exists {{ relation.render() }} cascade
14
14
  {%- endmacro %}
@@ -30,6 +30,6 @@
30
30
  {% macro default__rename_relation(from_relation, to_relation) -%}
31
31
  {% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}
32
32
  {% call statement('rename_relation') -%}
33
- alter table {{ from_relation }} rename to {{ target_name }}
33
+ alter table {{ from_relation.render() }} rename to {{ target_name }}
34
34
  {%- endcall %}
35
35
  {% endmacro %}
@@ -10,5 +10,5 @@ actually executes the drop, and `get_drop_sql`, which returns the template.
10
10
 
11
11
 
12
12
  {% macro default__drop_table(relation) -%}
13
- drop table if exists {{ relation }} cascade
13
+ drop table if exists {{ relation.render() }} cascade
14
14
  {%- endmacro %}