dbt-adapters 1.0.0b2__tar.gz → 1.1.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 (155) hide show
  1. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/.gitignore +1 -1
  2. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/PKG-INFO +2 -1
  3. dbt_adapters-1.1.0/dbt/adapters/__about__.py +1 -0
  4. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/__init__.py +1 -0
  5. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/connections.py +3 -1
  6. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/impl.py +95 -23
  7. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/relation.py +13 -2
  8. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/capability.py +3 -0
  9. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/contracts/relation.py +2 -4
  10. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/README.md +1 -1
  11. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/adapter_types.proto +10 -0
  12. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/adapter_types_pb2.py +5 -2
  13. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/types.py +15 -1
  14. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/factory.py +17 -4
  15. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/protocol.py +26 -52
  16. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/relation_configs/README.md +1 -1
  17. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/relation_configs/config_change.py +3 -1
  18. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/columns.sql +1 -1
  19. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/tests/helpers.sql +1 -1
  20. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/tests/unit.sql +6 -2
  21. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql +1 -1
  22. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/pyproject.toml +7 -54
  23. dbt_adapters-1.0.0b2/dbt/adapters/__about__.py +0 -1
  24. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/LICENSE +0 -0
  25. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/README.md +0 -0
  26. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/__init__.py +0 -0
  27. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/README.md +0 -0
  28. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/__init__.py +0 -0
  29. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/column.py +0 -0
  30. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/meta.py +0 -0
  31. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/plugin.py +0 -0
  32. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/base/query_headers.py +0 -0
  33. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/cache.py +0 -0
  34. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/clients/__init__.py +0 -0
  35. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/clients/jinja.py +0 -0
  36. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/contracts/__init__.py +0 -0
  37. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/contracts/connection.py +0 -0
  38. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/contracts/macros.py +0 -0
  39. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/__init__.py +0 -0
  40. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/base_types.py +0 -0
  41. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/events/logging.py +0 -0
  42. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/exceptions/__init__.py +0 -0
  43. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/exceptions/alias.py +0 -0
  44. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/exceptions/cache.py +0 -0
  45. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/exceptions/compilation.py +0 -0
  46. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/exceptions/connection.py +0 -0
  47. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/exceptions/database.py +0 -0
  48. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/py.typed +0 -0
  49. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/reference_keys.py +0 -0
  50. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/relation_configs/__init__.py +0 -0
  51. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/relation_configs/config_base.py +0 -0
  52. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/relation_configs/config_validation.py +0 -0
  53. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/sql/__init__.py +0 -0
  54. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/sql/connections.py +0 -0
  55. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/sql/impl.py +0 -0
  56. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/adapters/utils.py +0 -0
  57. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/__init__.py +0 -0
  58. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/__init__.py +0 -0
  59. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/dbt_project.yml +0 -0
  60. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/docs/overview.md +0 -0
  61. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/apply_grants.sql +0 -0
  62. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/freshness.sql +0 -0
  63. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/indexes.sql +0 -0
  64. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/metadata.sql +0 -0
  65. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/persist_docs.sql +0 -0
  66. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/relation.sql +0 -0
  67. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/schema.sql +0 -0
  68. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/show.sql +0 -0
  69. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/timestamps.sql +0 -0
  70. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/adapters/validate_sql.sql +0 -0
  71. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/etc/datetime.sql +0 -0
  72. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/etc/statement.sql +0 -0
  73. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/generic_test_sql/accepted_values.sql +0 -0
  74. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/generic_test_sql/not_null.sql +0 -0
  75. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/generic_test_sql/relationships.sql +0 -0
  76. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/generic_test_sql/unique.sql +0 -0
  77. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/get_custom_name/get_custom_alias.sql +0 -0
  78. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/get_custom_name/get_custom_database.sql +0 -0
  79. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql +0 -0
  80. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/configs.sql +0 -0
  81. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/hooks.sql +0 -0
  82. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql +0 -0
  83. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/clone/clone.sql +0 -0
  84. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/clone/create_or_replace_clone.sql +0 -0
  85. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql +0 -0
  86. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +0 -0
  87. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql +0 -0
  88. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/incremental/merge.sql +0 -0
  89. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql +0 -0
  90. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/incremental/strategies.sql +0 -0
  91. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/materialized_view.sql +0 -0
  92. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/table.sql +0 -0
  93. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/models/view.sql +0 -0
  94. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/seeds/helpers.sql +0 -0
  95. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/seeds/seed.sql +0 -0
  96. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +0 -0
  97. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot.sql +0 -0
  98. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot_merge.sql +0 -0
  99. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/snapshots/strategies.sql +0 -0
  100. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/tests/test.sql +0 -0
  101. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/materializations/tests/where_subquery.sql +0 -0
  102. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/python_model/python.sql +0 -0
  103. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/column/columns_spec_ddl.sql +0 -0
  104. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/create.sql +0 -0
  105. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/create_backup.sql +0 -0
  106. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/create_intermediate.sql +0 -0
  107. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/drop.sql +0 -0
  108. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/drop_backup.sql +0 -0
  109. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/materialized_view/alter.sql +0 -0
  110. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/materialized_view/create.sql +0 -0
  111. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/materialized_view/drop.sql +0 -0
  112. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/materialized_view/refresh.sql +0 -0
  113. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/materialized_view/rename.sql +0 -0
  114. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/materialized_view/replace.sql +0 -0
  115. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/rename.sql +0 -0
  116. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/rename_intermediate.sql +0 -0
  117. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/replace.sql +0 -0
  118. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/schema.sql +0 -0
  119. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/table/create.sql +0 -0
  120. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/table/drop.sql +0 -0
  121. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/table/rename.sql +0 -0
  122. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/table/replace.sql +0 -0
  123. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/view/create.sql +0 -0
  124. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/view/drop.sql +0 -0
  125. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/view/rename.sql +0 -0
  126. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/relations/view/replace.sql +0 -0
  127. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/any_value.sql +0 -0
  128. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/array_append.sql +0 -0
  129. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/array_concat.sql +0 -0
  130. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/array_construct.sql +0 -0
  131. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/bool_or.sql +0 -0
  132. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/cast.sql +0 -0
  133. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/cast_bool_to_text.sql +0 -0
  134. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/concat.sql +0 -0
  135. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/data_types.sql +0 -0
  136. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/date_spine.sql +0 -0
  137. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/date_trunc.sql +0 -0
  138. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/dateadd.sql +0 -0
  139. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/datediff.sql +0 -0
  140. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/escape_single_quotes.sql +0 -0
  141. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/except.sql +0 -0
  142. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/generate_series.sql +0 -0
  143. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/hash.sql +0 -0
  144. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/intersect.sql +0 -0
  145. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/last_day.sql +0 -0
  146. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/length.sql +0 -0
  147. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/listagg.sql +0 -0
  148. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/literal.sql +0 -0
  149. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/position.sql +0 -0
  150. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/replace.sql +0 -0
  151. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/right.sql +0 -0
  152. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/safe_cast.sql +0 -0
  153. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/macros/utils/split_part.sql +0 -0
  154. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/global_project/tests/generic/builtin.sql +0 -0
  155. {dbt_adapters-1.0.0b2 → dbt_adapters-1.1.0}/dbt/include/py.typed +0 -0
