1717 ClickHouseRecallViewEquivalenceTestCase ,
1818)
1919from tests .e2e .src .sqlbuild .cli .commands .main .clickhouse .helpers import (
20+ RECALL_SCHEMA_VERSION ,
2021 RECALL_VIEWS ,
22+ column_names ,
2123 create_previous_views ,
2224 described ,
25+ described_except ,
2326 differing_rows ,
2427 duplicate_recall_rows ,
2528 execute_clickhouse_sql ,
@@ -206,6 +209,19 @@ def test_given_a_reader_when_querying_then_pinned_settings_apply_unless_it_may_n
206209 ["failed" ],
207210 ["running" ],
208211 ],
212+ expected_added_columns = (
213+ (
214+ ("origin" , "Nullable(String)" ),
215+ ("command_mode" , "Nullable(String)" ),
216+ ("integration" , "Nullable(String)" ),
217+ ("integration_job" , "Nullable(String)" ),
218+ ("integration_run_id" , "Nullable(String)" ),
219+ ("integration_retry" , "Nullable(Int64)" ),
220+ ),
221+ (),
222+ (),
223+ (),
224+ ),
209225 ),
210226 ],
211227 ids = lambda case : case .description ,
@@ -230,22 +246,40 @@ def test_given_representative_invocations_when_views_are_rewritten_then_rows_and
230246 statuses : list [list [object ]] = recall_rows (
231247 project_dir , "SELECT status FROM invocations ORDER BY status"
232248 )
249+ previous_columns : list [tuple [str , ...]] = [
250+ column_names (
251+ config = clickhouse_e2e_config , relation = f"{ recall_database } .previous_{ view } "
252+ )
253+ for view in test_case .replaced_views
254+ ]
233255 against_previous : list [int ] = [
234256 differing_rows (
235257 config = clickhouse_e2e_config ,
236258 left = f"{ recall_database } .{ view } " ,
237259 right = f"{ recall_database } .previous_{ view } " ,
238260 settings = {"join_use_nulls" : 1 },
261+ columns = columns ,
262+ )
263+ for view , columns in zip (test_case .replaced_views , previous_columns , strict = True )
264+ ]
265+ compared : list [tuple [tuple [tuple [object , ...], ...], tuple [tuple [object , ...], ...]]] = [
266+ described_except (
267+ config = clickhouse_e2e_config ,
268+ relation = f"{ recall_database } .{ view } " ,
269+ previous = f"{ recall_database } .previous_{ view } " ,
239270 )
240271 for view in test_case .replaced_views
241272 ]
242273 types : list [bool ] = [
243- described ( config = clickhouse_e2e_config , relation = f" { recall_database } . { view } " )
274+ kept
244275 == described (
245276 config = clickhouse_e2e_config , relation = f"{ recall_database } .previous_{ view } "
246277 )
247- for view in test_case .replaced_views
278+ for view , ( kept , _ ) in zip ( test_case .replaced_views , compared , strict = True )
248279 ]
280+ added : tuple [tuple [tuple [object , ...], ...], ...] = tuple (
281+ added_columns for _ , added_columns in compared
282+ )
249283 finally :
250284 os .killpg (running .pid , signal .SIGKILL )
251285 _ = running .wait (timeout = 30 )
@@ -277,8 +311,9 @@ def test_given_representative_invocations_when_views_are_rewritten_then_rows_and
277311 left = f"{ recall_database } .{ view } " ,
278312 right = f"{ recall_database } .previous_{ view } " ,
279313 settings = {"join_use_nulls" : 1 },
314+ columns = columns ,
280315 )
281- for view in test_case .replaced_views
316+ for view , columns in zip ( test_case .replaced_views , previous_columns , strict = True )
282317 ]
283318 counts_with_duplicates : list [bool ] = [
284319 fetch_clickhouse_rows (
@@ -293,6 +328,7 @@ def test_given_representative_invocations_when_views_are_rewritten_then_rows_and
293328 assert statuses == test_case .expected_statuses
294329 assert against_previous == [0 for _ in test_case .replaced_views ]
295330 assert types == [True for _ in test_case .replaced_views ]
331+ assert added == test_case .expected_added_columns
296332 assert without_join_nulls == [0 for _ in test_case .all_views ]
297333 assert with_duplicates == [0 for _ in test_case .all_views ]
298334 assert previous_with_duplicates == [0 for _ in test_case .replaced_views ]
@@ -354,9 +390,9 @@ def test_given_one_invocation_lookup_when_planned_then_each_table_is_read_once_b
354390 expected_ddl_fragments = (
355391 "CREATE OR REPLACE VIEW `{database}`.`invocations`" ,
356392 "CREATE OR REPLACE VIEW `{database}`.`statements`" ,
357- "SELECT 'schema', 'schema_version', '4 '" ,
393+ f "SELECT 'schema', 'schema_version', '{ RECALL_SCHEMA_VERSION } '" ,
358394 ),
359- expected_version = ((4 ,),),
395+ expected_version = ((RECALL_SCHEMA_VERSION ,),),
360396 ),
361397 ],
362398 ids = lambda case : case .description ,
0 commit comments