dbt-adapters 1.14.3__py3-none-any.whl → 1.14.5__py3-none-any.whl
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/__about__.py +1 -1
- dbt/adapters/base/impl.py +11 -3
- dbt/adapters/base/relation.py +1 -1
- dbt/adapters/catalogs/__init__.py +1 -0
- dbt/adapters/catalogs/_client.py +19 -19
- dbt/adapters/catalogs/_integration.py +60 -25
- dbt/adapters/contracts/relation.py +1 -1
- dbt/adapters/record/cursor/execute.py +21 -2
- dbt/adapters/record/cursor/fetchall.py +3 -0
- dbt/include/global_project/macros/materializations/models/incremental/incremental.sql +7 -4
- dbt/include/global_project/macros/materializations/models/incremental/merge.sql +2 -2
- dbt/include/global_project/macros/materializations/models/table.sql +2 -2
- dbt/include/global_project/macros/python_model/python.sql +12 -1
- {dbt_adapters-1.14.3.dist-info → dbt_adapters-1.14.5.dist-info}/METADATA +1 -1
- {dbt_adapters-1.14.3.dist-info → dbt_adapters-1.14.5.dist-info}/RECORD +17 -17
- {dbt_adapters-1.14.3.dist-info → dbt_adapters-1.14.5.dist-info}/WHEEL +0 -0
- {dbt_adapters-1.14.3.dist-info → dbt_adapters-1.14.5.dist-info}/licenses/LICENSE +0 -0
dbt/adapters/__about__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
version = "1.14.
|
|
1
|
+
version = "1.14.5"
|
dbt/adapters/base/impl.py
CHANGED
|
@@ -77,6 +77,7 @@ from dbt.adapters.catalogs import (
|
|
|
77
77
|
CatalogIntegration,
|
|
78
78
|
CatalogIntegrationClient,
|
|
79
79
|
CatalogIntegrationConfig,
|
|
80
|
+
CatalogRelation,
|
|
80
81
|
)
|
|
81
82
|
from dbt.adapters.contracts.connection import Credentials
|
|
82
83
|
from dbt.adapters.contracts.macros import MacroResolverProtocol
|
|
@@ -283,7 +284,7 @@ class BaseAdapter(metaclass=AdapterMeta):
|
|
|
283
284
|
Relation: Type[BaseRelation] = BaseRelation
|
|
284
285
|
Column: Type[BaseColumn] = BaseColumn
|
|
285
286
|
ConnectionManager: Type[BaseConnectionManager]
|
|
286
|
-
CATALOG_INTEGRATIONS:
|
|
287
|
+
CATALOG_INTEGRATIONS: Iterable[Type[CatalogIntegration]] = []
|
|
287
288
|
|
|
288
289
|
# A set of clobber config fields accepted by this adapter
|
|
289
290
|
# for use in materializations
|
|
@@ -312,13 +313,20 @@ class BaseAdapter(metaclass=AdapterMeta):
|
|
|
312
313
|
self.behavior = DEFAULT_BASE_BEHAVIOR_FLAGS # type: ignore
|
|
313
314
|
self._catalog_client = CatalogIntegrationClient(self.CATALOG_INTEGRATIONS)
|
|
314
315
|
|
|
315
|
-
def add_catalog_integration(
|
|
316
|
-
|
|
316
|
+
def add_catalog_integration(
|
|
317
|
+
self, catalog_integration: CatalogIntegrationConfig
|
|
318
|
+
) -> CatalogIntegration:
|
|
319
|
+
return self._catalog_client.add(catalog_integration)
|
|
317
320
|
|
|
318
321
|
@available
|
|
319
322
|
def get_catalog_integration(self, name: str) -> CatalogIntegration:
|
|
320
323
|
return self._catalog_client.get(name)
|
|
321
324
|
|
|
325
|
+
@available
|
|
326
|
+
def build_catalog_relation(self, config: RelationConfig) -> CatalogRelation:
|
|
327
|
+
catalog = self.get_catalog_integration(config.catalog)
|
|
328
|
+
return catalog.build_relation(config)
|
|
329
|
+
|
|
322
330
|
###
|
|
323
331
|
# Methods to set / access a macro resolver
|
|
324
332
|
###
|
dbt/adapters/base/relation.py
CHANGED
|
@@ -60,7 +60,7 @@ class BaseRelation(FakeAPIObject, Hashable):
|
|
|
60
60
|
require_alias: bool = (
|
|
61
61
|
True # used to govern whether to add an alias when render_limited is called
|
|
62
62
|
)
|
|
63
|
-
|
|
63
|
+
catalog: Optional[str] = None
|
|
64
64
|
|
|
65
65
|
# register relation types that can be renamed for the purpose of replacing relations using stages and backups
|
|
66
66
|
# adding a relation type here also requires defining the associated rename macro
|
dbt/adapters/catalogs/_client.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Dict, Type
|
|
1
|
+
from typing import Dict, Iterable, Type
|
|
2
2
|
|
|
3
3
|
from dbt.adapters.catalogs._exceptions import (
|
|
4
4
|
DbtCatalogIntegrationAlreadyExistsError,
|
|
@@ -26,29 +26,29 @@ class CatalogIntegrationClient:
|
|
|
26
26
|
integration names mapped to their instances
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
-
def __init__(self, supported_catalogs:
|
|
30
|
-
self.__supported_catalogs =
|
|
29
|
+
def __init__(self, supported_catalogs: Iterable[Type[CatalogIntegration]]):
|
|
30
|
+
self.__supported_catalogs: Dict[str, Type[CatalogIntegration]] = {
|
|
31
|
+
catalog.catalog_type: catalog for catalog in supported_catalogs
|
|
32
|
+
}
|
|
31
33
|
self.__catalog_integrations: Dict[str, CatalogIntegration] = {}
|
|
32
34
|
|
|
33
|
-
def add(self,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
if catalog_integration.name in self.__catalog_integrations.keys():
|
|
42
|
-
raise DbtCatalogIntegrationAlreadyExistsError(catalog_integration.name)
|
|
43
|
-
|
|
44
|
-
self.__catalog_integrations[catalog_integration.name] = catalog_factory(
|
|
45
|
-
catalog_integration
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
return self.get(catalog_integration.name)
|
|
35
|
+
def add(self, config: CatalogIntegrationConfig) -> CatalogIntegration:
|
|
36
|
+
factory = self.__catalog_integration_factory(config.catalog_type)
|
|
37
|
+
if config.name in self.__catalog_integrations:
|
|
38
|
+
raise DbtCatalogIntegrationAlreadyExistsError(config.name)
|
|
39
|
+
self.__catalog_integrations[config.name] = factory(config)
|
|
40
|
+
return self.get(config.name)
|
|
49
41
|
|
|
50
42
|
def get(self, name: str) -> CatalogIntegration:
|
|
51
43
|
try:
|
|
52
44
|
return self.__catalog_integrations[name]
|
|
53
45
|
except KeyError:
|
|
54
46
|
raise DbtCatalogIntegrationNotFoundError(name, self.__catalog_integrations.keys())
|
|
47
|
+
|
|
48
|
+
def __catalog_integration_factory(self, catalog_type: str) -> Type[CatalogIntegration]:
|
|
49
|
+
try:
|
|
50
|
+
return self.__supported_catalogs[catalog_type]
|
|
51
|
+
except KeyError as e:
|
|
52
|
+
raise DbtCatalogIntegrationNotSupportedError(
|
|
53
|
+
catalog_type, self.__supported_catalogs.keys()
|
|
54
|
+
) from e
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import abc
|
|
2
2
|
from typing import Any, Dict, Optional
|
|
3
3
|
from typing_extensions import Protocol
|
|
4
4
|
|
|
5
|
+
from dbt.adapters.contracts.relation import RelationConfig
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
class CatalogIntegrationConfig(Protocol):
|
|
7
9
|
"""
|
|
@@ -14,62 +16,95 @@ class CatalogIntegrationConfig(Protocol):
|
|
|
14
16
|
ensuring a standardized structure and attributes are in place.
|
|
15
17
|
|
|
16
18
|
Attributes:
|
|
17
|
-
name (str): the name of the catalog integration in the
|
|
18
|
-
-
|
|
19
|
-
- expected to be unique within the adapter, if not the entire data platform
|
|
19
|
+
name (str): the name of the catalog integration in the dbt project, e.g. "my_iceberg_operational_data"
|
|
20
|
+
- a unique name for this catalog integration to be referenced in a model configuration
|
|
20
21
|
catalog_type (str): the type of the catalog integration in the data platform, e.g. "iceberg_rest"
|
|
21
22
|
- this is required for dbt to determine the correct method for parsing user configuration
|
|
22
23
|
- usually a combination of the catalog and the way in which the data platform interacts with it
|
|
24
|
+
catalog_name (Optional[str]): the name of the catalog integration in the data platform, e.g. "my_favorite_iceberg_catalog"
|
|
25
|
+
- this is required for dbt to correctly reference catalogs by name from model configuration
|
|
26
|
+
- expected to be unique within the data platform, but many dbt catalog integrations can share the same catalog name
|
|
23
27
|
table_format (Optional[str]): the table format this catalog uses
|
|
24
28
|
- this is commonly unique to each catalog type, and should only be required from the user for catalogs that support multiple formats
|
|
25
29
|
external_volume (Optional[str]): external storage volume identifier
|
|
26
30
|
- while this is a separate concept from catalogs, we feel it is more user-friendly to group it with the catalog configuration
|
|
31
|
+
- it's possible to use a default external volume at the user, database, or account level, hence this is optional
|
|
27
32
|
- a result of this grouping is that there can only be one external volume per catalog integration, but many catalogs can share the same volume
|
|
33
|
+
- a user should create a new dbt catalog if they want to use a different external volume for a given catalog integration
|
|
28
34
|
adapter_properties (Optional[Dict[str, Any]]):
|
|
29
35
|
- additional, adapter-specific properties are nested here to avoid future collision when expanding the catalog integration protocol
|
|
30
36
|
"""
|
|
31
37
|
|
|
32
38
|
name: str
|
|
33
39
|
catalog_type: str
|
|
40
|
+
catalog_name: Optional[str]
|
|
34
41
|
table_format: Optional[str]
|
|
35
42
|
external_volume: Optional[str]
|
|
36
|
-
adapter_properties:
|
|
43
|
+
adapter_properties: Dict[str, Any]
|
|
37
44
|
|
|
38
45
|
|
|
39
|
-
class
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
class CatalogRelation(Protocol):
|
|
47
|
+
catalog_name: Optional[str]
|
|
48
|
+
table_format: Optional[str]
|
|
49
|
+
external_volume: Optional[str]
|
|
42
50
|
|
|
43
51
|
|
|
44
|
-
class CatalogIntegration:
|
|
52
|
+
class CatalogIntegration(abc.ABC):
|
|
45
53
|
"""
|
|
46
54
|
Represent a catalog integration for a given user config
|
|
47
55
|
|
|
48
|
-
This class should be
|
|
56
|
+
This class should be implemented by specific catalog integration types in an adapter.
|
|
49
57
|
A catalog integration is a specific platform's way of interacting with a specific catalog.
|
|
50
58
|
|
|
51
59
|
Attributes:
|
|
52
|
-
name (str): the name of the catalog integration in the
|
|
53
|
-
-
|
|
54
|
-
- expected to be unique within the adapter, if not the entire data platform
|
|
60
|
+
name (str): the name of the catalog integration in the dbt project, e.g. "my_iceberg_operational_data"
|
|
61
|
+
- a unique name for this catalog integration to be referenced in a model configuration
|
|
55
62
|
catalog_type (str): the type of the catalog integration in the data platform, e.g. "iceberg_rest"
|
|
56
|
-
- this is
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
- this is determined by the catalog integration type, hence it is a class attribute
|
|
63
|
+
- this is a name for this particular implementation of the catalog integration, hence it is a class attribute
|
|
64
|
+
catalog_name (Optional[str]): the name of the catalog integration in the data platform, e.g. "my_favorite_iceberg_catalog"
|
|
65
|
+
- this is required for dbt to correctly reference catalogs by name from model configuration
|
|
66
|
+
- expected to be unique within the data platform, but many dbt catalog integrations can share the same catalog name
|
|
61
67
|
table_format (Optional[str]): the table format this catalog uses
|
|
62
|
-
- this is commonly
|
|
63
|
-
- it should only be required from the user for catalogs that support multiple formats
|
|
68
|
+
- this is commonly unique to each catalog type, and should only be required from the user for catalogs that support multiple formats
|
|
64
69
|
external_volume (Optional[str]): external storage volume identifier
|
|
65
70
|
- while this is a separate concept from catalogs, we feel it is more user-friendly to group it with the catalog configuration
|
|
71
|
+
- it's possible to use a default external volume at the user, database, or account level, hence this is optional
|
|
66
72
|
- a result of this grouping is that there can only be one external volume per catalog integration, but many catalogs can share the same volume
|
|
73
|
+
- a user should create a new dbt catalog if they want to use a different external volume for a given catalog integration
|
|
74
|
+
allows_writes (bool): identifies whether this catalog integration supports writes
|
|
75
|
+
- this is required for dbt to correctly identify whether a catalog is writable during parse time
|
|
76
|
+
- this is determined by the catalog integration type, hence it is a class attribute
|
|
67
77
|
"""
|
|
68
78
|
|
|
69
|
-
|
|
79
|
+
catalog_type: str
|
|
80
|
+
table_format: Optional[str] = None
|
|
81
|
+
allows_writes: bool = False
|
|
82
|
+
|
|
83
|
+
def __init__(self, config: CatalogIntegrationConfig) -> None:
|
|
84
|
+
# table_format is often fixed for a catalog type, allow it to be defined at the class level
|
|
85
|
+
if config.table_format is not None:
|
|
86
|
+
self.table_format = config.table_format
|
|
70
87
|
|
|
71
|
-
def __init__(self, config: CatalogIntegrationConfig):
|
|
72
88
|
self.name: str = config.name
|
|
73
|
-
self.
|
|
74
|
-
self.
|
|
75
|
-
|
|
89
|
+
self.catalog_name: Optional[str] = config.catalog_name
|
|
90
|
+
self.external_volume: Optional[str] = config.external_volume
|
|
91
|
+
|
|
92
|
+
def build_relation(self, config: RelationConfig) -> CatalogRelation:
|
|
93
|
+
"""
|
|
94
|
+
Builds relation configuration within the context of this catalog integration.
|
|
95
|
+
|
|
96
|
+
This method is a placeholder and must be implemented in subclasses to provide
|
|
97
|
+
custom logic for building a relation.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
config: User-provided model configuration.
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
A `CatalogRelation` object constructed based on the input configuration.
|
|
104
|
+
|
|
105
|
+
Raises:
|
|
106
|
+
NotImplementedError: Raised when this method is not implemented in a subclass.
|
|
107
|
+
"""
|
|
108
|
+
raise NotImplementedError(
|
|
109
|
+
f"`{self.__class__.__name__}.build_relation` must be implemented to use this feature"
|
|
110
|
+
)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import dataclasses
|
|
2
|
-
from typing import Any, Iterable, Union, Mapping
|
|
2
|
+
from typing import Any, Iterable, Union, Mapping, Optional
|
|
3
3
|
|
|
4
|
+
from dbt.adapters.record.cursor.fetchall import CursorFetchAllResult
|
|
4
5
|
from dbt_common.record import Record, Recorder
|
|
5
6
|
|
|
6
7
|
|
|
@@ -8,7 +9,25 @@ from dbt_common.record import Record, Recorder
|
|
|
8
9
|
class CursorExecuteParams:
|
|
9
10
|
connection_name: str
|
|
10
11
|
operation: str
|
|
11
|
-
parameters: Union[Iterable[Any], Mapping[str, Any]]
|
|
12
|
+
parameters: Optional[Union[Iterable[Any], Mapping[str, Any]]] = None
|
|
13
|
+
|
|
14
|
+
def _to_dict(self):
|
|
15
|
+
p = self.parameters
|
|
16
|
+
if isinstance(self.parameters, dict):
|
|
17
|
+
p = {(k, CursorFetchAllResult._process_value(v)) for k, v in self.parameters.items()}
|
|
18
|
+
elif isinstance(self.parameters, list) or isinstance(self.parameters, tuple):
|
|
19
|
+
p = [CursorFetchAllResult._process_value(v) for v in self.parameters]
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
"connection_name": self.connection_name,
|
|
23
|
+
"operation": self.operation,
|
|
24
|
+
"parameters": p,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
def _from_dict(cls, data):
|
|
28
|
+
# NOTE: This will be needed for replay, but is not needed at time
|
|
29
|
+
# of writing.
|
|
30
|
+
raise NotImplementedError()
|
|
12
31
|
|
|
13
32
|
|
|
14
33
|
@Recorder.register_record_type
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import dataclasses
|
|
2
2
|
import datetime
|
|
3
|
+
import decimal
|
|
3
4
|
from typing import Any, Dict, List, Mapping
|
|
4
5
|
|
|
5
6
|
from dbt_common.record import Record, Recorder
|
|
@@ -37,6 +38,8 @@ class CursorFetchAllResult:
|
|
|
37
38
|
return {"type": "date", "value": value.isoformat()}
|
|
38
39
|
elif type(value) is datetime.datetime:
|
|
39
40
|
return {"type": "datetime", "value": value.isoformat()}
|
|
41
|
+
elif type(value) is decimal.Decimal:
|
|
42
|
+
return float(value)
|
|
40
43
|
else:
|
|
41
44
|
return value
|
|
42
45
|
|
|
@@ -37,11 +37,14 @@
|
|
|
37
37
|
|
|
38
38
|
{% if existing_relation is none %}
|
|
39
39
|
{% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}
|
|
40
|
+
{% set relation_for_indexes = target_relation %}
|
|
40
41
|
{% elif full_refresh_mode %}
|
|
41
42
|
{% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}
|
|
43
|
+
{% set relation_for_indexes = intermediate_relation %}
|
|
42
44
|
{% set need_swap = true %}
|
|
43
45
|
{% else %}
|
|
44
46
|
{% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}
|
|
47
|
+
{% set relation_for_indexes = temp_relation %}
|
|
45
48
|
{% set contract_config = config.get('contract') %}
|
|
46
49
|
{% if not contract_config or not contract_config.enforced %}
|
|
47
50
|
{% do adapter.expand_target_column_types(
|
|
@@ -65,6 +68,10 @@
|
|
|
65
68
|
{{ build_sql }}
|
|
66
69
|
{% endcall %}
|
|
67
70
|
|
|
71
|
+
{% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}
|
|
72
|
+
{% do create_indexes(relation_for_indexes) %}
|
|
73
|
+
{% endif %}
|
|
74
|
+
|
|
68
75
|
{% if need_swap %}
|
|
69
76
|
{% do adapter.rename_relation(target_relation, backup_relation) %}
|
|
70
77
|
{% do adapter.rename_relation(intermediate_relation, target_relation) %}
|
|
@@ -76,10 +83,6 @@
|
|
|
76
83
|
|
|
77
84
|
{% do persist_docs(target_relation, model) %}
|
|
78
85
|
|
|
79
|
-
{% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}
|
|
80
|
-
{% do create_indexes(target_relation) %}
|
|
81
|
-
{% endif %}
|
|
82
|
-
|
|
83
86
|
{{ run_hooks(post_hooks, inside_transaction=True) }}
|
|
84
87
|
|
|
85
88
|
-- `COMMIT` happens here
|
|
@@ -67,10 +67,10 @@
|
|
|
67
67
|
|
|
68
68
|
{%- set unique_key_str = unique_key|join(', ') -%}
|
|
69
69
|
|
|
70
|
-
delete from {{ target }}
|
|
70
|
+
delete from {{ target }} as DBT_INTERNAL_DEST
|
|
71
71
|
where ({{ unique_key_str }}) in (
|
|
72
72
|
select distinct {{ unique_key_str }}
|
|
73
|
-
from {{ source }}
|
|
73
|
+
from {{ source }} as DBT_INTERNAL_SOURCE
|
|
74
74
|
)
|
|
75
75
|
{%- if incremental_predicates %}
|
|
76
76
|
{% for predicate in incremental_predicates %}
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
{{ get_create_table_as_sql(False, intermediate_relation, sql) }}
|
|
32
32
|
{%- endcall %}
|
|
33
33
|
|
|
34
|
+
{% do create_indexes(intermediate_relation) %}
|
|
35
|
+
|
|
34
36
|
-- cleanup
|
|
35
37
|
{% if existing_relation is not none %}
|
|
36
38
|
/* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped
|
|
@@ -43,8 +45,6 @@
|
|
|
43
45
|
|
|
44
46
|
{{ adapter.rename_relation(intermediate_relation, target_relation) }}
|
|
45
47
|
|
|
46
|
-
{% do create_indexes(target_relation) %}
|
|
47
|
-
|
|
48
48
|
{{ run_hooks(post_hooks, inside_transaction=True) }}
|
|
49
49
|
|
|
50
50
|
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}
|
|
@@ -11,7 +11,18 @@
|
|
|
11
11
|
{%- set ref_dict = {} -%}
|
|
12
12
|
{%- for _ref in model.refs -%}
|
|
13
13
|
{% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}
|
|
14
|
-
{%- set resolved = ref(*_ref_args, v=_ref.get('version'))
|
|
14
|
+
{%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}
|
|
15
|
+
|
|
16
|
+
{#
|
|
17
|
+
We want to get the string of the returned relation by calling .render() in order to skip sample/empty
|
|
18
|
+
mode rendering logic. However, people override the default ref macro, and often return a string instead
|
|
19
|
+
of a relation (like the ref macro does by default). Thus, to make sure we dont blow things up, we have
|
|
20
|
+
to ensure the resolved relation has a .render() method.
|
|
21
|
+
#}
|
|
22
|
+
{%- if resolved.render is defined and resolved.render is callable -%}
|
|
23
|
+
{%- set resolved = resolved.render() -%}
|
|
24
|
+
{%- endif -%}
|
|
25
|
+
|
|
15
26
|
{%- if _ref.get('version') -%}
|
|
16
27
|
{% do _ref_args.extend(["v" ~ _ref['version']]) %}
|
|
17
28
|
{%- endif -%}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dbt-adapters
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.5
|
|
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/tree/main/dbt-adapters
|
|
6
6
|
Project-URL: Documentation, https://docs.getdbt.com
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
dbt/adapters/__about__.py,sha256=
|
|
1
|
+
dbt/adapters/__about__.py,sha256=AIt5aH02ti9F82WLsPO70LkVXsCcTpEBTRATsLBO1Mw,19
|
|
2
2
|
dbt/adapters/__init__.py,sha256=3noHsg-64qI0_Pw6OR9F7l1vU2_qrJvinq8POTtuaZM,252
|
|
3
3
|
dbt/adapters/cache.py,sha256=WGy4ewnz-J13LverTACBW2iFhGswrWLgm-wiBrQnMzo,20084
|
|
4
4
|
dbt/adapters/capability.py,sha256=M3FkC9veKnNB7a7uQyl7EHX_AGNXPChbHAkcY4cgXCY,2534
|
|
@@ -11,21 +11,21 @@ dbt/adapters/base/README.md,sha256=muHQntC07Lh6L1XfVgwKhV5RltOPBLYPdQqd8_7l34c,5
|
|
|
11
11
|
dbt/adapters/base/__init__.py,sha256=Nc8lQVkOzAqdcxk4cw4E_raxN9CAWMwhQx4STdiicxg,456
|
|
12
12
|
dbt/adapters/base/column.py,sha256=Uj20UixoxCn2rlv4QDNONyys6CDkDFyG3anCXKf0T2c,5350
|
|
13
13
|
dbt/adapters/base/connections.py,sha256=-C5dOwGgMKH8n_v6wjwOxV7chBdS0GjOGwNQCUbhhWc,16951
|
|
14
|
-
dbt/adapters/base/impl.py,sha256=
|
|
14
|
+
dbt/adapters/base/impl.py,sha256=lXDMcU0FJgNgsJUyFjqLqFzdV1IYBUtSOI7p28Wd5jM,78214
|
|
15
15
|
dbt/adapters/base/meta.py,sha256=c5j0qeGec1cAi-IlVV_JkhMk01p5XqbtGj02uxGP1S4,5686
|
|
16
16
|
dbt/adapters/base/plugin.py,sha256=rm0GjNHnWM2mn0GJOjciZLwn-02xlzWCoMT9u-epwP0,1076
|
|
17
17
|
dbt/adapters/base/query_headers.py,sha256=UluGd9IYCYkoMiDi5Yx_lnrCOSjWppjwRro4SIGgx8I,3496
|
|
18
|
-
dbt/adapters/base/relation.py,sha256=
|
|
19
|
-
dbt/adapters/catalogs/__init__.py,sha256=
|
|
20
|
-
dbt/adapters/catalogs/_client.py,sha256=
|
|
18
|
+
dbt/adapters/base/relation.py,sha256=tWVxqbJhU582UZbEtkj0jDTq0izm9l28AqA2CoK5KHc,19180
|
|
19
|
+
dbt/adapters/catalogs/__init__.py,sha256=Pm0EseleLEZRK3ML1FlID1aoVKeqOPqZvJ_TYYnURfY,372
|
|
20
|
+
dbt/adapters/catalogs/_client.py,sha256=XEKjpEg-C0OeQD_TzKKkmW5H_KyYyp2UAeiVBFnf_Ok,2236
|
|
21
21
|
dbt/adapters/catalogs/_exceptions.py,sha256=tPYk1-4n73GnY-a42wer0CJ9eyV4XEc28LrjvRp_r50,1129
|
|
22
|
-
dbt/adapters/catalogs/_integration.py,sha256=
|
|
22
|
+
dbt/adapters/catalogs/_integration.py,sha256=3tV2n4_zMIS9jqaPfA6Lhzn_REHBka7BHdsc7YJwC5c,6434
|
|
23
23
|
dbt/adapters/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
dbt/adapters/clients/jinja.py,sha256=NsZOiBpOLunS46hRL5OcX1MpY3Ih6_87Vgz4qd_PNbc,768
|
|
25
25
|
dbt/adapters/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
dbt/adapters/contracts/connection.py,sha256=35mErirojY6Au63wjFgQokk_x7JWHjPUa6hiXjDEs0k,6917
|
|
27
27
|
dbt/adapters/contracts/macros.py,sha256=NYVDi5ww7v4ksKBwF836TXE-2xU4IBaUINqvxMY-ieU,366
|
|
28
|
-
dbt/adapters/contracts/relation.py,sha256=
|
|
28
|
+
dbt/adapters/contracts/relation.py,sha256=OefNzqp7iDqBn4qdE25eexC_QLGrV7m-T3jCZMMp9sc,4758
|
|
29
29
|
dbt/adapters/events/README.md,sha256=kVUFIsDQrHTUmk9Mmu-yXYkWh4pA5MJK_H6739rQr5I,3521
|
|
30
30
|
dbt/adapters/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
31
|
dbt/adapters/events/adapter_types.proto,sha256=0vrNE_BYl0DO6UU-AvjSCylmrtQVBdqQoXeYyChzqmI,9704
|
|
@@ -45,8 +45,8 @@ dbt/adapters/record/handle.py,sha256=95yR-tALNXVfOhhfCEOvfwDeHI7PwuT2Wr_knw5PXyw
|
|
|
45
45
|
dbt/adapters/record/serialization.py,sha256=ehcLioi4J7TujP58fMNGcePuMxx-2G4Dj1KoYm6j6FU,756
|
|
46
46
|
dbt/adapters/record/cursor/cursor.py,sha256=rhk50XhOAWa4r1POSrb4-TX6MjJ-mwZfDsADxI41NYk,2412
|
|
47
47
|
dbt/adapters/record/cursor/description.py,sha256=5LNebP2AF2aicPWfM9FsD5r7SAmdac8TX_4NZfJQgPk,1060
|
|
48
|
-
dbt/adapters/record/cursor/execute.py,sha256=
|
|
49
|
-
dbt/adapters/record/cursor/fetchall.py,sha256=
|
|
48
|
+
dbt/adapters/record/cursor/execute.py,sha256=f8Yc1MKExj7QLbFnK8WnnwsoGESuYMWnFWhytbcAPjc,1271
|
|
49
|
+
dbt/adapters/record/cursor/fetchall.py,sha256=tcvxHOleST2vrP9Bs_HAbAGutLv9za2vH32HCl8ayc4,2149
|
|
50
50
|
dbt/adapters/record/cursor/fetchmany.py,sha256=6PTkVa6xZs1g3M4OdqFrnrF9x0vrNJyVNk6rLbhd_Mg,502
|
|
51
51
|
dbt/adapters/record/cursor/fetchone.py,sha256=IKtzTMQjSeK3g0svtWMXLx_7OGx6HpbPh1zicuOqARA,483
|
|
52
52
|
dbt/adapters/record/cursor/rowcount.py,sha256=BuiRd_JpQTPN3YaGACfsXe1vmsvO4c49kCpIBZoG6hE,515
|
|
@@ -86,15 +86,15 @@ dbt/include/global_project/macros/get_custom_name/get_custom_schema.sql,sha256=2
|
|
|
86
86
|
dbt/include/global_project/macros/materializations/configs.sql,sha256=aciTDXFQoiAU4y8nsreTQnSca18P2tjURx-LQIrzyuc,627
|
|
87
87
|
dbt/include/global_project/macros/materializations/hooks.sql,sha256=IIOLRanrLtpYcWxWPaPJ7JMoyJdQJicEDni4yoE9mJI,994
|
|
88
88
|
dbt/include/global_project/macros/materializations/models/materialized_view.sql,sha256=-u0cGQrHEMBt8coXfKKPpUQJS97TX3QRafV873fqeCA,5029
|
|
89
|
-
dbt/include/global_project/macros/materializations/models/table.sql,sha256=
|
|
89
|
+
dbt/include/global_project/macros/materializations/models/table.sql,sha256=F9ogmZofhPdzKwhhFJ_GfI5QRXQxLjTl6xTiCgulQ9g,2682
|
|
90
90
|
dbt/include/global_project/macros/materializations/models/view.sql,sha256=LPqM3aTsWiAalFz322aTpqKqCdl4hxN8ubcwXZIIDDw,3249
|
|
91
91
|
dbt/include/global_project/macros/materializations/models/clone/can_clone_table.sql,sha256=YVq2f574IxMDuEv5rbaTvUpLLqc-jQfyOgBQJQGWcmk,187
|
|
92
92
|
dbt/include/global_project/macros/materializations/models/clone/clone.sql,sha256=X85U0zwq_OINxeZ7JDer9i3BgQZvgGM-tKTvITrQx5s,2716
|
|
93
93
|
dbt/include/global_project/macros/materializations/models/clone/create_or_replace_clone.sql,sha256=qr33DwFOpRG0wGVsGvr63-MexYMNZC9xKdGOPmICp_c,367
|
|
94
94
|
dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql,sha256=hslQlGKW0oW97srfugsFVRR-L6RrzRcnwr3uLhzI0X4,2577
|
|
95
|
-
dbt/include/global_project/macros/materializations/models/incremental/incremental.sql,sha256=
|
|
95
|
+
dbt/include/global_project/macros/materializations/models/incremental/incremental.sql,sha256=yOG-Rsv_j6JhGIHdfFk77_DoILFgFqsLN27R5LdCnZM,4546
|
|
96
96
|
dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql,sha256=Sm1TqOeqcCQofj3REFcA97yukPB1J_mClDd55r5GewE,478
|
|
97
|
-
dbt/include/global_project/macros/materializations/models/incremental/merge.sql,sha256=
|
|
97
|
+
dbt/include/global_project/macros/materializations/models/incremental/merge.sql,sha256=hrOgfAE3Aam0srudb0CgHZaAUFBnIXMAndoOncYP3T8,4840
|
|
98
98
|
dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql,sha256=EOgcrYhwOGVPnyaBu7kIfe8LTOYVOu-AhxMtBs8ETpQ,4927
|
|
99
99
|
dbt/include/global_project/macros/materializations/models/incremental/strategies.sql,sha256=ORGWiYfj-b3_VIps9FDlyx-Q4A2hZzX2aYLocW8b6pU,2613
|
|
100
100
|
dbt/include/global_project/macros/materializations/seeds/helpers.sql,sha256=Y15ej-D3gm1ExIOMNT208q43gRk8d985WQBuGSooNL0,3920
|
|
@@ -107,7 +107,7 @@ dbt/include/global_project/macros/materializations/tests/helpers.sql,sha256=rxUx
|
|
|
107
107
|
dbt/include/global_project/macros/materializations/tests/test.sql,sha256=Rz3O_3dWHlIofG3d2CwsP2bXFimRZUIwOevyB0iz1J4,1831
|
|
108
108
|
dbt/include/global_project/macros/materializations/tests/unit.sql,sha256=KonePuFfwcz5uJ-JW0CrEy8_q-Gl45fonngGmFvQcNU,1252
|
|
109
109
|
dbt/include/global_project/macros/materializations/tests/where_subquery.sql,sha256=xjuYd18tXo99OReJGQsfgEPYljUUyF00XzK4h0SJjdM,497
|
|
110
|
-
dbt/include/global_project/macros/python_model/python.sql,sha256=
|
|
110
|
+
dbt/include/global_project/macros/python_model/python.sql,sha256=qWoouNOP4Qdune_2Vitzmrzb0soHRzu0S4K22amVZK8,4056
|
|
111
111
|
dbt/include/global_project/macros/relations/create.sql,sha256=99LLak1bhlhRw7yiI0c_4CKPlGyzqPBeBYBNeBPSmDo,701
|
|
112
112
|
dbt/include/global_project/macros/relations/create_backup.sql,sha256=jAWJSw3BUxvYrjgBs3JkRJN_VHXtk05lMWPM4n-toWs,524
|
|
113
113
|
dbt/include/global_project/macros/relations/create_intermediate.sql,sha256=bgPogZqRykUrdRxo_kvoKLrJ9C2x1c_TvtUZlYwUfmQ,568
|
|
@@ -163,7 +163,7 @@ dbt/include/global_project/macros/utils/right.sql,sha256=EwNG98CAFIwNDmarwopf7Rk
|
|
|
163
163
|
dbt/include/global_project/macros/utils/safe_cast.sql,sha256=1mswwkDACmIi1I99JKb_-vq3kjMe4HhMRV70mW8Bt4Y,298
|
|
164
164
|
dbt/include/global_project/macros/utils/split_part.sql,sha256=fXEIS0oIiYR7-4lYbb0QbZdG-q2TpV63AFd1ky4I5UM,714
|
|
165
165
|
dbt/include/global_project/tests/generic/builtin.sql,sha256=p94xdyPwb2TlxgLBqCfrcRfJ1QNgsjPvBm8f0Q5eqZM,1022
|
|
166
|
-
dbt_adapters-1.14.
|
|
167
|
-
dbt_adapters-1.14.
|
|
168
|
-
dbt_adapters-1.14.
|
|
169
|
-
dbt_adapters-1.14.
|
|
166
|
+
dbt_adapters-1.14.5.dist-info/METADATA,sha256=le7gPuDjXmyWFD2JzXb9OXq4hFHD6i4VdI-UUbN4WKk,4494
|
|
167
|
+
dbt_adapters-1.14.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
168
|
+
dbt_adapters-1.14.5.dist-info/licenses/LICENSE,sha256=9yjigiJhWcCZvQjdagGKDwrRph58QWc5P2bVSQwXo6s,11344
|
|
169
|
+
dbt_adapters-1.14.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|