@@ -153,4 +153,4 @@ dmypy.json
153
153
  cython_debug/
154
154
 
155
155
  # PyCharm
156
- .idea/
156
+ .idea/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-adapters
3
- Version: 1.0.0b2
3
+ Version: 1.1.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
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.8
20
20
  Classifier: Programming Language :: Python :: 3.9
21
21
  Classifier: Programming Language :: Python :: 3.10
22
22
  Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
23
24
  Requires-Python: >=3.8.0
24
25
  Requires-Dist: agate<2.0,>=1.0
25
26
  Requires-Dist: dbt-common<2.0
@@ -0,0 +1 @@
1
+ version = "1.1.0"
@@ -2,6 +2,7 @@
2
2
  This adds all subdirectories of directories on `sys.path` to this package’s `__path__` .
3
3
  It effectively combines all adapters into a single namespace (dbt.adapter).
4
4
  """
5
+
5
6
  from pkgutil import extend_path
6
7
 
7
8
  __path__ = extend_path(__path__, __name__)
@@ -165,7 +165,9 @@ class BaseConnectionManager(metaclass=abc.ABCMeta):
165
165
  conn.handle = LazyHandle(self.open)
166
166
  # Add the connection to thread_connections for this thread
167
167
  self.set_thread_connection(conn)
168
- fire_event(NewConnection(conn_name=conn_name, conn_type=self.TYPE, node_info=get_node_info()))
168
+ fire_event(
169
+ NewConnection(conn_name=conn_name, conn_type=self.TYPE, node_info=get_node_info())
170
+ )
169
171
  else: # existing connection either wasn't open or didn't have the right name
170
172
  if conn.state != "open":
171
173
  conn.handle = LazyHandle(self.open)
@@ -1062,6 +1062,7 @@ class BaseAdapter(metaclass=AdapterMeta):
1062
1062
  project: Optional[str] = None,
1063
1063
  context_override: Optional[Dict[str, Any]] = None,
1064
1064
  kwargs: Optional[Dict[str, Any]] = None,
1065
+ needs_conn: bool = False,
1065
1066
  ) -> AttrDict:
1066
1067
  """Look macro_name up in the manifest and execute its results.
1067
1068
 
@@ -1074,6 +1075,10 @@ class BaseAdapter(metaclass=AdapterMeta):
1074
1075
  execution context.
1075
1076
  :param kwargs: An optional dict of keyword args used to pass to the
1076
1077
  macro.
1078
+ : param needs_conn: A boolean that indicates whether the specified macro
1079
+ requires an open connection to execute. If needs_conn is True, a
1080
+ connection is expected and opened if necessary. Otherwise (and by default),
1081
+ no connection is expected prior to executing the macro.
1077
1082
  """
1078
1083
 
1079
1084
  if kwargs is None:
@@ -1106,6 +1111,10 @@ class BaseAdapter(metaclass=AdapterMeta):
1106
1111
 
1107
1112
  macro_function = CallableMacroGenerator(macro, macro_context)
1108
1113
 
1114
+ if needs_conn:
1115
+ connection = self.connections.get_thread_connection()
1116
+ self.connections.open(connection)
1117
+
1109
1118
  with self.connections.exception_handler(f"macro {macro_name}"):
1110
1119
  result = macro_function(**kwargs)
1111
1120
  return result
@@ -1297,48 +1306,111 @@ class BaseAdapter(metaclass=AdapterMeta):
1297
1306
  }
1298
1307
  return adapter_response, freshness
1299
1308
 
1309
+ def calculate_freshness_from_metadata_batch(
1310
+ self,
1311
+ sources: List[BaseRelation],
1312
+ macro_resolver: Optional[MacroResolverProtocol] = None,
1313
+ ) -> Tuple[List[Optional[AdapterResponse]], Dict[BaseRelation, FreshnessResponse]]:
1314
+ """
1315
+ Given a list of sources (BaseRelations), calculate the metadata-based freshness in batch.
1316
+ This method should _not_ execute a warehouse query per source, but rather batch up
1317
+ the sources into as few requests as possible to minimize the number of roundtrips required
1318
+ to compute metadata-based freshness for each input source.
1319
+
1320
+ :param sources: The list of sources to calculate metadata-based freshness for
1321
+ :param macro_resolver: An optional macro_resolver to use for get_relation_last_modified
1322
+ :return: a tuple where:
1323
+ * the first element is a list of optional AdapterResponses indicating the response
1324
+ for each request the method made to compute the freshness for the provided sources.
1325
+ * the second element is a dictionary mapping an input source BaseRelation to a FreshnessResponse,
1326
+ if it was possible to calculate a FreshnessResponse for the source.
1327
+ """
1328
+ # Track schema, identifiers of sources for lookup from batch query
1329
+ schema_identifier_to_source = {
1330
+ (
1331
+ source.path.get_lowered_part(ComponentName.Schema), # type: ignore
1332
+ source.path.get_lowered_part(ComponentName.Identifier), # type: ignore
1333
+ ): source
1334
+ for source in sources
1335
+ }
1336
+
1337
+ # Group metadata sources by information schema -- one query per information schema will be necessary
1338
+ sources_by_info_schema: Dict[InformationSchema, List[BaseRelation]] = (
1339
+ self._get_catalog_relations_by_info_schema(sources)
1340
+ )
1341
+
1342
+ freshness_responses: Dict[BaseRelation, FreshnessResponse] = {}
1343
+ adapter_responses: List[Optional[AdapterResponse]] = []
1344
+ for (
1345
+ information_schema,
1346
+ sources_for_information_schema,
1347
+ ) in sources_by_info_schema.items():
1348
+ result = self.execute_macro(
1349
+ GET_RELATION_LAST_MODIFIED_MACRO_NAME,
1350
+ kwargs={
1351
+ "information_schema": information_schema,
1352
+ "relations": sources_for_information_schema,
1353
+ },
1354
+ macro_resolver=macro_resolver,
1355
+ needs_conn=True,
1356
+ )
1357
+ adapter_response, table = result.response, result.table # type: ignore[attr-defined]
1358
+ adapter_responses.append(adapter_response)
1359
+
1360
+ for row in table:
1361
+ raw_relation, freshness_response = self._parse_freshness_row(row, table)
1362
+ source_relation_for_result = schema_identifier_to_source[raw_relation]
1363
+ freshness_responses[source_relation_for_result] = freshness_response
1364
+
1365
+ return adapter_responses, freshness_responses
1366
+
1300
1367
  def calculate_freshness_from_metadata(
1301
1368
  self,
1302
1369
  source: BaseRelation,
1303
1370
  macro_resolver: Optional[MacroResolverProtocol] = None,
1304
1371
  ) -> Tuple[Optional[AdapterResponse], FreshnessResponse]:
1305
- kwargs: Dict[str, Any] = {
1306
- "information_schema": source.information_schema_only(),
1307
- "relations": [source],
1308
- }
1309
- result = self.execute_macro(
1310
- GET_RELATION_LAST_MODIFIED_MACRO_NAME,
1311
- kwargs=kwargs,
1372
+ adapter_responses, freshness_responses = self.calculate_freshness_from_metadata_batch(
1373
+ sources=[source],
1312
1374
  macro_resolver=macro_resolver,
1313
1375
  )
1314
- adapter_response, table = result.response, result.table # type: ignore[attr-defined]
1376
+ adapter_response = adapter_responses[0] if adapter_responses else None
1377
+ return adapter_response, freshness_responses[source]
1315
1378
 
1316
- try:
1317
- from dbt_common.clients.agate_helper import get_column_value_uncased
1318
-
1319
- row = table[0]
1320
- last_modified_val = get_column_value_uncased("last_modified", row)
1321
- snapshotted_at_val = get_column_value_uncased("snapshotted_at", row)
1322
- except Exception:
1323
- raise MacroResultError(GET_RELATION_LAST_MODIFIED_MACRO_NAME, table)
1324
-
1325
- if last_modified_val is None:
1379
+ def _create_freshness_response(
1380
+ self, last_modified: Optional[datetime], snapshotted_at: Optional[datetime]
1381
+ ) -> FreshnessResponse:
1382
+ if last_modified is None:
1326
1383
  # Interpret missing value as "infinitely long ago"
1327
1384
  max_loaded_at = datetime(1, 1, 1, 0, 0, 0, tzinfo=pytz.UTC)
1328
1385
  else:
1329
- max_loaded_at = _utc(last_modified_val, None, "last_modified")
1330
-
1331
- snapshotted_at = _utc(snapshotted_at_val, None, "snapshotted_at")
1386
+ max_loaded_at = _utc(last_modified, None, "last_modified")
1332
1387
 
1388
+ snapshotted_at = _utc(snapshotted_at, None, "snapshotted_at")
1333
1389
  age = (snapshotted_at - max_loaded_at).total_seconds()
1334
-
1335
1390
  freshness: FreshnessResponse = {
1336
1391
  "max_loaded_at": max_loaded_at,
1337
1392
  "snapshotted_at": snapshotted_at,
1338
1393
  "age": age,
1339
1394
  }
1340
1395
 
1341
- return adapter_response, freshness
1396
+ return freshness
1397
+
1398
+ def _parse_freshness_row(
1399
+ self, row: "agate.Row", table: "agate.Table"
1400
+ ) -> Tuple[Any, FreshnessResponse]:
1401
+ from dbt_common.clients.agate_helper import get_column_value_uncased
1402
+
1403
+ try:
1404
+ last_modified_val = get_column_value_uncased("last_modified", row)
1405
+ snapshotted_at_val = get_column_value_uncased("snapshotted_at", row)
1406
+ identifier = get_column_value_uncased("identifier", row)
1407
+ schema = get_column_value_uncased("schema", row)
1408
+ except Exception:
1409
+ raise MacroResultError(GET_RELATION_LAST_MODIFIED_MACRO_NAME, table)
1410
+
1411
+ freshness_response = self._create_freshness_response(last_modified_val, snapshotted_at_val)
1412
+ raw_relation = schema.lower().strip(), identifier.lower().strip()
1413
+ return raw_relation, freshness_response
1342
1414
 
1343
1415
  def pre_model_hook(self, config: Mapping[str, Any]) -> Any:
1344
1416
  """A hook for running some operation before the model materialization
