dbt-adapters 1.14.1__py3-none-any.whl → 1.14.4__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.

@@ -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
 
@@ -22,3 +22,19 @@ class RecordReplayHandle:
22
22
  # actual database access should be performed in that mode.
23
23
  cursor = None if self.native_handle is None else self.native_handle.cursor()
24
24
  return RecordReplayCursor(cursor, self.connection)
25
+
26
+ def commit(self):
27
+ self.native_handle.commit()
28
+
29
+ def rollback(self):
30
+ self.native_handle.rollback()
31
+
32
+ def close(self):
33
+ self.native_handle.close()
34
+
35
+ def get_backend_pid(self):
36
+ return self.native_handle.get_backend_pid()
37
+
38
+ @property
39
+ def closed(self):
40
+ return self.native_handle.closed
@@ -0,0 +1,31 @@
1
+ from datetime import datetime, date
2
+ from decimal import Decimal
3
+ from typing import Any, Dict, TYPE_CHECKING
4
+
5
+ if TYPE_CHECKING:
6
+ from agate import Table
7
+
8
+
9
+ def _column_filter(val: Any) -> Any:
10
+ return (
11
+ float(val)
12
+ if isinstance(val, Decimal)
13
+ else (
14
+ str(val)
15
+ if isinstance(val, datetime)
16
+ else str(val) if isinstance(val, date) else str(val)
17
+ )
18
+ )
19
+
20
+
21
+ def serialize_agate_table(table: "Table") -> Dict[str, Any]:
22
+ rows = []
23
+ for row in table.rows:
24
+ row = list(map(_column_filter, row))
25
+ rows.append(row)
26
+
27
+ return {
28
+ "column_names": table.column_names,
29
+ "column_types": [t.__class__.__name__ for t in table.column_types],
30
+ "rows": rows,
31
+ }
dbt/adapters/sql/impl.py CHANGED
@@ -1,12 +1,14 @@
1
1
  from typing import Any, List, Optional, Tuple, Type, TYPE_CHECKING
2
2
 
3
3
  from dbt_common.events.functions import fire_event
4
+ from dbt_common.record import record_function
4
5
 
5
6
  from dbt.adapters.base import BaseAdapter, BaseRelation, available
6
7
  from dbt.adapters.cache import _make_ref_key_dict
7
8
  from dbt.adapters.contracts.connection import AdapterResponse, Connection
8
9
  from dbt.adapters.events.types import ColTypeChange, SchemaCreation, SchemaDrop
9
10
  from dbt.adapters.exceptions import RelationTypeNullError
11
+ from dbt.adapters.record.base import AdapterTestSqlRecord
10
12
  from dbt.adapters.sql.connections import SQLConnectionManager
11
13
 
12
14
  LIST_RELATIONS_MACRO_NAME = "list_relations_without_caching"
@@ -255,6 +257,10 @@ class SQLAdapter(BaseAdapter):
255
257
  return adapter_response
256
258
 
257
259
  # This is for use in the test suite
260
+ @available
261
+ @record_function(
262
+ AdapterTestSqlRecord, method=True, index_on_thread_id=True, id_field_name="thread_id"
263
+ )
258
264
  def run_sql_for_tests(self, sql, fetch, conn):
259
265
  cursor = conn.handle.cursor()
260
266
  try:
@@ -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 %}
@@ -12,6 +12,17 @@
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
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.1
3
+ Version: 1.14.4
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=26nkdQZKefPNAbIF7Yze47tJRP5s4mUkOm3Lsjdi2Sk,19
1
+ dbt/adapters/__about__.py,sha256=ewFJx2dzMHmZWqpcxKLsBDjAJt_PseLEHqPgXPh6On8,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,25 @@ 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=92zwLFAFe7DJH-raacInT78KIiOM6Mp1h7Ptr9X-sj4,74837
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=keN8E2gBbe6rKbguKYmFuLxCrc1qye-lpOeENt9Jeho,18896
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
+ dbt/adapters/catalogs/_exceptions.py,sha256=tPYk1-4n73GnY-a42wer0CJ9eyV4XEc28LrjvRp_r50,1129
22
+ dbt/adapters/catalogs/_integration.py,sha256=3tV2n4_zMIS9jqaPfA6Lhzn_REHBka7BHdsc7YJwC5c,6434
19
23
  dbt/adapters/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
