dbt-firebolt 1.6.4__py3-none-any.whl → 1.8.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. dbt/adapters/firebolt/__init__.py +1 -1
  2. dbt/adapters/firebolt/connections.py +15 -13
  3. dbt/adapters/firebolt/impl.py +24 -6
  4. dbt/adapters/firebolt/relation.py +21 -3
  5. dbt/adapters/firebolt/relation_configs/__init__.py +0 -0
  6. dbt/include/firebolt/macros/adapters.sql +0 -84
  7. dbt/include/firebolt/macros/catalog.sql +89 -9
  8. dbt/include/firebolt/macros/materializations/materialized_view.sql +0 -45
  9. dbt/include/firebolt/macros/relations/materialized_view/alter.sql +11 -0
  10. dbt/include/firebolt/macros/relations/materialized_view/create.sql +3 -0
  11. dbt/include/firebolt/macros/relations/materialized_view/describe.sql +3 -0
  12. dbt/include/firebolt/macros/relations/materialized_view/drop.sql +3 -0
  13. dbt/include/firebolt/macros/relations/materialized_view/refresh.sql +3 -0
  14. dbt/include/firebolt/macros/relations/table/create.sql +74 -0
  15. dbt/include/firebolt/macros/relations/table/drop.sql +3 -0
  16. dbt/include/firebolt/macros/relations/table/rename.sql +6 -0
  17. dbt/include/firebolt/macros/relations/table/replace.sql +3 -0
  18. dbt/include/firebolt/macros/relations/view/create.sql +16 -0
  19. dbt/include/firebolt/macros/relations/view/drop.sql +3 -0
  20. dbt/include/firebolt/macros/relations/view/rename.sql +6 -0
  21. dbt/include/firebolt/macros/relations/view/replace.sql +3 -0
  22. {dbt_firebolt-1.6.4.dist-info → dbt_firebolt-1.8.0.dist-info}/METADATA +4 -3
  23. {dbt_firebolt-1.6.4.dist-info → dbt_firebolt-1.8.0.dist-info}/RECORD +26 -12
  24. {dbt_firebolt-1.6.4.dist-info → dbt_firebolt-1.8.0.dist-info}/LICENSE +0 -0
  25. {dbt_firebolt-1.6.4.dist-info → dbt_firebolt-1.8.0.dist-info}/WHEEL +0 -0
  26. {dbt_firebolt-1.6.4.dist-info → dbt_firebolt-1.8.0.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ from dbt.adapters.firebolt.connections import (
7
7
  from dbt.adapters.firebolt.impl import FireboltAdapter
8
8
  from dbt.include import firebolt
9
9
 
10
- __version__ = "1.6.4"
10
+ __version__ = "1.8.0"
11
11
 
12
12
  Plugin = AdapterPlugin(
13
13
  adapter=FireboltAdapter, # type: ignore
@@ -1,19 +1,23 @@
1
1
  from contextlib import contextmanager
2
2
  from dataclasses import dataclass
3
3
  from datetime import datetime
4
+ from multiprocessing.context import SpawnContext
4
5
  from typing import Generator, Optional, Tuple, Union
5
6
 
6
- import dbt.exceptions
7
- from dbt.adapters.base import Credentials
8
- from dbt.adapters.sql import SQLConnectionManager
9
- from dbt.contracts.connection import (
7
+ from dbt.adapters.contracts.connection import (
10
8
  AdapterRequiredConfig,
11
9
  AdapterResponse,
12
10
  Connection,
11
+ Credentials,
13
12
  QueryComment,
14
13
  )
15
- from dbt.events import AdapterLogger # type: ignore
16
- from dbt.exceptions import DbtRuntimeError
14
+ from dbt.adapters.events.logging import AdapterLogger
15
+ from dbt.adapters.sql.connections import SQLConnectionManager
16
+ from dbt_common.exceptions import (
17
+ DbtConfigError,
18
+ DbtRuntimeError,
19
+ NotImplementedError,
20
+ )
17
21
  from firebolt.client import DEFAULT_API_URL
18
22
  from firebolt.client.auth import Auth, ClientCredentials, UsernamePassword
19
23
  from firebolt.db import ARRAY, DECIMAL
@@ -45,13 +49,13 @@ class FireboltCredentials(Credentials):
45
49
  # are provided instead
46
50
  if not self.user and not self.password:
47
51
  if not self.client_id or not self.client_secret:
48
- raise dbt.exceptions.DbtProfileError(
52
+ raise DbtConfigError(
49
53
  'Either user and password or client_id and client_secret'
50
54
  ' must be provided'
51
55
  )
52
56
  else:
53
57
  if self.client_id or self.client_secret:
54
- raise dbt.exceptions.DbtProfileError(
58
+ raise DbtConfigError(
55
59
  'Either user and password or client_id and client_secret'
56
60
  ' must be provided'
57
61
  )
@@ -99,13 +103,13 @@ class FireboltConnectionManager(SQLConnectionManager):
99
103
 
100
104
  TYPE = 'firebolt'
101
105
 
102
- def __init__(self, profile: AdapterRequiredConfig):
106
+ def __init__(self, profile: AdapterRequiredConfig, mp_context: SpawnContext):
103
107
  # Query comment in appent mode only
104
108
  # This allows clearer view of queries in query_history
105
109
  if not hasattr(profile, 'query_comment'):
106
110
  setattr(profile, 'query_comment', QueryComment())
107
111
  profile.query_comment.append = True
108
- super().__init__(profile)
112
+ super().__init__(profile, mp_context)
109
113
 
110
114
  def __str__(self) -> str:
111
115
  return 'FireboltConnectionManager()'
@@ -181,9 +185,7 @@ class FireboltConnectionManager(SQLConnectionManager):
181
185
 
182
186
  def cancel(self, connection: Connection) -> None:
183
187
  """Cancel the last query on the given connection."""
184
- raise dbt.exceptions.NotImplementedError(
185
- '`cancel` is not implemented for this adapter!'
186
- )
188
+ raise NotImplementedError('`cancel` is not implemented for this adapter!')
187
189
 
188
190
  @classmethod
189
191
  def data_type_code_to_name( # type: ignore[override] # FIR-29423
@@ -5,13 +5,20 @@ from datetime import datetime
5
5
  from typing import Any, List, Mapping, Optional, Union
6
6
 
7
7
  import agate
8
- from dbt.adapters.base import available
9
- from dbt.adapters.base.impl import AdapterConfig, ConstraintSupport
8
+ from dbt.adapters.base.impl import ConstraintSupport
9
+ from dbt.adapters.base.meta import available
10
10
  from dbt.adapters.base.relation import BaseRelation
11
- from dbt.adapters.sql import SQLAdapter
12
- from dbt.contracts.graph.nodes import ConstraintType
13
- from dbt.dataclass_schema import ValidationError, dbtClassMixin
14
- from dbt.exceptions import (
11
+ from dbt.adapters.capability import (
12
+ Capability,
13
+ CapabilityDict,
14
+ CapabilitySupport,
15
+ Support,
16
+ )
17
+ from dbt.adapters.protocol import AdapterConfig
18
+ from dbt.adapters.sql.impl import SQLAdapter
19
+ from dbt_common.contracts.constraints import ConstraintType
20
+ from dbt_common.dataclass_schema import ValidationError, dbtClassMixin
21
+ from dbt_common.exceptions import (
15
22
  CompilationError,
16
23
  DbtRuntimeError,
17
24
  NotImplementedError,
@@ -114,6 +121,17 @@ class FireboltAdapter(SQLAdapter):
114
121
  ConstraintType.foreign_key: ConstraintSupport.NOT_SUPPORTED,
115
122
  }
116
123
 
124
+ _capabilities: CapabilityDict = CapabilityDict(
125
+ {
126
+ Capability.SchemaMetadataByRelations: CapabilitySupport(
127
+ support=Support.Full
128
+ ),
129
+ Capability.TableLastModifiedMetadata: CapabilitySupport(
130
+ support=Support.Unsupported
131
+ ),
132
+ }
133
+ )
134
+
117
135
  @classmethod
118
136
  def is_cancelable(cls) -> bool:
119
137
  return False
@@ -1,8 +1,10 @@
1
1
  from dataclasses import dataclass, field
2
- from typing import Optional
2
+ from typing import Dict, FrozenSet, Optional
3
3
 
4
- from dbt.adapters.base.relation import BaseRelation, Policy
5
- from dbt.exceptions import DbtRuntimeError
4
+ from dbt.adapters.base.relation import BaseRelation
5
+ from dbt.adapters.contracts.relation import Policy, RelationType
6
+ from dbt.adapters.relation_configs.config_base import RelationConfigBase
7
+ from dbt_common.exceptions import DbtRuntimeError
6
8
 
7
9
 
8
10
  @dataclass
@@ -30,6 +32,22 @@ class FireboltRelation(BaseRelation):
30
32
  quote_character: str = '"'
31
33
  is_delta: Optional[bool] = None
32
34
  information: Optional[str] = None
35
+ relation_configs: Dict[RelationType, RelationConfigBase] = field(
36
+ default_factory=lambda: {}
37
+ )
38
+ # list relations that can be renamed (e.g. `RENAME my_relation TO my_new_name;`)
39
+ renameable_relations: FrozenSet[RelationType] = field(
40
+ default_factory=lambda: frozenset({})
41
+ )
42
+ # list relations that can be atomically replaced
43
+ # (e.g. `CREATE OR REPLACE my_relation..` versus `DROP` and `CREATE`)
44
+ replaceable_relations: FrozenSet[RelationType] = field(
45
+ default_factory=lambda: frozenset(
46
+ {
47
+ RelationType.View,
48
+ }
49
+ )
50
+ )
33
51
 
34
52
  def render(self) -> str:
35
53
  if self.include_policy.database and self.include_policy.schema:
File without changes
@@ -183,90 +183,6 @@
183
183
  {{ return(info_table) }}
184
184
  {% endmacro %}
185
185
 
186
-
187
- {% macro firebolt__create_table_as(temporary,
188
- relation,
189
- select_sql,
190
- language='sql') -%}
191
- {# Create table using CTAS
192
- Args:
193
- temporary (bool): Unused, included so macro signature matches
194
- that of dbt's default macro
195
- relation (dbt relation/dict)
196
- select_sql (string): The SQL query that will be used to generate
197
- the internal query of the CTAS
198
- language (string): sql or python models. Firebolt only supports sql.
199
- #}
200
- {%- if language == 'python' -%}
201
- {{ exceptions.raise_compiler_error("Firebolt does not currently support "
202
- "Python models.") }}
203
- {%- elif language not in ['python', 'sql'] -%}
204
- {{ exceptions.raise_compiler_error("Unexpected language parameter supplied: %s "
205
- "Must be either 'sql' or 'python'." % (language)) }}
206
- {%- endif -%}
207
-
208
- {%- set table_type = config.get('table_type', default='dimension') | upper -%}
209
- {%- set primary_index = config.get('primary_index') -%}
210
- {%- set incremental_strategy = config.get('incremental_strategy') -%}
211
- {%- set partitions = config.get('partition_by') %}
212
-
213
- CREATE {{ table_type }} TABLE IF NOT EXISTS {{ relation }}
214
- {%- set contract_config = config.get('contract') -%}
215
- {%- if contract_config.enforced -%}
216
- {{ get_assert_columns_equivalent(select_sql) }}
217
- {{ get_table_columns_and_constraints() }} ;
218
- insert into {{ relation }} (
219
- {{ adapter.dispatch('get_column_names', 'dbt')() }}
220
- )
221
- {%- set select_sql = get_select_subquery(select_sql) %}
222
- {% endif %}
223
- {%- if primary_index %}
224
- PRIMARY INDEX
225
- {% if primary_index is iterable and primary_index is not string %}
226
- {{ primary_index | join(', ') }}
227
- {%- else -%}
228
- {{ primary_index }}
229
- {%- endif -%}
230
- {%- endif -%}
231
- {% if partitions %}
232
- PARTITION BY
233
- {% if partitions is iterable and partitions is not string %}
234
- {{ partitions | join(', ') }}
235
- {%- else -%}
236
- {{ partitions }}
237
- {%- endif -%}
238
- {%- endif %}
239
- {%- if not contract_config.enforced %}
240
- AS (
241
- {% endif -%}
242
- {{ select_sql }}
243
- {% if not contract_config.enforced -%}
244
- )
245
- {%- endif -%}
246
- {% endmacro %}
247
-
248
-
249
- {% macro firebolt__create_view_as(relation, select_sql) %}
250
- {#-
251
- Return SQL string to create view.
252
- Args:
253
- relation (dict): dbt relation
254
- select_sql (string): The SQL query that will be used to generate
255
- the internal query of the CTAS
256
- #}
257
-
258
- CREATE OR REPLACE VIEW {{ relation.identifier }}
259
-
260
- {%- set contract_config = config.get('contract') -%}
261
- {%- if contract_config.enforced -%}
262
- {{ get_assert_columns_equivalent(select_sql) }}
263
- {%- endif %}
264
- AS (
265
- {{ select_sql }}
266
- )
267
- {% endmacro %}
268
-
269
-
270
186
  {% macro firebolt__truncate_relation(relation) -%}
271
187
  {#
272
188
  Truncate relation. Actual macro is drop_relation in ./adapters/relation.sql.
@@ -1,23 +1,103 @@
1
1
  {# This is for building docs. Right now it's an incomplete description of
2
2
  the columns (for instance, `is_nullable` is missing) but more could be added later. #}
3
3
 
4
- {% macro firebolt__get_catalog(information_schemas, schemas) -%}
5
- {%- call statement('catalog', fetch_result=True) %}
4
+ {% macro firebolt__get_catalog(information_schema, schemas) -%}
5
+
6
+ {% set query %}
7
+ with tables as (
8
+ {{ firebolt__get_catalog_tables_sql(information_schema) }}
9
+ {{ firebolt__get_catalog_schemas_where_clause_sql(schemas) }}
10
+ ),
11
+ columns as (
12
+ {{ firebolt__get_catalog_columns_sql(information_schema) }}
13
+ {{ firebolt__get_catalog_schemas_where_clause_sql(schemas) }}
14
+ )
15
+ {{ firebolt__get_catalog_results_sql() }}
16
+ {%- endset -%}
17
+
18
+ {{ return(run_query(query)) }}
19
+
20
+ {%- endmacro %}
21
+
22
+ {% macro firebolt__get_catalog_relations(information_schema, relations) -%}
23
+
24
+ {% set query %}
25
+ with tables as (
26
+ {{ firebolt__get_catalog_tables_sql(information_schema) }}
27
+ {{ firebolt__get_catalog_relations_where_clause_sql(relations) }}
28
+ ),
29
+ columns as (
30
+ {{ firebolt__get_catalog_columns_sql(information_schema) }}
31
+ {{ firebolt__get_catalog_relations_where_clause_sql(relations) }}
32
+ )
33
+ {{ firebolt__get_catalog_results_sql() }}
34
+ {%- endset -%}
35
+
36
+ {{ return(run_query(query)) }}
37
+
38
+ {%- endmacro %}
39
+
40
+
41
+ {% macro firebolt__get_catalog_tables_sql(information_schema) -%}
6
42
  SELECT
7
43
  tbls.table_catalog AS table_database,
8
44
  tbls.table_schema as table_schema,
9
45
  table_type,
10
46
  tbls.table_name as table_name,
11
- cols.column_name as column_name,
12
- cols.data_type AS column_type,
13
47
  CASE
14
48
  WHEN table_type = 'VIEW' THEN 'VIEW'
15
49
  ELSE 'TABLE'
16
- END AS relation_type,
17
- cols.ordinal_position as column_index
50
+ END AS relation_type
18
51
  FROM
19
52
  information_schema.tables tbls
20
- JOIN information_schema.columns cols USING (table_name)
21
- {% endcall -%}
22
- {{ return(load_result('catalog').table) }}
53
+ {%- endmacro %}
54
+
55
+
56
+ {% macro firebolt__get_catalog_columns_sql(information_schema) -%}
57
+ select
58
+ table_catalog as "table_database",
59
+ table_schema as "table_schema",
60
+ table_name as "table_name",
61
+ column_name as "column_name",
62
+ ordinal_position as "column_index",
63
+ data_type as "column_type"
64
+ from information_schema.columns
65
+ {%- endmacro %}
66
+
67
+ {% macro firebolt__get_catalog_results_sql() -%}
68
+ SELECT *
69
+ FROM tables
70
+ JOIN columns USING ("table_database", "table_schema", "table_name")
71
+ ORDER BY "column_index"
72
+ {%- endmacro %}
73
+
74
+
75
+ {% macro firebolt__get_catalog_schemas_where_clause_sql(schemas) -%}
76
+ WHERE ({%- for schema in schemas -%}
77
+ UPPER("table_schema") = UPPER('{{ schema }}'){%- if not loop.last %} OR {% endif -%}
78
+ {%- endfor -%})
79
+ {%- endmacro %}
80
+
81
+
82
+ {% macro firebolt__get_catalog_relations_where_clause_sql(relations) -%}
83
+ WHERE (
84
+ {%- for relation in relations -%}
85
+ {% if relation.schema and relation.identifier %}
86
+ (
87
+ UPPER("table_schema") = UPPER('{{ relation.schema }}')
88
+ AND UPPER("table_name") = UPPER('{{ relation.identifier }}')
89
+ )
90
+ {% elif relation.schema %}
91
+ (
92
+ UPPER("table_schema") = UPPER('{{ relation.schema }}')
93
+ )
94
+ {% else %}
95
+ {% do exceptions.raise_compiler_error(
96
+ '`get_catalog_relations` requires a list of relations, each with a schema'
97
+ ) %}
98
+ {% endif %}
99
+
100
+ {%- if not loop.last %} OR {% endif -%}
101
+ {%- endfor -%}
102
+ )
23
103
  {%- endmacro %}
@@ -1,48 +1,3 @@
1
- {#
2
- All these macros are stubbed with compiler errors because Firebolt does not
3
- support materialized views.
4
- #}
5
- {% materialization materialized_view, adapter='firebolt' %}
6
-
7
- {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
8
-
9
- {% endmaterialization %}
10
-
11
- {% macro firebolt__get_alter_materialized_view_as_sql(
12
- relation,
13
- configuration_changes,
14
- sql,
15
- existing_relation,
16
- backup_relation,
17
- intermediate_relation
18
- ) %}
19
-
20
- {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
21
- {% endmacro %}
22
-
23
-
24
- {% macro firebolt__get_create_materialized_view_as_sql(relation, sql) %}
25
-
26
- {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
27
-
28
- {% endmacro %}
29
-
30
-
31
- {% macro firebolt__get_replace_materialized_view_as_sql(relation, sql, existing_relation, backup_relation, intermediate_relation) %}
32
- {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
33
- {% endmacro %}
34
-
35
-
36
1
  {% macro firebolt__get_materialized_view_configuration_changes(existing_relation, new_config) %}
37
2
  {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
38
3
  {% endmacro %}
39
-
40
-
41
- {% macro firebolt__refresh_materialized_view(relation) -%}
42
- {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
43
- {% endmacro %}
44
-
45
-
46
- {% macro firebolt__drop_materialized_view(relation) -%}
47
- {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
48
- {%- endmacro %}
@@ -0,0 +1,11 @@
1
+ {% macro firebolt__get_alter_materialized_view_as_sql(
2
+ relation,
3
+ configuration_changes,
4
+ sql,
5
+ existing_relation,
6
+ backup_relation,
7
+ intermediate_relation
8
+ ) %}
9
+
10
+ {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
11
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro firebolt__get_create_materialized_view_as_sql(relation, sql) %}
2
+ {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
3
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro redshift__describe_materialized_view(relation) %}
2
+ {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
3
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro firebolt__drop_materialized_view(relation) %}
2
+ {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
3
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro firebolt__refresh_materialized_view(relation) %}
2
+ {{ exceptions.raise_compiler_error("Firebolt does not support materialized views") }}
3
+ {% endmacro %}
@@ -0,0 +1,74 @@
1
+ {% macro firebolt__create_table_as(
2
+ temporary,
3
+ relation,
4
+ select_sql,
5
+ language = 'sql'
6
+ ) -%}
7
+ {# Create table using CTAS
8
+ Args:
9
+ temporary (bool): Unused, included so macro signature matches
10
+ that of dbt's default macro
11
+ relation (dbt relation/dict)
12
+ select_sql (string): The SQL query that will be used to generate
13
+ the internal query of the CTAS
14
+ language (string): sql or python models. Firebolt only supports sql.
15
+ #}
16
+ {%- if language == 'python' -%}
17
+ {{ exceptions.raise_compiler_error(
18
+ "Firebolt does not currently support " "Python models."
19
+ ) }}
20
+
21
+ {%- elif language not in ['python', 'sql'] -%}
22
+ {{ exceptions.raise_compiler_error(
23
+ "Unexpected language parameter supplied: %s " "Must be either 'sql' or 'python'." % (language)
24
+ ) }}
25
+ {%- endif -%}
26
+
27
+ {%- set table_type = config.get(
28
+ 'table_type',
29
+ default = 'dimension'
30
+ ) | upper -%}
31
+ {%- set primary_index = config.get('primary_index') -%}
32
+ {%- set incremental_strategy = config.get('incremental_strategy') -%}
33
+ {%- set partitions = config.get('partition_by') %}
34
+ CREATE {{ table_type }} TABLE IF NOT EXISTS {{ relation }}
35
+
36
+ {%- set contract_config = config.get('contract') -%}
37
+ {%- if contract_config.enforced -%}
38
+ {{ get_assert_columns_equivalent(select_sql) }}
39
+ {{ get_table_columns_and_constraints() }};
40
+ INSERT INTO
41
+ {{ relation }}
42
+ (
43
+ {{ adapter.dispatch(
44
+ 'get_column_names',
45
+ 'dbt'
46
+ )() }}
47
+ ) {%- set select_sql = get_select_subquery(select_sql) %}
48
+ {% endif %}
49
+
50
+ {%- if primary_index %}
51
+ primary INDEX {% if primary_index is iterable and primary_index is not string %}
52
+ {{ primary_index | join(', ') }}
53
+ {%- else -%}
54
+ {{ primary_index }}
55
+ {%- endif -%}
56
+ {%- endif -%}
57
+
58
+ {% if partitions %}
59
+ PARTITION BY {% if partitions is iterable and partitions is not string %}
60
+ {{ partitions | join(', ') }}
61
+ {%- else -%}
62
+ {{ partitions }}
63
+ {%- endif -%}
64
+ {%- endif %}
65
+
66
+ {%- if not contract_config.enforced %}
67
+ AS (
68
+ {% endif -%}
69
+
70
+ {{ select_sql }}
71
+
72
+ {% if not contract_config.enforced -%})
73
+ {%- endif -%}
74
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {%- macro firebolt__drop_table(relation) -%}
2
+ DROP TABLE IF EXISTS {{ relation }} CASCADE
3
+ {%- endmacro -%}
@@ -0,0 +1,6 @@
1
+ {% macro firebolt__get_rename_table_sql(
2
+ relation,
3
+ new_name
4
+ ) %}
5
+ {{ exceptions.raise_compiler_error("Firebolt does not support table renames") }}
6
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro firebolt__get_replace_table_sql(relation, sql) %}
2
+ {{ firebolt__create_table_as(False, relation, sql) }}
3
+ {% endmacro %}
@@ -0,0 +1,16 @@
1
+ {% macro firebolt__create_view_as(
2
+ relation,
3
+ select_sql
4
+ ) %}
5
+ CREATE
6
+ OR REPLACE VIEW {{ relation.identifier }}
7
+
8
+ {%- set contract_config = config.get('contract') -%}
9
+ {%- if contract_config.enforced -%}
10
+ {{ get_assert_columns_equivalent(select_sql) }}
11
+ {%- endif %}
12
+
13
+ AS (
14
+ {{ select_sql }}
15
+ )
16
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro firebolt__get_drop_view_sql(relation) %}
2
+ DROP VIEW if EXISTS {{ relation }} CASCADE
3
+ {% endmacro %}
@@ -0,0 +1,6 @@
1
+ {% macro firebolt__get_rename_view_sql(
2
+ relation,
3
+ new_name
4
+ ) %}
5
+ {{ exceptions.raise_compiler_error("Firebolt does not support view renames") }}
6
+ {% endmacro %}
@@ -0,0 +1,3 @@
1
+ {% macro firebolt__get_replace_view_sql(relation, sql) %}
2
+ {{ firebolt__create_view_as(relation, sql) }}
3
+ {% endmacro %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbt-firebolt
3
- Version: 1.6.4
3
+ Version: 1.8.0
4
4
  Summary: The Firebolt adapter plugin for dbt (data build tool)
5
5
  Home-page: https://github.com/firebolt-db/dbt-firebolt
6
6
  Author: Firebolt
@@ -16,8 +16,9 @@ Classifier: Programming Language :: Python :: 3.9
16
16
  Requires-Python: >=3.8
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
- Requires-Dist: dbt-core <1.8,~=1.6
20
- Requires-Dist: firebolt-sdk >=1.1.0
19
+ Requires-Dist: dbt-adapters <2.0,>=1.0
20
+ Requires-Dist: dbt-core >=1.8.0
21
+ Requires-Dist: firebolt-sdk >=1.5.0
21
22
  Requires-Dist: pydantic >=0.23
22
23
  Provides-Extra: dev
23
24
  Requires-Dist: allure-pytest ==2.* ; extra == 'dev'
@@ -1,20 +1,21 @@
1
- dbt/adapters/firebolt/__init__.py,sha256=abhy1JQv7eRFwdEtR9pWsB6kYfmZMobu6HweuUPtpeQ,411
1
+ dbt/adapters/firebolt/__init__.py,sha256=AB2VNoocItpC4GQIktvgs5c-CtwkwOGYZb867DFkJh0,411
2
2
  dbt/adapters/firebolt/__version__.py,sha256=zRlZGglif76ZVuWWSjsH_MMPgtVQqmj-SryYJW25FL4,69
3
3
  dbt/adapters/firebolt/column.py,sha256=COo_wjhCFgS3GFcPIPcoq7WAWgzN6DB2XqG-gk51WBc,539
4
- dbt/adapters/firebolt/connections.py,sha256=Sp2C03ynSqmRIQO9z2YGfVIimWZrygST7uKT0t5_RwU,7880
5
- dbt/adapters/firebolt/impl.py,sha256=0Zn058iDxT6eVAP77vGC1sIyOYuW5FDALNns1ErPl_4,13435
6
- dbt/adapters/firebolt/relation.py,sha256=z-yv_ICJPZB33IIpnr3o_jusoULlKANLj6BlkaudQQ0,1152
4
+ dbt/adapters/firebolt/connections.py,sha256=OWnvf7HNy_MKhJEBzj37_21sZNRzgRM-J5w4eXCr7hM,7934
5
+ dbt/adapters/firebolt/impl.py,sha256=vHK7AfpmMdZMCHaky3IEufl18IYFPs9mdvdmTpMrUh4,13939
6
+ dbt/adapters/firebolt/relation.py,sha256=Xg3Nrjw3UrF_qwnuGbPT97rSXRiDP1GlIAoBF4b7QnY,1922
7
+ dbt/adapters/firebolt/relation_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
8
  dbt/include/firebolt/__init__.py,sha256=vBGWeG-dHHkimfnX8axBJ4IgAowFw8xADmo6Auzn2xc,52
8
9
  dbt/include/firebolt/dbt_project.yml,sha256=uHJ-i0wD1D74DWSSSzsFKoKbAN1w4LBgVpnkm8e-M1g,76
9
- dbt/include/firebolt/macros/adapters.sql,sha256=btDFso1_NJzHc7_RiuuDKVOmhsafFt0Ng3HuI0R6mhU,9663
10
- dbt/include/firebolt/macros/catalog.sql,sha256=YCsHQEqA1-bo_expaF_pMorINhKAXOYs73Lj8Mf1GDY,843
10
+ dbt/include/firebolt/macros/adapters.sql,sha256=NiTW87XQmC8gGahY6LCw7Fd6Brgin5qBO1qqVef9YWQ,6848
11
+ dbt/include/firebolt/macros/catalog.sql,sha256=LLhjI9oEoMEQKQfE3LJ5nWS9-u3bwBAYBz4ukrsg5T8,3350
11
12
  dbt/include/firebolt/macros/adapters/apply_grants.sql,sha256=nEmyDs0K0HENxxMaY8v-5oifIXDMrysmuUb_bo9bCuY,1095
12
13
  dbt/include/firebolt/macros/adapters/relation.sql,sha256=1nQZg_vwpGYwFI2EQvHJA5CqFWk7h3w3Yq2uvYXNR5E,2017
13
14
  dbt/include/firebolt/macros/dbt_external_tables/create_external_table.sql,sha256=x7awixF-k8neugbKp7_QVb7PhBlQnsaIvvdBtJEeJqE,6153
14
15
  dbt/include/firebolt/macros/dbt_external_tables/dropif.sql,sha256=-kZzUVgC6Bcof7tZ9VcDK427agylMHeG-yA8NqSeWkw,167
15
16
  dbt/include/firebolt/macros/dbt_external_tables/get_external_build_plan.sql,sha256=BWNSuqB9t0hxbxL9CbIc0UFTBBarQMtGfHv9LLAbqSI,894
16
17
  dbt/include/firebolt/macros/materializations/clone.sql,sha256=SKPc_tG0tF2HRKlo1-CQPvxVWGKHpXDwxvubsCwKTG8,79
17
- dbt/include/firebolt/macros/materializations/materialized_view.sql,sha256=UAd2h-ZIsDbI45hPMIAXVNrQB8SCt0QfkMUs_GHe_kw,1538
18
+ dbt/include/firebolt/macros/materializations/materialized_view.sql,sha256=pdWGMP25o0RqNINx1hbn1Q4dTNcdk0Dgrlv3K8XQAbs,202
18
19
  dbt/include/firebolt/macros/materializations/seed.sql,sha256=O622lwmzRGeAfaNfRpjR183ARFltILteznwgXZfPXMA,1564
19
20
  dbt/include/firebolt/macros/materializations/table.sql,sha256=XY0D-df9EoWOBF3kCT3TCE3Rko7bvvfuztQT0-Pqlfs,1752
20
21
  dbt/include/firebolt/macros/materializations/test.sql,sha256=Wol19pNIfkPRTpVUYKAGbkipYOMZjixnAaoZ1chuP88,488
@@ -25,6 +26,19 @@ dbt/include/firebolt/macros/materializations/models/incremental/is_incremental.s
25
26
  dbt/include/firebolt/macros/materializations/models/incremental/merge.sql,sha256=YPryPkUfVVrKVk5bSdGt0eMa5NdFMMvJW1OuQ6o2umw,1311
26
27
  dbt/include/firebolt/macros/materializations/models/incremental/on_schema_change.sql,sha256=WxGhX22oJRhDVsR4nUWilCSIG-bb7efDC3AXcU8VbbQ,3933
27
28
  dbt/include/firebolt/macros/materializations/models/incremental/strategies.sql,sha256=8Xrr-XqWeTRTbgvbVuH7EikklCzooSl0tMtLvhNKT4A,5925
29
+ dbt/include/firebolt/macros/relations/materialized_view/alter.sql,sha256=QDMCFwJZZfz7mrx6UcyDICSWAS3zQTs52_urcsW8klU,286
30
+ dbt/include/firebolt/macros/relations/materialized_view/create.sql,sha256=xthF0oHCyC4xu8IKEtoLJIyWh3p-JGBS5Awc3J-sQ8Y,178
31
+ dbt/include/firebolt/macros/relations/materialized_view/describe.sql,sha256=uMJWY-9P-49YjhwH_F1Co4szia0oNAVYqJIv2IVGzM8,164
32
+ dbt/include/firebolt/macros/relations/materialized_view/drop.sql,sha256=Ya03cid5h05t3-SIF4JndKtMMIctD46OX9gPVt9jhVw,160
33
+ dbt/include/firebolt/macros/relations/materialized_view/refresh.sql,sha256=9s4e6cjT9Dx9nCCJPMlhV5SkzHX8574cdIJUhSfNmU8,163
34
+ dbt/include/firebolt/macros/relations/table/create.sql,sha256=4qK5r8EODXDjsBZwbHupLFfp3cDT4JkQkOuH94L9KVQ,2406
35
+ dbt/include/firebolt/macros/relations/table/drop.sql,sha256=3W0SMqmlDizmZqn-QZvqXeJ9lG2KtooiFvwac3WzSzQ,110
36
+ dbt/include/firebolt/macros/relations/table/rename.sql,sha256=5dmKvuiSnMTARuthnDJBUOORdQCIeEuGMLoyZlgQxVU,185
37
+ dbt/include/firebolt/macros/relations/table/replace.sql,sha256=bw08YDtLMhkM4dO4nYXZ32U50lcnTG5Axb-Lls7XpB0,132
38
+ dbt/include/firebolt/macros/relations/view/create.sql,sha256=WXXMS_WnHCoeWdYmyq7DWWeeoLag2ylXBxoltaCzIFA,333
39
+ dbt/include/firebolt/macros/relations/view/drop.sql,sha256=8m_CtJrFXY_vZM9EEYi7_7kCuXKtc0ql_9S_cmKVEb8,112
40
+ dbt/include/firebolt/macros/relations/view/rename.sql,sha256=3PkhAm3E4VscNSj2jM2kGGcSC9NGM9gJreSRS0rAFbI,183
41
+ dbt/include/firebolt/macros/relations/view/replace.sql,sha256=dszxLtQPuhZCEYeuqnuheu0HfN1RZoY05b34fMweEEg,123
28
42
  dbt/include/firebolt/macros/utils/array_append.sql,sha256=woAedZFXFYh6TYXwJQCxKj4o5yo71yXBdk-nxcF4Kss,117
29
43
  dbt/include/firebolt/macros/utils/array_concat.sql,sha256=Q9yY_rhcITJH0bS12MJOkBl5PXJ-ScgFZTBrqmQtdmw,117
30
44
  dbt/include/firebolt/macros/utils/array_construct.sql,sha256=C1I8STXIEN4-Ms6_b1Fw7QqzaAiesjC3M4RWa6e3pBY,105
@@ -39,8 +53,8 @@ dbt/include/firebolt/macros/utils/position.sql,sha256=WPo9_bhvNYJooEAsHC9OcnNAwU
39
53
  dbt/include/firebolt/macros/utils/right.sql,sha256=_mm1_2MvlOH4O6CmYhgvVxMLfDxAvgv-EMwZ8OBOq-I,254
40
54
  dbt/include/firebolt/macros/utils/split_part.sql,sha256=5dUlbx3Pt1iWWaIlxiXyYUwUqzXuLLXMB-1aGJHNk4o,464
41
55
  dbt/include/firebolt/macros/utils/timestamps.sql,sha256=22g-QpJjBuBUQOHNpQ_TuMRa-cHxaxXPv8ItEUo-vEk,397
42
- dbt_firebolt-1.6.4.dist-info/LICENSE,sha256=Nn0EGvW3qmoZpBV_JVM3iPukFf3RiNCIizrWe_2oTHk,11354
43
- dbt_firebolt-1.6.4.dist-info/METADATA,sha256=P9bgeX1hBKX9qJbfs6eaTAFPt-0nvfupj07nZO90I6A,5034
44
- dbt_firebolt-1.6.4.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
45
- dbt_firebolt-1.6.4.dist-info/top_level.txt,sha256=B2YH4he17ajilEWOGCKHbRcEJlCuZKwCcgFcLPntLsE,4
46
- dbt_firebolt-1.6.4.dist-info/RECORD,,
56
+ dbt_firebolt-1.8.0.dist-info/LICENSE,sha256=Nn0EGvW3qmoZpBV_JVM3iPukFf3RiNCIizrWe_2oTHk,11354
57
+ dbt_firebolt-1.8.0.dist-info/METADATA,sha256=Kw1aynZcI6HQabCP44_A1bbWTKqD7qBV0ZbbWLb_TTQ,5070
58
+ dbt_firebolt-1.8.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
59
+ dbt_firebolt-1.8.0.dist-info/top_level.txt,sha256=B2YH4he17ajilEWOGCKHbRcEJlCuZKwCcgFcLPntLsE,4
60
+ dbt_firebolt-1.8.0.dist-info/RECORD,,