@@ -47,6 +47,9 @@ class BaseRelation(FakeAPIObject, Hashable):
47
47
  quote_policy: Policy = field(default_factory=lambda: Policy())
48
48
  dbt_created: bool = False
49
49
  limit: Optional[int] = None
50
+ require_alias: bool = (
51
+ True # used to govern whether to add an alias when render_limited is called
52
+ )
50
53
 
51
54
  # register relation types that can be renamed for the purpose of replacing relations using stages and backups
52
55
  # adding a relation type here also requires defining the associated rename macro
@@ -205,14 +208,22 @@ class BaseRelation(FakeAPIObject, Hashable):
205
208
  # if there is nothing set, this will return the empty string.
206
209
  return ".".join(part for _, part in self._render_iterator() if part is not None)
207
210
 
211
+ def _render_limited_alias(self) -> str:
212
+ """Some databases require an alias for subqueries (postgres, mysql) for all others we want to avoid adding
213
+ an alias as it has the potential to introduce issues with the query if the user also defines an alias.
214
+ """
215
+ if self.require_alias:
216
+ return f" _dbt_limit_subq_{self.table}"
217
+ return ""
218
+
208
219
  def render_limited(self) -> str:
209
220
  rendered = self.render()
210
221
  if self.limit is None:
211
222
  return rendered
212
223
  elif self.limit == 0:
213
- return f"(select * from {rendered} where false limit 0) _dbt_limit_subq"
224
+ return f"(select * from {rendered} where false limit 0){self._render_limited_alias()}"
214
225
  else:
215
- return f"(select * from {rendered} limit {self.limit}) _dbt_limit_subq"
226
+ return f"(select * from {rendered} limit {self.limit}){self._render_limited_alias()}"
216
227
 
217
228
  def quoted(self, identifier):