24
  dbt/adapters/clients/jinja.py,sha256=NsZOiBpOLunS46hRL5OcX1MpY3Ih6_87Vgz4qd_PNbc,768
21
25
  dbt/adapters/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
26
  dbt/adapters/contracts/connection.py,sha256=35mErirojY6Au63wjFgQokk_x7JWHjPUa6hiXjDEs0k,6917
23
27
  dbt/adapters/contracts/macros.py,sha256=NYVDi5ww7v4ksKBwF836TXE-2xU4IBaUINqvxMY-ieU,366
24
- dbt/adapters/contracts/relation.py,sha256=H_IYxRtg9LV8kYAfAiWeQAf-2ByMRN-EkfxHim-7AJE,4731
28
+ dbt/adapters/contracts/relation.py,sha256=OefNzqp7iDqBn4qdE25eexC_QLGrV7m-T3jCZMMp9sc,4758
25
29
  dbt/adapters/events/README.md,sha256=kVUFIsDQrHTUmk9Mmu-yXYkWh4pA5MJK_H6739rQr5I,3521
26
30
  dbt/adapters/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- dbt/adapters/events/adapter_types.proto,sha256=Cjs_XEZFGlKDj_dGbtjSUcAuXm6jRBRMnZEXHCQd5-I,9673
28
- dbt/adapters/events/adapter_types_pb2.py,sha256=CvkiYSbT6WKOKJgzgDBBbWta-LE4TChnNn26I9r2cbw,26808
31
+ dbt/adapters/events/adapter_types.proto,sha256=0vrNE_BYl0DO6UU-AvjSCylmrtQVBdqQoXeYyChzqmI,9704
32
+ dbt/adapters/events/adapter_types_pb2.py,sha256=uEf5Pl6Dp_s9W-ja8clwEQg9iLloLu0EqsbambYVIes,26849
29
33
  dbt/adapters/events/base_types.py,sha256=sTlNRl15GaRIrIDVxalf7sK08dfo3Ol1Ua2jbFO7-7c,966
30
34
  dbt/adapters/events/logging.py,sha256=1nRFswQubgUrVHL5DB9ewBtbEv1-OcIXC7mMmu3NOaM,2350
31
35
  dbt/adapters/events/types.py,sha256=nW7_FgrEmWlM-HWPHrYcJ5K5QLZtfspLizyqlXrJaoE,12189
@@ -36,11 +40,13 @@ dbt/adapters/exceptions/compilation.py,sha256=2QsAX-z_1K4q8jGtvbC1JM6dEh7lyOF7rT
36
40
  dbt/adapters/exceptions/connection.py,sha256=x82j2Ix242Slm6Ima8Tol3GLOB9yZYH5lq6IV1WKq54,445
37
41
  dbt/adapters/exceptions/database.py,sha256=nIXJdQyPQOZaiKvCkQ3MoKlKOiaN58rtDZflw3CSkug,1618
38
42
  dbt/adapters/record/__init__.py,sha256=u_0eJzN5RL90oL-RNoP2wWGMCGp0kG0lZ0uVWnnGdxs,123
39
- dbt/adapters/record/handle.py,sha256=mDsaNHZkUZMaLSg6QHSE11dbTrSLtfg9GRMcw2c2KAI,1011
43
+ dbt/adapters/record/base.py,sha256=oqBeddunk9bAyNZBC2pWQohYtD6_ju_tf_74I6NAN04,4277
44
+ dbt/adapters/record/handle.py,sha256=95yR-tALNXVfOhhfCEOvfwDeHI7PwuT2Wr_knw5PXyw,1352
45
+ dbt/adapters/record/serialization.py,sha256=ehcLioi4J7TujP58fMNGcePuMxx-2G4Dj1KoYm6j6FU,756
40
46
  dbt/adapters/record/cursor/cursor.py,sha256=rhk50XhOAWa4r1POSrb4-TX6MjJ-mwZfDsADxI41NYk,2412
