From 8cfcb9b7d0e3611274c2cdd647c48afc611e3e23 Mon Sep 17 00:00:00 2001 From: Dan Lawin Date: Wed, 6 Dec 2023 16:10:36 -0700 Subject: [PATCH 1/3] Revert "mssql normalize_uuid" --- data_diff/databases/mssql.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index b637c285..8f5195ee 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -13,7 +13,6 @@ ) from data_diff.abcs.database_types import ( JSON, - ColType_UUID, NumericType, Timestamp, TimestampTZ, @@ -155,9 +154,6 @@ def md5_as_int(self, s: str) -> str: def md5_as_hex(self, s: str) -> str: return f"HashBytes('MD5', {s})" - def normalize_uuid(self, value: str, coltype: ColType_UUID) -> str: - return f"TRIM(CAST({value} AS char)) AS {value}" - @attrs.define(frozen=False, init=False, kw_only=True) class MsSQL(ThreadedDatabase): From 1ddd783091fba89d7496770db35cea0685a4149c Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 6 Dec 2023 16:13:59 -0700 Subject: [PATCH 2/3] fix mssql limit_select --- data_diff/databases/mssql.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index 8f5195ee..d15e7954 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -113,19 +113,21 @@ def is_distinct_from(self, a: str, b: str) -> str: def limit_select( self, select_query: str, - offset: Optional[int] = None, - limit: Optional[int] = None, - has_order_by: Optional[bool] = None, + offset: int | None = None, + limit: int | None = None, + has_order_by: bool | None = None, ) -> str: if offset: raise NotImplementedError("No support for OFFSET in query") - result = "" if not has_order_by: result += "ORDER BY 1" result += f" OFFSET 0 ROWS FETCH NEXT {limit} ROWS ONLY" - return f"SELECT * FROM ({select_query}) AS LIMITED_SELECT {result}" + + # mssql requires that subquery columns are all aliased, so + # don't wrap in an outer select + return f"{select_query} {result}" def constant_values(self, rows) -> str: values = ", ".join("(%s)" % ", ".join(self._constant_value(v) for v in row) for row in rows) From 643b1ea79cd5d63f03ce87e78de3646303394afa Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 6 Dec 2023 16:14:52 -0700 Subject: [PATCH 3/3] use Optional[] --- data_diff/databases/mssql.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index d15e7954..834ed9cd 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -113,9 +113,9 @@ def is_distinct_from(self, a: str, b: str) -> str: def limit_select( self, select_query: str, - offset: int | None = None, - limit: int | None = None, - has_order_by: bool | None = None, + offset: Optional[int] = None, + limit: Optional[int] = None, + has_order_by: Optional[bool] = None, ) -> str: if offset: raise NotImplementedError("No support for OFFSET in query")