218
229
  return "{quote_char}{identifier}{quote_char}".format(
@@ -13,6 +13,9 @@ class Capability(str, Enum):
13
13
  TableLastModifiedMetadata = "TableLastModifiedMetadata"
14
14
  """Indicates support for determining the time of the last table modification by querying database metadata."""
15
15
 
16
+ TableLastModifiedMetadataBatch = "TableLastModifiedMetadataBatch"
17
+ """Indicates support for performantly determining the time of the last table modification by querying database metadata in batch."""
18
+
16
19
 
17
20
  class Support(str, Enum):
18
21
  Unknown = "Unknown"
@@ -40,11 +40,9 @@ class MaterializationConfig(Mapping, ABC):
40
40
  contract: MaterializationContract
41
41
  extra: Dict[str, Any]
42
42
 
43
- def __contains__(self, item):
44
- ...
43
+ def __contains__(self, item): ...
45
44
 
46
- def __delitem__(self, key):
47
- ...
45
+ def __delitem__(self, key): ...
48
46
 
49
47
 
50
48
  class RelationConfig(Protocol):
@@ -14,7 +14,7 @@ When events are processed via `fire_event`, nearly everything is logged. Whether
14
14
 
15
15
  We have switched from using betterproto to using google protobuf, because of a lack of support for Struct fields in betterproto.
16
16
 
17
- The google protobuf interface is janky and very much non-Pythonic. The "generated" classes in types_pb2.py do not resemble regular Python classes. They do not have normal constructors; they can only be constructed empty. They can be "filled" by setting fields individually or using a json_format method like ParseDict. We have wrapped the logging events with a class (in types.py) which allows using a constructor -- keywords only, no positional parameters.
17
+ The google protobuf interface is janky and very much non-Pythonic. The "generated" classes in types_pb2.py do not resemble regular Python classes. They do not have normal constructors; they can only be constructed empty. They can be "filled" by setting fields individually or using a json_format method like ParseDict. We have wrapped the logging events with a class (in types.py) which allows using a constructor -- keywords only, no positional parameters.
18
18
 
19
19
  ## Required for Every Event
20
20
 
@@ -515,3 +515,13 @@ message ConstraintNotSupportedMsg {
515
515
  AdapterCommonEventInfo info = 1;
516
516
  ConstraintNotSupported data = 2;
517
517
  }
518
+
519
+ // E050
520
+ message TypeCodeNotFound {
521
+ int32 type_code = 1;
522
+ }
523
+
524
+ message TypeCodeNotFoundMsg {
525
+ AdapterCommonEventInfo info = 1;
526
+ TypeCodeNotFound data = 2;
527
+ }
@@ -1,7 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: adapter_types.proto
4
- # Protobuf Python Version: 4.25.2
5
4
  """Generated protocol buffer code."""
6
5
  from google.protobuf import descriptor as _descriptor
7
6
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -16,7 +15,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
16
15
  from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
17
16
 
18
17
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x61\x64\x61pter_types.proto\x12\x0bproto_types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xab\x02\n\x16\x41\x64\x61pterCommonEventInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x63ode\x18\x02 \x01(\t\x12\x0b\n\x03msg\x18\x03 \x01(\t\x12\r\n\x05level\x18\x04 \x01(\t\x12\x15\n\rinvocation_id\x18\x05 \x01(\t\x12\x0b\n\x03pid\x18\x06 \x01(\x05\x12\x0e\n\x06thread\x18\x07 \x01(\t\x12&\n\x02ts\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x05\x65xtra\x18\t \x03(\x0b\x32..proto_types.AdapterCommonEventInfo.ExtraEntry\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x1a,\n\nExtraEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x13\x41\x64\x61pterNodeRelation\x12\x10\n\x08\x64\x61tabase\x18\n \x01(\t\x12\x0e\n\x06schema\x18\x0b \x01(\t\x12\r\n\x05\x61lias\x18\x0c \x01(\t\x12\x15\n\rrelation_name\x18\r \x01(\t\"\x9f\x02\n\x0f\x41\x64\x61pterNodeInfo\x12\x11\n\tnode_path\x18\x01 \x01(\t\x12\x11\n\tnode_name\x18\x02 \x01(\t\x12\x11\n\tunique_id\x18\x03 \x01(\t\x12\x15\n\rresource_type\x18\x04 \x01(\t\x12\x14\n\x0cmaterialized\x18\x05 \x01(\t\x12\x13\n\x0bnode_status\x18\x06 \x01(\t\x12\x17\n\x0fnode_started_at\x18\x07 \x01(\t\x12\x18\n\x10node_finished_at\x18\x08 \x01(\t\x12%\n\x04meta\x18\t \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x37\n\rnode_relation\x18\n \x01(\x0b\x32 .proto_types.AdapterNodeRelation\"G\n\x0fReferenceKeyMsg\x12\x10\n\x08\x64\x61tabase\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x12\n\nidentifier\x18\x03 \x01(\t\"?\n\x19\x41\x64\x61pterDeprecationWarning\x12\x10\n\x08old_name\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"\x87\x01\n\x1c\x41\x64\x61pterDeprecationWarningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x34\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32&.proto_types.AdapterDeprecationWarning\"!\n\x1f\x43ollectFreshnessReturnSignature\"\x93\x01\n\"CollectFreshnessReturnSignatureMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12:\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32,.proto_types.CollectFreshnessReturnSignature\"\x8e\x01\n\x11\x41\x64\x61pterEventDebug\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\"w\n\x14\x41\x64\x61pterEventDebugMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1e.proto_types.AdapterEventDebug\"\x8d\x01\n\x10\x41\x64\x61pterEventInfo\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\"u\n\x13\x41\x64\x61pterEventInfoMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.AdapterEventInfo\"\x90\x01\n\x13\x41\x64\x61pterEventWarning\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\"{\n\x16\x41\x64\x61pterEventWarningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12.\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .proto_types.AdapterEventWarning\"\xa0\x01\n\x11\x41\x64\x61pterEventError\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\x12\x10\n\x08\x65xc_info\x18\x05 \x01(\t\"w\n\x14\x41\x64\x61pterEventErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1e.proto_types.AdapterEventError\"f\n\rNewConnection\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_type\x18\x02 \x01(\t\x12\x11\n\tconn_name\x18\x03 \x01(\t\"o\n\x10NewConnectionMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.NewConnection\"=\n\x10\x43onnectionReused\x12\x11\n\tconn_name\x18\x01 \x01(\t\x12\x16\n\x0eorig_conn_name\x18\x02 \x01(\t\"u\n\x13\x43onnectionReusedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.ConnectionReused\"0\n\x1b\x43onnectionLeftOpenInCleanup\x12\x11\n\tconn_name\x18\x01 \x01(\t\"\x8b\x01\n\x1e\x43onnectionLeftOpenInCleanupMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x36\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32(.proto_types.ConnectionLeftOpenInCleanup\".\n\x19\x43onnectionClosedInCleanup\x12\x11\n\tconn_name\x18\x01 \x01(\t\"\x87\x01\n\x1c\x43onnectionClosedInCleanupMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x34\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32&.proto_types.ConnectionClosedInCleanup\"f\n\x0eRollbackFailed\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\x12\x10\n\x08\x65xc_info\x18\x03 \x01(\t\"q\n\x11RollbackFailedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.RollbackFailed\"V\n\x10\x43onnectionClosed\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"u\n\x13\x43onnectionClosedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.ConnectionClosed\"X\n\x12\x43onnectionLeftOpen\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"y\n\x15\x43onnectionLeftOpenMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1f.proto_types.ConnectionLeftOpen\"N\n\x08Rollback\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"e\n\x0bRollbackMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12#\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x15.proto_types.Rollback\"@\n\tCacheMiss\x12\x11\n\tconn_name\x18\x01 \x01(\t\x12\x10\n\x08\x64\x61tabase\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\"g\n\x0c\x43\x61\x63heMissMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12$\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x16.proto_types.CacheMiss\"b\n\rListRelations\x12\x10\n\x08\x64\x61tabase\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12/\n\trelations\x18\x03 \x03(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"o\n\x10ListRelationsMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.ListRelations\"g\n\x0e\x43onnectionUsed\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_type\x18\x02 \x01(\t\x12\x11\n\tconn_name\x18\x03 \x01(\t\"q\n\x11\x43onnectionUsedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.ConnectionUsed\"[\n\x08SQLQuery\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\x12\x0b\n\x03sql\x18\x03 \x01(\t\"e\n\x0bSQLQueryMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12#\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x15.proto_types.SQLQuery\"b\n\x0eSQLQueryStatus\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x0f\n\x07\x65lapsed\x18\x03 \x01(\x02\"q\n\x11SQLQueryStatusMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.SQLQueryStatus\"O\n\tSQLCommit\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"g\n\x0cSQLCommitMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12$\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x16.proto_types.SQLCommit\"a\n\rColTypeChange\x12\x11\n\torig_type\x18\x01 \x01(\t\x12\x10\n\x08new_type\x18\x02 \x01(\t\x12+\n\x05table\x18\x03 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"o\n\x10\x43olTypeChangeMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.ColTypeChange\"@\n\x0eSchemaCreation\x12.\n\x08relation\x18\x01 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"q\n\x11SchemaCreationMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.SchemaCreation\"<\n\nSchemaDrop\x12.\n\x08relation\x18\x01 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"i\n\rSchemaDropMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.proto_types.SchemaDrop\"\xde\x01\n\x0b\x43\x61\x63heAction\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12-\n\x07ref_key\x18\x02 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\x12/\n\tref_key_2\x18\x03 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\x12/\n\tref_key_3\x18\x04 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\x12.\n\x08ref_list\x18\x05 \x03(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"k\n\x0e\x43\x61\x63heActionMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12&\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x18.proto_types.CacheAction\"\x98\x01\n\x0e\x43\x61\x63heDumpGraph\x12\x33\n\x04\x64ump\x18\x01 \x03(\x0b\x32%.proto_types.CacheDumpGraph.DumpEntry\x12\x14\n\x0c\x62\x65\x66ore_after\x18\x02 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x03 \x01(\t\x1a+\n\tDumpEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"q\n\x11\x43\x61\x63heDumpGraphMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.CacheDumpGraph\"B\n\x11\x41\x64\x61pterRegistered\x12\x14\n\x0c\x61\x64\x61pter_name\x18\x01 \x01(\t\x12\x17\n\x0f\x61\x64\x61pter_version\x18\x02 \x01(\t\"w\n\x14\x41\x64\x61pterRegisteredMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1e.proto_types.AdapterRegistered\"!\n\x12\x41\x64\x61pterImportError\x12\x0b\n\x03\x65xc\x18\x01 \x01(\t\"y\n\x15\x41\x64\x61pterImportErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1f.proto_types.AdapterImportError\"#\n\x0fPluginLoadError\x12\x10\n\x08\x65xc_info\x18\x01 \x01(\t\"s\n\x12PluginLoadErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12*\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1c.proto_types.PluginLoadError\"a\n\x14NewConnectionOpening\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x18\n\x10\x63onnection_state\x18\x02 \x01(\t\"}\n\x17NewConnectionOpeningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12/\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32!.proto_types.NewConnectionOpening\"8\n\rCodeExecution\x12\x11\n\tconn_name\x18\x01 \x01(\t\x12\x14\n\x0c\x63ode_content\x18\x02 \x01(\t\"o\n\x10\x43odeExecutionMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.CodeExecution\"6\n\x13\x43odeExecutionStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x0f\n\x07\x65lapsed\x18\x02 \x01(\x02\"{\n\x16\x43odeExecutionStatusMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12.\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .proto_types.CodeExecutionStatus\"%\n\x16\x43\x61talogGenerationError\x12\x0b\n\x03\x65xc\x18\x01 \x01(\t\"\x81\x01\n\x19\x43\x61talogGenerationErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x31\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32#.proto_types.CatalogGenerationError\"-\n\x13WriteCatalogFailure\x12\x16\n\x0enum_exceptions\x18\x01 \x01(\x05\"{\n\x16WriteCatalogFailureMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12.\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .proto_types.WriteCatalogFailure\"\x1e\n\x0e\x43\x61talogWritten\x12\x0c\n\x04path\x18\x01 \x01(\t\"q\n\x11\x43\x61talogWrittenMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.CatalogWritten\"\x14\n\x12\x43\x61nnotGenerateDocs\"y\n\x15\x43\x61nnotGenerateDocsMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1f.proto_types.CannotGenerateDocs\"\x11\n\x0f\x42uildingCatalog\"s\n\x12\x42uildingCatalogMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12*\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1c.proto_types.BuildingCatalog\"-\n\x18\x44\x61tabaseErrorRunningHook\x12\x11\n\thook_type\x18\x01 \x01(\t\"\x85\x01\n\x1b\x44\x61tabaseErrorRunningHookMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x33\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32%.proto_types.DatabaseErrorRunningHook\"4\n\x0cHooksRunning\x12\x11\n\tnum_hooks\x18\x01 \x01(\x05\x12\x11\n\thook_type\x18\x02 \x01(\t\"m\n\x0fHooksRunningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\'\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x19.proto_types.HooksRunning\"T\n\x14\x46inishedRunningStats\x12\x11\n\tstat_line\x18\x01 \x01(\t\x12\x11\n\texecution\x18\x02 \x01(\t\x12\x16\n\x0e\x65xecution_time\x18\x03 \x01(\x02\"}\n\x17\x46inishedRunningStatsMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12/\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32!.proto_types.FinishedRunningStats\"<\n\x15\x43onstraintNotEnforced\x12\x12\n\nconstraint\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x61pter\x18\x02 \x01(\t\"\x7f\n\x18\x43onstraintNotEnforcedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x30\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\".proto_types.ConstraintNotEnforced\"=\n\x16\x43onstraintNotSupported\x12\x12\n\nconstraint\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x61pter\x18\x02 \x01(\t\"\x81\x01\n\x19\x43onstraintNotSupportedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x31\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32#.proto_types.ConstraintNotSupportedb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x61\x64\x61pter_types.proto\x12\x0bproto_types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xab\x02\n\x16\x41\x64\x61pterCommonEventInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x63ode\x18\x02 \x01(\t\x12\x0b\n\x03msg\x18\x03 \x01(\t\x12\r\n\x05level\x18\x04 \x01(\t\x12\x15\n\rinvocation_id\x18\x05 \x01(\t\x12\x0b\n\x03pid\x18\x06 \x01(\x05\x12\x0e\n\x06thread\x18\x07 \x01(\t\x12&\n\x02ts\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x05\x65xtra\x18\t \x03(\x0b\x32..proto_types.AdapterCommonEventInfo.ExtraEntry\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x1a,\n\nExtraEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x13\x41\x64\x61pterNodeRelation\x12\x10\n\x08\x64\x61tabase\x18\n \x01(\t\x12\x0e\n\x06schema\x18\x0b \x01(\t\x12\r\n\x05\x61lias\x18\x0c \x01(\t\x12\x15\n\rrelation_name\x18\r \x01(\t\"\x9f\x02\n\x0f\x41\x64\x61pterNodeInfo\x12\x11\n\tnode_path\x18\x01 \x01(\t\x12\x11\n\tnode_name\x18\x02 \x01(\t\x12\x11\n\tunique_id\x18\x03 \x01(\t\x12\x15\n\rresource_type\x18\x04 \x01(\t\x12\x14\n\x0cmaterialized\x18\x05 \x01(\t\x12\x13\n\x0bnode_status\x18\x06 \x01(\t\x12\x17\n\x0fnode_started_at\x18\x07 \x01(\t\x12\x18\n\x10node_finished_at\x18\x08 \x01(\t\x12%\n\x04meta\x18\t \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x37\n\rnode_relation\x18\n \x01(\x0b\x32 .proto_types.AdapterNodeRelation\"G\n\x0fReferenceKeyMsg\x12\x10\n\x08\x64\x61tabase\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x12\n\nidentifier\x18\x03 \x01(\t\"?\n\x19\x41\x64\x61pterDeprecationWarning\x12\x10\n\x08old_name\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"\x87\x01\n\x1c\x41\x64\x61pterDeprecationWarningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x34\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32&.proto_types.AdapterDeprecationWarning\"!\n\x1f\x43ollectFreshnessReturnSignature\"\x93\x01\n\"CollectFreshnessReturnSignatureMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12:\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32,.proto_types.CollectFreshnessReturnSignature\"\x8e\x01\n\x11\x41\x64\x61pterEventDebug\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\"w\n\x14\x41\x64\x61pterEventDebugMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1e.proto_types.AdapterEventDebug\"\x8d\x01\n\x10\x41\x64\x61pterEventInfo\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\"u\n\x13\x41\x64\x61pterEventInfoMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.AdapterEventInfo\"\x90\x01\n\x13\x41\x64\x61pterEventWarning\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\"{\n\x16\x41\x64\x61pterEventWarningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12.\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .proto_types.AdapterEventWarning\"\xa0\x01\n\x11\x41\x64\x61pterEventError\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08\x62\x61se_msg\x18\x03 \x01(\t\x12(\n\x04\x61rgs\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.ListValue\x12\x10\n\x08\x65xc_info\x18\x05 \x01(\t\"w\n\x14\x41\x64\x61pterEventErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1e.proto_types.AdapterEventError\"f\n\rNewConnection\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_type\x18\x02 \x01(\t\x12\x11\n\tconn_name\x18\x03 \x01(\t\"o\n\x10NewConnectionMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.NewConnection\"=\n\x10\x43onnectionReused\x12\x11\n\tconn_name\x18\x01 \x01(\t\x12\x16\n\x0eorig_conn_name\x18\x02 \x01(\t\"u\n\x13\x43onnectionReusedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.ConnectionReused\"0\n\x1b\x43onnectionLeftOpenInCleanup\x12\x11\n\tconn_name\x18\x01 \x01(\t\"\x8b\x01\n\x1e\x43onnectionLeftOpenInCleanupMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x36\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32(.proto_types.ConnectionLeftOpenInCleanup\".\n\x19\x43onnectionClosedInCleanup\x12\x11\n\tconn_name\x18\x01 \x01(\t\"\x87\x01\n\x1c\x43onnectionClosedInCleanupMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x34\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32&.proto_types.ConnectionClosedInCleanup\"f\n\x0eRollbackFailed\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\x12\x10\n\x08\x65xc_info\x18\x03 \x01(\t\"q\n\x11RollbackFailedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.RollbackFailed\"V\n\x10\x43onnectionClosed\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"u\n\x13\x43onnectionClosedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.ConnectionClosed\"X\n\x12\x43onnectionLeftOpen\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"y\n\x15\x43onnectionLeftOpenMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1f.proto_types.ConnectionLeftOpen\"N\n\x08Rollback\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"e\n\x0bRollbackMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12#\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x15.proto_types.Rollback\"@\n\tCacheMiss\x12\x11\n\tconn_name\x18\x01 \x01(\t\x12\x10\n\x08\x64\x61tabase\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\"g\n\x0c\x43\x61\x63heMissMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12$\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x16.proto_types.CacheMiss\"b\n\rListRelations\x12\x10\n\x08\x64\x61tabase\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12/\n\trelations\x18\x03 \x03(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"o\n\x10ListRelationsMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.ListRelations\"g\n\x0e\x43onnectionUsed\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_type\x18\x02 \x01(\t\x12\x11\n\tconn_name\x18\x03 \x01(\t\"q\n\x11\x43onnectionUsedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.ConnectionUsed\"[\n\x08SQLQuery\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\x12\x0b\n\x03sql\x18\x03 \x01(\t\"e\n\x0bSQLQueryMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12#\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x15.proto_types.SQLQuery\"b\n\x0eSQLQueryStatus\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x0f\n\x07\x65lapsed\x18\x03 \x01(\x02\"q\n\x11SQLQueryStatusMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.SQLQueryStatus\"O\n\tSQLCommit\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x11\n\tconn_name\x18\x02 \x01(\t\"g\n\x0cSQLCommitMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12$\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x16.proto_types.SQLCommit\"a\n\rColTypeChange\x12\x11\n\torig_type\x18\x01 \x01(\t\x12\x10\n\x08new_type\x18\x02 \x01(\t\x12+\n\x05table\x18\x03 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"o\n\x10\x43olTypeChangeMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.ColTypeChange\"@\n\x0eSchemaCreation\x12.\n\x08relation\x18\x01 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"q\n\x11SchemaCreationMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.SchemaCreation\"<\n\nSchemaDrop\x12.\n\x08relation\x18\x01 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"i\n\rSchemaDropMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.proto_types.SchemaDrop\"\xde\x01\n\x0b\x43\x61\x63heAction\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12-\n\x07ref_key\x18\x02 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\x12/\n\tref_key_2\x18\x03 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\x12/\n\tref_key_3\x18\x04 \x01(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\x12.\n\x08ref_list\x18\x05 \x03(\x0b\x32\x1c.proto_types.ReferenceKeyMsg\"k\n\x0e\x43\x61\x63heActionMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12&\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x18.proto_types.CacheAction\"\x98\x01\n\x0e\x43\x61\x63heDumpGraph\x12\x33\n\x04\x64ump\x18\x01 \x03(\x0b\x32%.proto_types.CacheDumpGraph.DumpEntry\x12\x14\n\x0c\x62\x65\x66ore_after\x18\x02 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x03 \x01(\t\x1a+\n\tDumpEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"q\n\x11\x43\x61\x63heDumpGraphMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.CacheDumpGraph\"B\n\x11\x41\x64\x61pterRegistered\x12\x14\n\x0c\x61\x64\x61pter_name\x18\x01 \x01(\t\x12\x17\n\x0f\x61\x64\x61pter_version\x18\x02 \x01(\t\"w\n\x14\x41\x64\x61pterRegisteredMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1e.proto_types.AdapterRegistered\"!\n\x12\x41\x64\x61pterImportError\x12\x0b\n\x03\x65xc\x18\x01 \x01(\t\"y\n\x15\x41\x64\x61pterImportErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1f.proto_types.AdapterImportError\"#\n\x0fPluginLoadError\x12\x10\n\x08\x65xc_info\x18\x01 \x01(\t\"s\n\x12PluginLoadErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12*\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1c.proto_types.PluginLoadError\"a\n\x14NewConnectionOpening\x12/\n\tnode_info\x18\x01 \x01(\x0b\x32\x1c.proto_types.AdapterNodeInfo\x12\x18\n\x10\x63onnection_state\x18\x02 \x01(\t\"}\n\x17NewConnectionOpeningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12/\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32!.proto_types.NewConnectionOpening\"8\n\rCodeExecution\x12\x11\n\tconn_name\x18\x01 \x01(\t\x12\x14\n\x0c\x63ode_content\x18\x02 \x01(\t\"o\n\x10\x43odeExecutionMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12(\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1a.proto_types.CodeExecution\"6\n\x13\x43odeExecutionStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x0f\n\x07\x65lapsed\x18\x02 \x01(\x02\"{\n\x16\x43odeExecutionStatusMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12.\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .proto_types.CodeExecutionStatus\"%\n\x16\x43\x61talogGenerationError\x12\x0b\n\x03\x65xc\x18\x01 \x01(\t\"\x81\x01\n\x19\x43\x61talogGenerationErrorMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x31\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32#.proto_types.CatalogGenerationError\"-\n\x13WriteCatalogFailure\x12\x16\n\x0enum_exceptions\x18\x01 \x01(\x05\"{\n\x16WriteCatalogFailureMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12.\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .proto_types.WriteCatalogFailure\"\x1e\n\x0e\x43\x61talogWritten\x12\x0c\n\x04path\x18\x01 \x01(\t\"q\n\x11\x43\x61talogWrittenMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12)\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1b.proto_types.CatalogWritten\"\x14\n\x12\x43\x61nnotGenerateDocs\"y\n\x15\x43\x61nnotGenerateDocsMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1f.proto_types.CannotGenerateDocs\"\x11\n\x0f\x42uildingCatalog\"s\n\x12\x42uildingCatalogMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12*\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1c.proto_types.BuildingCatalog\"-\n\x18\x44\x61tabaseErrorRunningHook\x12\x11\n\thook_type\x18\x01 \x01(\t\"\x85\x01\n\x1b\x44\x61tabaseErrorRunningHookMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x33\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32%.proto_types.DatabaseErrorRunningHook\"4\n\x0cHooksRunning\x12\x11\n\tnum_hooks\x18\x01 \x01(\x05\x12\x11\n\thook_type\x18\x02 \x01(\t\"m\n\x0fHooksRunningMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\'\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x19.proto_types.HooksRunning\"T\n\x14\x46inishedRunningStats\x12\x11\n\tstat_line\x18\x01 \x01(\t\x12\x11\n\texecution\x18\x02 \x01(\t\x12\x16\n\x0e\x65xecution_time\x18\x03 \x01(\x02\"}\n\x17\x46inishedRunningStatsMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12/\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32!.proto_types.FinishedRunningStats\"<\n\x15\x43onstraintNotEnforced\x12\x12\n\nconstraint\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x61pter\x18\x02 \x01(\t\"\x7f\n\x18\x43onstraintNotEnforcedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x30\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\".proto_types.ConstraintNotEnforced\"=\n\x16\x43onstraintNotSupported\x12\x12\n\nconstraint\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x61pter\x18\x02 \x01(\t\"\x81\x01\n\x19\x43onstraintNotSupportedMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12\x31\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32#.proto_types.ConstraintNotSupported\"%\n\x10TypeCodeNotFound\x12\x11\n\ttype_code\x18\x01 \x01(\x05\"u\n\x13TypeCodeNotFoundMsg\x12\x31\n\x04info\x18\x01 \x01(\x0b\x32#.proto_types.AdapterCommonEventInfo\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x1d.proto_types.TypeCodeNotFoundb\x06proto3')
20
19
 
21
20
  _globals = globals()
22
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -203,4 +202,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
203
202
  _globals['_CONSTRAINTNOTSUPPORTED']._serialized_end=8961
204
203
  _globals['_CONSTRAINTNOTSUPPORTEDMSG']._serialized_start=8964
205
204
  _globals['_CONSTRAINTNOTSUPPORTEDMSG']._serialized_end=9093
205
+ _globals['_TYPECODENOTFOUND']._serialized_start=9095
206
+ _globals['_TYPECODENOTFOUND']._serialized_end=9132
207
+ _globals['_TYPECODENOTFOUNDMSG']._serialized_start=9134
208
+ _globals['_TYPECODENOTFOUNDMSG']._serialized_end=9251
206
209
  # @@protoc_insertion_point(module_scope)
@@ -2,6 +2,7 @@ from dbt_common.ui import line_wrap_message, warning_tag
2
2
 
3
3
  from dbt.adapters.events.base_types import (
4
4
  DebugLevel,
5
+ DynamicLevel,
5
6
  ErrorLevel,
6
7
  InfoLevel,
7
8
  WarnLevel,
@@ -281,7 +282,7 @@ class CacheDumpGraph(DebugLevel):
281
282
  # Skipping E032, E033, E034
282
283
 
283
284
 
284
- class AdapterRegistered(InfoLevel):
285
+ class AdapterRegistered(DynamicLevel):
285
286
  def code(self) -> str:
286
287
  return "E034"
287
288
 
@@ -421,3 +422,16 @@ class ConstraintNotSupported(WarnLevel):
421
422
  "be ignored. Set 'warn_unsupported: false' on this constraint to ignore this warning."
422
423
  )
423
424
  return line_wrap_message(warning_tag(msg))
425
+
426
+
427
+ class TypeCodeNotFound(DebugLevel):
428
+ def code(self) -> str:
429
+ return "E050"
430
+
431
+ def message(self) -> str:
432
+ msg = (
433
+ f"The `type_code` {self.type_code} was not recognized, which may affect error "
434
+ "messages for enforced contracts that fail as well as `Column.data_type` values "
435
+ "returned by `get_column_schema_from_query`"
436
+ )
437
+ return line_wrap_message(warning_tag(msg))
@@ -7,6 +7,7 @@ import traceback
7
7
  from typing import Any, Dict, List, Optional, Set, Type
8
8
 
9
9
  from dbt_common.events.functions import fire_event
10
+ from dbt_common.events.base_types import EventLevel
10
11
  from dbt_common.exceptions import DbtInternalError, DbtRuntimeError
11
12
  from dbt_common.semver import VersionSpecifier
12
13
 
@@ -96,11 +97,19 @@ class AdapterContainer:
96
97
 
97
98
  return plugin.credentials
98
99
 
99
- def register_adapter(self, config: AdapterRequiredConfig, mp_context: SpawnContext) -> None:
100
+ def register_adapter(
101
+ self,
102
+ config: AdapterRequiredConfig,
103
+ mp_context: SpawnContext,
104
+ adapter_registered_log_level: Optional[EventLevel] = EventLevel.INFO,
105
+ ) -> None:
100
106
  adapter_name = config.credentials.type
101
107
  adapter_type = self.get_adapter_class_by_name(adapter_name)
102
108
  adapter_version = self._adapter_version(adapter_name)
103
- fire_event(AdapterRegistered(adapter_name=adapter_name, adapter_version=adapter_version))
109
+ fire_event(
110
+ AdapterRegistered(adapter_name=adapter_name, adapter_version=adapter_version),
111
+ level=adapter_registered_log_level,
112
+ )
104
113
  with self.lock:
105
114
  if adapter_name in self.adapters:
106
115
  # this shouldn't really happen...
@@ -186,8 +195,12 @@ class AdapterContainer:
186
195
  FACTORY: AdapterContainer = AdapterContainer()
187
196
 
188
197
 
189
- def register_adapter(config: AdapterRequiredConfig, mp_context: SpawnContext) -> None:
190
- FACTORY.register_adapter(config, mp_context)
198
+ def register_adapter(
199
+ config: AdapterRequiredConfig,
200
+ mp_context: SpawnContext,
201
+ adapter_registered_log_level: Optional[EventLevel] = EventLevel.INFO,
202
+ ) -> None:
203
+ FACTORY.register_adapter(config, mp_context, adapter_registered_log_level)
191
204
 
192
205
 
193
206
  def get_adapter(config: AdapterRequiredConfig):
@@ -47,8 +47,7 @@ Self = TypeVar("Self", bound="RelationProtocol")
47
47
 
48
48
  class RelationProtocol(Protocol):
49
49
  @classmethod
50
- def get_default_quote_policy(cls) -> Policy:
51
- ...
50
+ def get_default_quote_policy(cls) -> Policy: ...
52
51
 
53
52
  @classmethod
54
53
  def create_from(
@@ -56,8 +55,7 @@ class RelationProtocol(Protocol):
56
55
  quoting: HasQuoting,
57
56
  relation_config: RelationConfig,
58
57
  **kwargs: Any,
59
- ) -> Self:
60
- ...
58
+ ) -> Self: ...
61
59
 
62
60
 
63
61
  AdapterConfig_T = TypeVar("AdapterConfig_T", bound=AdapterConfig)
@@ -73,8 +71,7 @@ class MacroContextGeneratorCallable(Protocol):
73
71
  config: AdapterRequiredConfig,
74
72
  macro_resolver: MacroResolverProtocol,
75
73
  package_name: Optional[str],
76
- ) -> Dict[str, Any]:
77
- ...
74
+ ) -> Dict[str, Any]: ...
78
75
 
79
76
 
80
77
  # TODO CT-211
@@ -96,81 +93,58 @@ class AdapterProtocol( # type: ignore[misc]
96
93
  ConnectionManager: Type[ConnectionManager_T]
97
94
  connections: ConnectionManager_T
98
95
 
99
- def __init__(self, config: AdapterRequiredConfig) -> None:
100
- ...
96
+ def __init__(self, config: AdapterRequiredConfig) -> None: ...
101
97
 
102
- def set_macro_resolver(self, macro_resolver: MacroResolverProtocol) -> None:
103
- ...
98
+ def set_macro_resolver(self, macro_resolver: MacroResolverProtocol) -> None: ...
104
99
 
105
- def get_macro_resolver(self) -> Optional[MacroResolverProtocol]:
106
- ...
100
+ def get_macro_resolver(self) -> Optional[MacroResolverProtocol]: ...
107
101
 
108
- def clear_macro_resolver(self) -> None:
109
- ...
102
+ def clear_macro_resolver(self) -> None: ...
110
103
 
111
104
  def set_macro_context_generator(
112
105
  self,
113
106
  macro_context_generator: MacroContextGeneratorCallable,
114
- ) -> None:
115
- ...
107
+ ) -> None: ...
116
108
 
117
109
  @classmethod
118
110
  def type(cls) -> str:
119
111
  pass
120
112
 
121
- def set_query_header(self, query_header_context: Dict[str, Any]) -> None:
122
- ...
113
+ def set_query_header(self, query_header_context: Dict[str, Any]) -> None: ...
123
114
 
124
115
  @staticmethod
125
- def get_thread_identifier() -> Hashable:
126
- ...
116
+ def get_thread_identifier() -> Hashable: ...
127
117
 
128
- def get_thread_connection(self) -> Connection:
129
- ...
118
+ def get_thread_connection(self) -> Connection: ...
130
119
 
131
- def set_thread_connection(self, conn: Connection) -> None:
132
- ...
120
+ def set_thread_connection(self, conn: Connection) -> None: ...
133
121
 
134
- def get_if_exists(self) -> Optional[Connection]:
135
- ...
122
+ def get_if_exists(self) -> Optional[Connection]: ...
136
123
 
137
- def clear_thread_connection(self) -> None:
138
- ...
124
+ def clear_thread_connection(self) -> None: ...
139
125
 
140
- def clear_transaction(self) -> None:
141
- ...
126
+ def clear_transaction(self) -> None: ...
142
127
 
143
- def exception_handler(self, sql: str) -> ContextManager:
144
- ...
128
+ def exception_handler(self, sql: str) -> ContextManager: ...
145
129
 
146
- def set_connection_name(self, name: Optional[str] = None) -> Connection:
147
- ...
130
+ def set_connection_name(self, name: Optional[str] = None) -> Connection: ...
148
131
 
149
- def cancel_open(self) -> Optional[List[str]]:
150
- ...
132
+ def cancel_open(self) -> Optional[List[str]]: ...
151
133
 
152
- def open(cls, connection: Connection) -> Connection:
153
- ...
134
+ def open(cls, connection: Connection) -> Connection: ...
154
135
 
155
- def release(self) -> None:
156
- ...
136
+ def release(self) -> None: ...
157
137
 
158
- def cleanup_all(self) -> None:
159
- ...
138
+ def cleanup_all(self) -> None: ...
160
139
 
161
- def begin(self) -> None:
162
- ...
140
+ def begin(self) -> None: ...
163
141
 
164
- def commit(self) -> None:
165
- ...
142
+ def commit(self) -> None: ...
166
143
 
167
- def close(cls, connection: Connection) -> Connection:
168
- ...
144
+ def close(cls, connection: Connection) -> Connection: ...
169
145
 
170
- def commit_if_has_connection(self) -> None:
171
- ...
146
+ def commit_if_has_connection(self) -> None: ...
172
147
 
173
148
  def execute(
174
149
  self, sql: str, auto_begin: bool = False, fetch: bool = False
175
- ) -> Tuple[AdapterResponse, "agate.Table"]:
176
- ...
150
+ ) -> Tuple[AdapterResponse, "agate.Table"]: ...
@@ -1,6 +1,6 @@
1
1
  # RelationConfig
2
2
  This package serves as an initial abstraction for managing the inspection of existing relations and determining
3
- changes on those relations. It arose from the materialized view work and is currently only supporting
3
+ changes on those relations. It arose from the materialized view work and is currently only supporting
4
4
  materialized views for Postgres and Redshift as well as dynamic tables for Snowflake. There are three main
5
5
  classes in this package.
6
6
 
@@ -16,7 +16,9 @@ class RelationConfigChangeAction(StrEnum):
16
16
  @dataclass(frozen=True, eq=True, unsafe_hash=True)
17
17
  class RelationConfigChange(RelationConfigBase, ABC):
18
18
  action: RelationConfigChangeAction
19
- context: Hashable # this is usually a RelationConfig, e.g. IndexConfig, but shouldn't be limited
19
+ context: (
20
+ Hashable # this is usually a RelationConfig, e.g. IndexConfig, but shouldn't be limited
21
+ )
20
22
 
21
23
  @property
22
24
  @abstractmethod
@@ -53,7 +53,7 @@
53
53
  {%- do col_naked_numeric.append(col['name']) -%}
54
54
  {%- endif -%}
55
55
  {% set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] %}
56
- cast(null as {{ col['data_type'] }}) as {{ col_name }}{{ ", " if not loop.last }}
56
+ {{ cast('null', col['data_type']) }} as {{ col_name }}{{ ", " if not loop.last }}
57
57
  {%- endfor -%}
58
58
  {%- if (col_err | length) > 0 -%}
59
59
  {{ exceptions.column_type_missing(column_names=col_err) }}
@@ -41,4 +41,4 @@ dbt_internal_unit_test_expected as (
41
41
  select * from dbt_internal_unit_test_actual
42
42
  union all
43
43
  select * from dbt_internal_unit_test_expected
44
- {%- endmacro %}
44
+ {%- endmacro %}