41
47
  dbt/adapters/record/cursor/description.py,sha256=5LNebP2AF2aicPWfM9FsD5r7SAmdac8TX_4NZfJQgPk,1060
42
- dbt/adapters/record/cursor/execute.py,sha256=Y9HUVteOFbDtJJjZPQLny8UgKSs2OgNa19FS7w1bGRE,495
43
- dbt/adapters/record/cursor/fetchall.py,sha256=YeDTh4DU-Iqw9hCoJfqlrgHq2hhhwpIi1Zxx_KU0M6U,2057
48
+ dbt/adapters/record/cursor/execute.py,sha256=f8Yc1MKExj7QLbFnK8WnnwsoGESuYMWnFWhytbcAPjc,1271
49
+ dbt/adapters/record/cursor/fetchall.py,sha256=tcvxHOleST2vrP9Bs_HAbAGutLv9za2vH32HCl8ayc4,2149
44
50
  dbt/adapters/record/cursor/fetchmany.py,sha256=6PTkVa6xZs1g3M4OdqFrnrF9x0vrNJyVNk6rLbhd_Mg,502
45
51
  dbt/adapters/record/cursor/fetchone.py,sha256=IKtzTMQjSeK3g0svtWMXLx_7OGx6HpbPh1zicuOqARA,483
46
52
  dbt/adapters/record/cursor/rowcount.py,sha256=BuiRd_JpQTPN3YaGACfsXe1vmsvO4c49kCpIBZoG6hE,515
@@ -51,7 +57,7 @@ dbt/adapters/relation_configs/config_change.py,sha256=hf6fDWbZpKvZdM6z-OtY-Gveip
51
57
  dbt/adapters/relation_configs/config_validation.py,sha256=wlJUMwOEPhYFch-LRtEWfLNJMq8jL1tRhOUHmNX8nFw,1978
52
58
  dbt/adapters/sql/__init__.py,sha256=WLWZJfqc8pr1N1BMVe9gM-KQ4URJIeKfLqTuJBD1VN0,107
53
59
  dbt/adapters/sql/connections.py,sha256=JEMvgOW167je6J33Xj_Q605cB-9gDNOmCo3zdAnWiI8,8424
54
- dbt/adapters/sql/impl.py,sha256=mZ0yuvH4ee2CQm-Kt-2qt3ANMgIP8nQKdIYD0xTToU8,10703
60
+ dbt/adapters/sql/impl.py,sha256=dhpvlxc3mZWdcP42xMzW8_nM2zJGMMt1_hLUUfXx3Dw,10944
55
61
  dbt/include/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76
56
62
  dbt/include/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
63
  dbt/include/global_project/__init__.py,sha256=-0HL5OkeJSrxglm1Y-UltTiBPY2BbWx8ZpTiJ7ypSvw,73
@@ -88,7 +94,7 @@ dbt/include/global_project/macros/materializations/models/clone/create_or_replac
88
94
  dbt/include/global_project/macros/materializations/models/incremental/column_helpers.sql,sha256=hslQlGKW0oW97srfugsFVRR-L6RrzRcnwr3uLhzI0X4,2577
89
95
  dbt/include/global_project/macros/materializations/models/incremental/incremental.sql,sha256=8gyBXan-saJ9GTSa8d05vMa-RSwyZ7pStOeHJpHU4BI,4374
90
96
  dbt/include/global_project/macros/materializations/models/incremental/is_incremental.sql,sha256=Sm1TqOeqcCQofj3REFcA97yukPB1J_mClDd55r5GewE,478
91
- dbt/include/global_project/macros/materializations/models/incremental/merge.sql,sha256=slUOJSR6FzbQa3S6qbyxg-2OqyhI-SHZoT6a1T90dAk,4796
97
+ dbt/include/global_project/macros/materializations/models/incremental/merge.sql,sha256=hrOgfAE3Aam0srudb0CgHZaAUFBnIXMAndoOncYP3T8,4840
92
98
  dbt/include/global_project/macros/materializations/models/incremental/on_schema_change.sql,sha256=EOgcrYhwOGVPnyaBu7kIfe8LTOYVOu-AhxMtBs8ETpQ,4927
