dbt-sqlserver 1.8.0rc1__tar.gz → 1.8.1__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.
Files changed (45) hide show
  1. {dbt-sqlserver-1.8.0rc1/dbt_sqlserver.egg-info → dbt-sqlserver-1.8.1}/PKG-INFO +4 -4
  2. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/README.md +3 -3
  3. dbt-sqlserver-1.8.1/dbt/adapters/sqlserver/__version__.py +1 -0
  4. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/sqlserver_connections.py +1 -1
  5. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/adapter/indexes.sql +1 -0
  6. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/materializations/models/incremental/incremental.sql +1 -0
  7. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/materializations/snapshot/snapshot.sql +1 -0
  8. dbt-sqlserver-1.8.1/dbt/include/sqlserver/macros/materializations/tests.sql +46 -0
  9. dbt-sqlserver-1.8.1/dbt/include/sqlserver/macros/materializations/unit_tests.sql +47 -0
  10. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/readme.md +4 -0
  11. dbt-sqlserver-1.8.1/dbt/include/sqlserver/macros/relations/seeds/helpers.sql +57 -0
  12. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/relations/table/create.sql +3 -1
  13. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/relations/views/create.sql +1 -1
  14. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1/dbt_sqlserver.egg-info}/PKG-INFO +4 -4
  15. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt_sqlserver.egg-info/SOURCES.txt +3 -0
  16. dbt-sqlserver-1.8.0rc1/dbt/adapters/sqlserver/__version__.py +0 -1
  17. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/LICENSE +0 -0
  18. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/MANIFEST.in +0 -0
  19. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/__init__.py +0 -0
  20. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/relation_configs/__init__.py +0 -0
  21. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/relation_configs/policies.py +0 -0
  22. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/sqlserver_adapter.py +0 -0
  23. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/sqlserver_column.py +0 -0
  24. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/sqlserver_configs.py +0 -0
  25. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/sqlserver_credentials.py +0 -0
  26. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/adapters/sqlserver/sqlserver_relation.py +0 -0
  27. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/__init__.py +0 -0
  28. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/dbt_project.yml +0 -0
  29. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/adapter/columns.sql +0 -0
  30. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/adapter/metadata.sql +0 -0
  31. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/adapter/relation.sql +0 -0
  32. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/adapter/schemas.sql +0 -0
  33. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/adapter/validate_sql.sql +0 -0
  34. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/materializations/models/table/table.sql +0 -0
  35. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/materializations/models/view/view.sql +0 -0
  36. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/materializations/snapshot/helpers.sql +0 -0
  37. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/materializations/snapshot/snapshot_merge.sql +0 -0
  38. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/relations/table/clone.sql +0 -0
  39. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/macros/utils/split_part.sql +0 -0
  40. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt/include/sqlserver/profile_template.yml +0 -0
  41. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt_sqlserver.egg-info/dependency_links.txt +0 -0
  42. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt_sqlserver.egg-info/requires.txt +0 -0
  43. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/dbt_sqlserver.egg-info/top_level.txt +0 -0
  44. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/setup.cfg +0 -0
  45. {dbt-sqlserver-1.8.0rc1 → dbt-sqlserver-1.8.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbt-sqlserver
3
- Version: 1.8.0rc1
3
+ Version: 1.8.1
4
4
  Summary: A Microsoft SQL Server adapter plugin for dbt
5
5
  Home-page: https://github.com/dbt-msft/dbt-sqlserver
6
6
  Author: Mikael Ene, Anders Swanson, Sam Debruyn, Cor Zuurmond, Cody Scott
@@ -42,9 +42,9 @@ Join us on the [dbt Slack](https://getdbt.slack.com/archives/CMRMDDQ9W) to ask q
42
42
  ## Installation
43
43
 
44
44
  This adapter requires the Microsoft ODBC driver to be installed:
45
- [Windows](https://docs.microsoft.com/nl-be/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
46
- [macOS](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
47
- [Linux](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)
45
+ [Windows](https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
46
+ [macOS](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
47
+ [Linux](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)
48
48
 
49
49
  <details><summary>Debian/Ubuntu</summary>
50
50
  <p>
@@ -17,9 +17,9 @@ Join us on the [dbt Slack](https://getdbt.slack.com/archives/CMRMDDQ9W) to ask q
17
17
  ## Installation
18
18
 
19
19
  This adapter requires the Microsoft ODBC driver to be installed:
20
- [Windows](https://docs.microsoft.com/nl-be/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
21
- [macOS](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
22
- [Linux](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)
20
+ [Windows](https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
21
+ [macOS](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
22
+ [Linux](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)
23
23
 
24
24
  <details><summary>Debian/Ubuntu</summary>
25
25
  <p>
@@ -0,0 +1 @@
1
+ version = "1.8.1"
@@ -130,7 +130,7 @@ class SQLServerConnectionManager(FabricConnectionManager):
130
130
 
131
131
  plugin_version = __version__.version
132
132
  application_name = f"dbt-{credentials.type}/{plugin_version}"
133
- con_str.append(f"Application Name={application_name}")
133
+ con_str.append(f"APP={application_name}")
134
134
 
135
135
  con_str_concat = ";".join(con_str)
136
136
 
@@ -108,6 +108,7 @@
108
108
  inner join sys.tables {{ information_schema_hints() }}
109
109
  on sys.indexes.object_id = sys.tables.object_id
110
110
  where sys.indexes.[name] is not null
111
+ and SCHEMA_NAME(sys.tables.schema_id) = '{{ this.schema }}'
111
112
  and sys.tables.[name] = '{{ this.table }}'
112
113
  for xml path('')
113
114
  ); exec sp_executesql @drop_remaining_indexes_last;
@@ -59,6 +59,7 @@
59
59
  {% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}
60
60
  {% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}
61
61
 
62
+ {% do to_drop.append(temp_relation) %}
62
63
  {% endif %}
63
64
 
64
65
  {% call statement("main") %}
@@ -35,6 +35,7 @@
35
35
 
36
36
  {% set temp_snapshot_relation_sql = model['compiled_code'].replace("'", "''") %}
37
37
  {% call statement('create temp_snapshot_relation') %}
38
+ USE [{{ model.database}}];
38
39
  EXEC('DROP VIEW IF EXISTS {{ temp_snapshot_relation.include(database=False) }};');
39
40
  EXEC('create view {{ temp_snapshot_relation.include(database=False) }} as {{ temp_snapshot_relation_sql }};');
40
41
  {% endcall %}
@@ -0,0 +1,46 @@
1
+ {% macro sqlserver__get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}
2
+
3
+ -- Create target schema if it does not
4
+ USE [{{ target.database }}];
5
+ IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = '{{ target.schema }}')
6
+ BEGIN
7
+ EXEC('CREATE SCHEMA [{{ target.schema }}]')
8
+ END
9
+
10
+ {% set with_statement_pattern = 'with .+ as\s*\(' %}
11
+ {% set re = modules.re %}
12
+ {% set is_match = re.search(with_statement_pattern, main_sql, re.IGNORECASE) %}
13
+
14
+ {% if is_match %}
15
+ {% set testview %}
16
+ [{{ target.schema }}.testview_{{ range(1300, 19000) | random }}]
17
+ {% endset %}
18
+
19
+ {% set sql = main_sql.replace("'", "''")%}
20
+ EXEC('create view {{testview}} as {{ sql }};')
21
+ select
22
+ {{ "top (" ~ limit ~ ')' if limit != none }}
23
+ {{ fail_calc }} as failures,
24
+ case when {{ fail_calc }} {{ warn_if }}
25
+ then 'true' else 'false' end as should_warn,
26
+ case when {{ fail_calc }} {{ error_if }}
27
+ then 'true' else 'false' end as should_error
28
+ from (
29
+ select * from {{testview}}
30
+ ) dbt_internal_test;
31
+
32
+ EXEC('drop view {{testview}};')
33
+
34
+ {% else -%}
35
+ select
36
+ {{ "top (" ~ limit ~ ')' if limit != none }}
37
+ {{ fail_calc }} as failures,
38
+ case when {{ fail_calc }} {{ warn_if }}
39
+ then 'true' else 'false' end as should_warn,
40
+ case when {{ fail_calc }} {{ error_if }}
41
+ then 'true' else 'false' end as should_error
42
+ from (
43
+ {{ main_sql }}
44
+ ) dbt_internal_test
45
+ {%- endif -%}
46
+ {%- endmacro %}
@@ -0,0 +1,47 @@
1
+ {% macro sqlserver__get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}
2
+
3
+ USE [{{ target.database }}];
4
+ IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = '{{ target.schema }}')
5
+ BEGIN
6
+ EXEC('CREATE SCHEMA [{{ target.schema }}]')
7
+ END
8
+
9
+ {% set test_view %}
10
+ [{{ target.schema }}.testview_{{ range(1300, 19000) | random }}]
11
+ {% endset %}
12
+ {% set test_sql = main_sql.replace("'", "''")%}
13
+ EXEC('create view {{test_view}} as {{ test_sql }};')
14
+
15
+ {% set expected_view %}
16
+ [{{ target.schema }}.expectedview_{{ range(1300, 19000) | random }}]
17
+ {% endset %}
18
+ {% set expected_sql = expected_fixture_sql.replace("'", "''")%}
19
+ EXEC('create view {{expected_view}} as {{ expected_sql }};')
20
+
21
+ -- Build actual result given inputs
22
+ {% set unittest_sql %}
23
+ with dbt_internal_unit_test_actual as (
24
+ select
25
+ {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%},{% endif %}{%- endfor -%}, {{ dbt.string_literal("actual") }} as {{ adapter.quote("actual_or_expected") }}
26
+ from
27
+ {{ test_view }}
28
+ ),
29
+ -- Build expected result
30
+ dbt_internal_unit_test_expected as (
31
+ select
32
+ {% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%}, {% endif %}{%- endfor -%}, {{ dbt.string_literal("expected") }} as {{ adapter.quote("actual_or_expected") }}
33
+ from
34
+ {{ expected_view }}
35
+ )
36
+ -- Union actual and expected results
37
+ select * from dbt_internal_unit_test_actual
38
+ union all
39
+ select * from dbt_internal_unit_test_expected
40
+ {% endset %}
41
+
42
+ EXEC('{{- escape_single_quotes(unittest_sql) -}}')
43
+
44
+ EXEC('drop view {{test_view}};')
45
+ EXEC('drop view {{expected_view}};')
46
+
47
+ {%- endmacro %}
@@ -48,3 +48,7 @@ DBT expects a limit function, but the sqlserver syntax does not support it. Fabr
48
48
  ## `sqlserver__snapshot_merge_sql`
49
49
 
50
50
  Restores logic to the merge statement logic like the dbt core. Merge will probably be slower then the existing logic
51
+
52
+ ## unit tests
53
+
54
+ To accomidate the nested CTE situation, we create a temp view for the actual/expected and use those both in the test.
@@ -0,0 +1,57 @@
1
+ {% macro sqlserver__get_binding_char() %}
2
+ {{ return('?') }}
3
+ {% endmacro %}
4
+
5
+ {% macro sqlserver__get_batch_size() %}
6
+ {{ return(400) }}
7
+ {% endmacro %}
8
+
9
+ {% macro calc_batch_size(num_columns) %}
10
+ {#
11
+ SQL Server allows for a max of 2098 parameters in a single statement.
12
+ Check if the max_batch_size fits with the number of columns, otherwise
13
+ reduce the batch size so it fits.
14
+ #}
15
+ {% set max_batch_size = get_batch_size() %}
16
+ {% set calculated_batch = (2098 / num_columns)|int %}
17
+ {% set batch_size = [max_batch_size, calculated_batch] | min %}
18
+
19
+ {{ return(batch_size) }}
20
+ {% endmacro %}
21
+
22
+ {% macro sqlserver__load_csv_rows(model, agate_table) %}
23
+ {% set cols_sql = get_seed_column_quoted_csv(model, agate_table.column_names) %}
24
+ {% set batch_size = calc_batch_size(agate_table.column_names|length) %}
25
+ {% set bindings = [] %}
26
+ {% set statements = [] %}
27
+
28
+ {{ log("Inserting batches of " ~ batch_size ~ " records") }}
29
+
30
+ {% for chunk in agate_table.rows | batch(batch_size) %}
31
+ {% set bindings = [] %}
32
+
33
+ {% for row in chunk %}
34
+ {% do bindings.extend(row) %}
35
+ {% endfor %}
36
+
37
+ {% set sql %}
38
+ insert into {{ this.render() }} ({{ cols_sql }}) values
39
+ {% for row in chunk -%}
40
+ ({%- for column in agate_table.column_names -%}
41
+ {{ get_binding_char() }}
42
+ {%- if not loop.last%},{%- endif %}
43
+ {%- endfor -%})
44
+ {%- if not loop.last%},{%- endif %}
45
+ {%- endfor %}
46
+ {% endset %}
47
+
48
+ {% do adapter.add_query(sql, bindings=bindings, abridge_sql_log=True) %}
49
+
50
+ {% if loop.index0 == 0 %}
51
+ {% do statements.append(sql) %}
52
+ {% endif %}
53
+ {% endfor %}
54
+
55
+ {# Return SQL so we can render it out into the compiled files #}
56
+ {{ return(statements[0]) }}
57
+ {% endmacro %}
@@ -3,12 +3,14 @@
3
3
  {%- set tmp_relation = relation.incorporate(path={"identifier": relation.identifier ~ '__dbt_tmp_vw'}, type='view') -%}
4
4
 
5
5
  {%- do adapter.drop_relation(tmp_relation) -%}
6
+ USE [{{ relation.database }}];
6
7
  {{ get_create_view_as_sql(tmp_relation, sql) }}
7
8
 
8
9
  {%- set table_name -%}
9
- {{ relation.database}}.{{ relation.schema }}.{{ relation.identifier }}
10
+ {{ relation }}
10
11
  {%- endset -%}
11
12
 
13
+
12
14
  {%- set contract_config = config.get('contract') -%}
13
15
  {%- set query -%}
14
16
  {% if contract_config.enforced and (not temporary) %}
@@ -13,7 +13,7 @@
13
13
  {% set tst %}
14
14
  SELECT '1' as col
15
15
  {% endset %}
16
-
16
+ USE [{{ relation.database }}];
17
17
  EXEC('{{- escape_single_quotes(query) -}}')
18
18
 
19
19
  {% endmacro %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbt-sqlserver
3
- Version: 1.8.0rc1
3
+ Version: 1.8.1
4
4
  Summary: A Microsoft SQL Server adapter plugin for dbt
5
5
  Home-page: https://github.com/dbt-msft/dbt-sqlserver
6
6
  Author: Mikael Ene, Anders Swanson, Sam Debruyn, Cor Zuurmond, Cody Scott
@@ -42,9 +42,9 @@ Join us on the [dbt Slack](https://getdbt.slack.com/archives/CMRMDDQ9W) to ask q
42
42
  ## Installation
43
43
 
44
44
  This adapter requires the Microsoft ODBC driver to be installed:
45
- [Windows](https://docs.microsoft.com/nl-be/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
46
- [macOS](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
47
- [Linux](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)
45
+ [Windows](https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
46
+ [macOS](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
47
+ [Linux](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)
48
48
 
49
49
  <details><summary>Debian/Ubuntu</summary>
50
50
  <p>
@@ -22,12 +22,15 @@ dbt/include/sqlserver/macros/adapter/metadata.sql
22
22
  dbt/include/sqlserver/macros/adapter/relation.sql
23
23
  dbt/include/sqlserver/macros/adapter/schemas.sql
24
24
  dbt/include/sqlserver/macros/adapter/validate_sql.sql
25
+ dbt/include/sqlserver/macros/materializations/tests.sql
26
+ dbt/include/sqlserver/macros/materializations/unit_tests.sql
25
27
  dbt/include/sqlserver/macros/materializations/models/incremental/incremental.sql
26
28
  dbt/include/sqlserver/macros/materializations/models/table/table.sql
27
29
  dbt/include/sqlserver/macros/materializations/models/view/view.sql
28
30
  dbt/include/sqlserver/macros/materializations/snapshot/helpers.sql
29
31
  dbt/include/sqlserver/macros/materializations/snapshot/snapshot.sql
30
32
  dbt/include/sqlserver/macros/materializations/snapshot/snapshot_merge.sql
33
+ dbt/include/sqlserver/macros/relations/seeds/helpers.sql
31
34
  dbt/include/sqlserver/macros/relations/table/clone.sql
32
35
  dbt/include/sqlserver/macros/relations/table/create.sql
33
36
  dbt/include/sqlserver/macros/relations/views/create.sql
@@ -1 +0,0 @@
1
- version = "1.8.0rc1"
File without changes
File without changes