1414
1515from .utils import safezip , run_as_daemon
1616from .thread_utils import ThreadedYielder
17- from .databases .database_types import IKey , NumericType , PrecisionType , StringType
17+ from .databases .database_types import IKey , NumericType , PrecisionType , StringType , ColType_UUID
1818from .table_segment import TableSegment
1919from .tracking import create_end_event_json , create_start_event_json , send_event_json , is_tracking_enabled
2020
@@ -209,6 +209,10 @@ def _validate_and_adjust_columns(self, table1, table2):
209209 table1 ._schema [c1 ] = col1 .replace (precision = lowest .precision )
210210 table2 ._schema [c2 ] = col2 .replace (precision = lowest .precision )
211211
212+ elif isinstance (col1 , ColType_UUID ):
213+ if not isinstance (col2 , ColType_UUID ):
214+ raise TypeError (f"Incompatible types for column '{ c1 } ': { col1 } <-> { col2 } " )
215+
212216 elif isinstance (col1 , StringType ):
213217 if not isinstance (col2 , StringType ):
214218 raise TypeError (f"Incompatible types for column '{ c1 } ': { col1 } <-> { col2 } " )
@@ -222,7 +226,9 @@ def _validate_and_adjust_columns(self, table1, table2):
222226 "If encoding/formatting differs between databases, it may result in false positives."
223227 )
224228
225- def _bisect_and_diff_tables (self , ti : ThreadedYielder , table1 : TableSegment , table2 : TableSegment , level = 0 , max_rows = None ):
229+ def _bisect_and_diff_tables (
230+ self , ti : ThreadedYielder , table1 : TableSegment , table2 : TableSegment , level = 0 , max_rows = None
231+ ):
226232 assert table1 .is_bounded and table2 .is_bounded
227233
228234 if max_rows is None :
@@ -259,7 +265,16 @@ def _bisect_and_diff_tables(self, ti: ThreadedYielder, table1: TableSegment, tab
259265 for i , (t1 , t2 ) in enumerate (safezip (segmented1 , segmented2 )):
260266 ti .submit (self ._diff_tables , ti , t1 , t2 , max_rows , level + 1 , i + 1 , len (segmented1 ), priority = level )
261267
262- def _diff_tables (self , ti : ThreadedYielder , table1 : TableSegment , table2 : TableSegment , max_rows : int , level = 0 , segment_index = None , segment_count = None ):
268+ def _diff_tables (
269+ self ,
270+ ti : ThreadedYielder ,
271+ table1 : TableSegment ,
272+ table2 : TableSegment ,
273+ max_rows : int ,
274+ level = 0 ,
275+ segment_index = None ,
276+ segment_count = None ,
277+ ):
263278 logger .info (
264279 ". " * level + f"Diffing segment { segment_index } /{ segment_count } , "
265280 f"key-range: { table1 .min_key } ..{ table2 .max_key } , "
0 commit comments