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.
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/.gitignore +10 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/PKG-INFO +3 -3
- dbt_adapters-1.4.0/dbt/adapters/__about__.py +1 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/column.py +0 -3
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/impl.py +24 -10
- dbt_adapters-1.4.0/dbt/adapters/record/__init__.py +2 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/cursor.py +54 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/description.py +37 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/execute.py +20 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/fetchall.py +66 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/fetchmany.py +23 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/fetchone.py +23 -0
- dbt_adapters-1.4.0/dbt/adapters/record/cursor/rowcount.py +23 -0
- dbt_adapters-1.4.0/dbt/adapters/record/handle.py +24 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/sql/connections.py +0 -3
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/apply_grants.sql +4 -4
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/columns.sql +5 -5
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/relation.sql +1 -1
- dbt_adapters-1.4.0/dbt/include/global_project/macros/adapters/show.sql +26 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/clone/clone.sql +2 -2
- {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
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +6 -3
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/materialized_view.sql +2 -2
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/seeds/helpers.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/seeds/seed.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/helpers.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot_merge.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/drop.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/drop.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/rename.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/drop.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/create.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/drop.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/replace.sql +1 -1
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/unit_test_sql/get_fixture_sql.sql +9 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/pyproject.toml +6 -15
- dbt_adapters-1.3.2/dbt/adapters/__about__.py +0 -1
- dbt_adapters-1.3.2/dbt/adapters/record.py +0 -67
- dbt_adapters-1.3.2/dbt/include/global_project/macros/adapters/show.sql +0 -22
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/LICENSE +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/README.md +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/README.md +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/connections.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/meta.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/plugin.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/query_headers.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/base/relation.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/cache.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/capability.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/clients/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/clients/jinja.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/connection.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/macros.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/contracts/relation.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/README.md +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/adapter_types.proto +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/adapter_types_pb2.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/base_types.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/logging.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/events/types.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/alias.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/cache.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/compilation.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/connection.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/exceptions/database.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/factory.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/protocol.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/py.typed +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/reference_keys.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/README.md +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/config_base.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/config_change.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/relation_configs/config_validation.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/sql/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/sql/impl.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/adapters/utils.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/__init__.py +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/dbt_project.yml +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/docs/overview.md +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/freshness.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/indexes.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/metadata.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/persist_docs.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/schema.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/timestamps.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/validate_sql.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/etc/datetime.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/etc/statement.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/accepted_values.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/not_null.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/relationships.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/generic_test_sql/unique.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/get_custom_name/get_custom_alias.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/get_custom_name/get_custom_database.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/configs.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/hooks.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/merge.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/incremental/strategies.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/table.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/models/view.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/snapshot.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/snapshots/strategies.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/helpers.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/test.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/unit.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/materializations/tests/where_subquery.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/python_model/python.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/column/columns_spec_ddl.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/create.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/create_backup.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/create_intermediate.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/drop_backup.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/alter.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/create.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/refresh.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/rename.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/materialized_view/replace.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/rename_intermediate.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/replace.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/schema.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/create.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/rename.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/table/replace.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/view/rename.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/any_value.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/array_append.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/array_concat.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/array_construct.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/bool_or.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/cast.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/cast_bool_to_text.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/concat.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/data_types.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/date.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/date_spine.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/date_trunc.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/dateadd.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/datediff.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/escape_single_quotes.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/except.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/generate_series.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/hash.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/intersect.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/last_day.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/length.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/listagg.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/literal.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/position.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/replace.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/right.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/safe_cast.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/utils/split_part.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/tests/generic/builtin.sql +0 -0
- {dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dbt-adapters
|
|
3
|
-
Version: 1.
|
|
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 ::
|
|
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.
|
|
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
|
|
1606
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
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
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
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,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. --#}
|
{dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/adapters/columns.sql
RENAMED
|
@@ -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 }}
|
|
@@ -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
|
-
{%
|
|
43
|
-
|
|
44
|
-
|
|
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
|
|
|
@@ -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 %}
|
{dbt_adapters-1.3.2 → dbt_adapters-1.4.0}/dbt/include/global_project/macros/relations/rename.sql
RENAMED
|
@@ -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 %}
|