collate-data-diff 0.11.15__tar.gz → 0.11.16__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.
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/PKG-INFO +1 -1
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/mssql.py +17 -4
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/pyproject.toml +1 -1
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/LICENSE +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/README.md +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/__init__.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/__main__.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/abcs/__init__.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/abcs/compiler.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/abcs/database_types.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/cloud/__init__.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/cloud/data_source.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/cloud/datafold_api.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/config.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/__init__.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/_connect.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/base.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/bigquery.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/clickhouse.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/databricks.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/duckdb.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/mysql.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/oracle.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/postgresql.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/presto.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/redshift.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/snowflake.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/trino.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/vertica.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/dbt.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/dbt_config_validators.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/dbt_parser.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/diff_tables.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/errors.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/format.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/hashdiff_tables.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/info_tree.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/joindiff_tables.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/lexicographic_space.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/parse_time.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/py.typed +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/__init__.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/api.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/ast_classes.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/base.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/extras.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/query_utils.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/schema.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/table_segment.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/thread_utils.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/tracking.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/utils.py +0 -0
- {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/version.py +0 -0
|
@@ -28,6 +28,8 @@ from data_diff.abcs.database_types import (
|
|
|
28
28
|
Time,
|
|
29
29
|
)
|
|
30
30
|
|
|
31
|
+
DEFAULT_ODBC_DRIVER = "ODBC Driver 18 for SQL Server"
|
|
32
|
+
|
|
31
33
|
|
|
32
34
|
@import_helper("mssql")
|
|
33
35
|
def import_mssql():
|
|
@@ -174,12 +176,23 @@ class MsSQL(ThreadedDatabase):
|
|
|
174
176
|
def __init__(self, host, port, user, password, *, database, thread_count, **kw) -> None:
|
|
175
177
|
super().__init__(thread_count=thread_count)
|
|
176
178
|
|
|
179
|
+
# A separate keyword rather than `driver`: in a connection dict that name is
|
|
180
|
+
# already consumed by connect_with_dict as the *scheme*. Reading it off `kw`
|
|
181
|
+
# also covers the URI entry point, whose query params land there too.
|
|
182
|
+
odbc_driver = kw.pop("odbc_driver", None) or DEFAULT_ODBC_DRIVER
|
|
183
|
+
|
|
177
184
|
args = dict(server=host, port=port, database=database, user=user, password=password, **kw)
|
|
178
185
|
self._args = {k: v for k, v in args.items() if v is not None}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
#
|
|
182
|
-
|
|
186
|
+
# Only FreeTDS splits a `DOMAIN\user` login and negotiates NTLM. msodbcsql
|
|
187
|
+
# offers it as a SQL login name, which SQL Server rejects with 18456 - and a
|
|
188
|
+
# backslash is illegal in a SQL login, so such an account can only ever be a
|
|
189
|
+
# Windows one. Hard-coding the driver made domain accounts undiffable.
|
|
190
|
+
self._args["driver"] = "{%s}" % odbc_driver
|
|
191
|
+
|
|
192
|
+
# Kept as a default rather than removed: setups with self-signed certificates
|
|
193
|
+
# already depend on it, and dropping it fails them with
|
|
194
|
+
# "SSL Provider: certificate verify failed". Now overridable by the caller.
|
|
195
|
+
self._args.setdefault("TrustServerCertificate", "yes")
|
|
183
196
|
|
|
184
197
|
try:
|
|
185
198
|
self.default_database = self._args["database"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "collate-data-diff"
|
|
3
|
-
version = "0.11.
|
|
3
|
+
version = "0.11.16"
|
|
4
4
|
description = "Command-line tool and Python library to efficiently diff rows across two different databases."
|
|
5
5
|
authors = ["Collate <info@getcollate.io>", "Datafold <data-diff@datafold.com>"]
|
|
6
6
|
license = "MIT"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|