93
99
  dbt/include/global_project/macros/materializations/models/incremental/strategies.sql,sha256=ORGWiYfj-b3_VIps9FDlyx-Q4A2hZzX2aYLocW8b6pU,2613
94
100
  dbt/include/global_project/macros/materializations/seeds/helpers.sql,sha256=Y15ej-D3gm1ExIOMNT208q43gRk8d985WQBuGSooNL0,3920
@@ -101,7 +107,7 @@ dbt/include/global_project/macros/materializations/tests/helpers.sql,sha256=rxUx
101
107
  dbt/include/global_project/macros/materializations/tests/test.sql,sha256=Rz3O_3dWHlIofG3d2CwsP2bXFimRZUIwOevyB0iz1J4,1831
102
108
  dbt/include/global_project/macros/materializations/tests/unit.sql,sha256=KonePuFfwcz5uJ-JW0CrEy8_q-Gl45fonngGmFvQcNU,1252
103
109
  dbt/include/global_project/macros/materializations/tests/where_subquery.sql,sha256=xjuYd18tXo99OReJGQsfgEPYljUUyF00XzK4h0SJjdM,497
104
- dbt/include/global_project/macros/python_model/python.sql,sha256=OKy-IwnklJPXfjXinVwlS9_enmXKQWoibnLOZRNR28U,3466
110
+ dbt/include/global_project/macros/python_model/python.sql,sha256=qWoouNOP4Qdune_2Vitzmrzb0soHRzu0S4K22amVZK8,4056
105
111
  dbt/include/global_project/macros/relations/create.sql,sha256=99LLak1bhlhRw7yiI0c_4CKPlGyzqPBeBYBNeBPSmDo,701
106
112
  dbt/include/global_project/macros/relations/create_backup.sql,sha256=jAWJSw3BUxvYrjgBs3JkRJN_VHXtk05lMWPM4n-toWs,524
107
113
  dbt/include/global_project/macros/relations/create_intermediate.sql,sha256=bgPogZqRykUrdRxo_kvoKLrJ9C2x1c_TvtUZlYwUfmQ,568
@@ -157,7 +163,7 @@ dbt/include/global_project/macros/utils/right.sql,sha256=EwNG98CAFIwNDmarwopf7Rk
157
163
  dbt/include/global_project/macros/utils/safe_cast.sql,sha256=1mswwkDACmIi1I99JKb_-vq3kjMe4HhMRV70mW8Bt4Y,298
158
164
  dbt/include/global_project/macros/utils/split_part.sql,sha256=fXEIS0oIiYR7-4lYbb0QbZdG-q2TpV63AFd1ky4I5UM,714
159
165
  dbt/include/global_project/tests/generic/builtin.sql,sha256=p94xdyPwb2TlxgLBqCfrcRfJ1QNgsjPvBm8f0Q5eqZM,1022
160
- dbt_adapters-1.14.1.dist-info/METADATA,sha256=SG9otq8IHTaawNtOAJwWLi72QMWGWbtRq5hP67q0T18,4494
161
- dbt_adapters-1.14.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
162
- dbt_adapters-1.14.1.dist-info/licenses/LICENSE,sha256=9yjigiJhWcCZvQjdagGKDwrRph58QWc5P2bVSQwXo6s,11344
163
- dbt_adapters-1.14.1.dist-info/RECORD,,
166
+ dbt_adapters-1.14.4.dist-info/METADATA,sha256=ECmusNk2qpmLk7kLzMoI0WAcNT99HFJkcJIx9mZHo8I,4494
167
+ dbt_adapters-1.14.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
168
+ dbt_adapters-1.14.4.dist-info/licenses/LICENSE,sha256=9yjigiJhWcCZvQjdagGKDwrRph58QWc5P2bVSQwXo6s,11344
169
+ dbt_adapters-1.14.4.dist-info/RECORD,,