11import unittest
2- import preql
32import time
43from data_diff import database as db
5- from data_diff .diff_tables import TableDiffer , TableSegment , split_space
4+ from data_diff .diff_tables import TableDiffer , TableSegment
65from parameterized import parameterized , parameterized_class
7- from .common import CONN_STRINGS , str_to_checksum
6+ from .common import CONN_STRINGS
87import logging
98
109logging .getLogger ("diff_tables" ).setLevel (logging .WARN )
115114 # "int",
116115 ],
117116 "datetime_no_timezone" : [
118- # "timestamp",
119- # "timestamp(6)",
120- # "timestamp(9)",
117+ "timestamp with local time zone " ,
118+ "timestamp(6) with local time zone " ,
119+ "timestamp(9) with local time zone " ,
121120 ],
122121 "float" : [
123122 # "float",
@@ -179,11 +178,20 @@ def expand_params(testcase_func, param_num, param):
179178
180179
181180def _insert_to_table (conn , table , values ):
182- insertion_query = f"INSERT INTO { table } (id, col) VALUES "
183- for j , sample in values :
184- insertion_query += f"({ j } , '{ sample } '),"
185-
186- conn .query (insertion_query [0 :- 1 ], None )
181+ insertion_query = f"INSERT INTO { table } (id, col) "
182+
183+ if isinstance (conn , db .Oracle ):
184+ selects = []
185+ for j , sample in values :
186+ selects .append ( f"SELECT { j } , timestamp '{ sample } ' FROM dual" )
187+ insertion_query += ' UNION ALL ' .join (selects )
188+ else :
189+ insertion_query += ' VALUES '
190+ for j , sample in values :
191+ insertion_query += f"({ j } , '{ sample } '),"
192+ insertion_query = insertion_query [0 :- 1 ]
193+
194+ conn .query (insertion_query , None )
187195 if not isinstance (conn , db .BigQuery ):
188196 conn .query ("COMMIT" , None )
189197
@@ -204,14 +212,22 @@ def test_types(self, source_db, target_db, source_type, target_type, type_catego
204212 src_table = src_conn .quote ("." .join (src_table_path ))
205213 dst_table = dst_conn .quote ("." .join (dst_table_path ))
206214
207- src_conn .query (f"DROP TABLE IF EXISTS { src_table } " , None )
208- src_conn .query (f"CREATE TABLE { src_table } (id int, col { source_type } );" , None )
215+ if isinstance (src_conn , db .Oracle ):
216+ src_conn .query (f"DROP TABLE { src_table } " , None )
217+ else :
218+ src_conn .query (f"DROP TABLE IF EXISTS { src_table } " , None )
219+
220+ src_conn .query (f"CREATE TABLE { src_table } (id int, col { source_type } )" , None )
209221 _insert_to_table (src_conn , src_table , enumerate (sample_values , 1 ))
210222
211223 values_in_source = src_conn .query (f"SELECT id, col FROM { src_table } " , list )
212224
213- dst_conn .query (f"DROP TABLE IF EXISTS { dst_table } " , None )
214- dst_conn .query (f"CREATE TABLE { dst_table } (id int, col { target_type } );" , None )
225+ if isinstance (dst_conn , db .Oracle ):
226+ dst_conn .query (f"DROP TABLE { dst_table } " , None )
227+ else :
228+ dst_conn .query (f"DROP TABLE IF EXISTS { dst_table } " , None )
229+
230+ dst_conn .query (f"CREATE TABLE { dst_table } (id int, col { target_type } )" , None )
215231 _insert_to_table (dst_conn , dst_table , values_in_source )
216232
217233 self .table = TableSegment (self .src_conn , src_table_path , "id" , None , ("col" ,), quote_columns = False )
0 commit comments