@@ -140,7 +140,7 @@ def test_merge_similar_objects(test_session):
140140 rname = "qq"
141141 ch = ch1 .merge (ch2 , "emp.person.name" , rname = rname )
142142
143- assert list (ch .signals_schema .values .keys ()) == ["sys" , " emp" , rname + "emp" ]
143+ assert list (ch .signals_schema .values .keys ()) == ["emp" , rname + "emp" ]
144144
145145 empl = list (ch .to_list ())
146146 assert len (empl ) == 4
@@ -175,7 +175,7 @@ def test_merge_similar_objects_in_memory():
175175 assert ch .session .catalog .metastore .db .db_file == ":memory:"
176176 assert ch .session .catalog .warehouse .db .db_file == ":memory:"
177177
178- assert list (ch .signals_schema .values .keys ()) == ["sys" , " emp" , rname + "emp" ]
178+ assert list (ch .signals_schema .values .keys ()) == ["emp" , rname + "emp" ]
179179
180180 empl = list (ch .to_list ())
181181 assert len (empl ) == 4
@@ -198,7 +198,6 @@ def test_merge_values(test_session):
198198 ch = ch1 .merge (ch2 , "id" )
199199
200200 assert list (ch .signals_schema .values .keys ()) == [
201- "sys" ,
202201 "id" ,
203202 "descr" ,
204203 "right_id" ,
@@ -339,3 +338,42 @@ def _get_expr(chain):
339338 count += 1
340339
341340 assert count == len (team ) * len (team )
341+
342+
343+ def test_merge_with_drops_sys_columns (test_session ):
344+ left = dc .read_values (id = [1 , 1 ], lval = [10 , 20 ], session = test_session )
345+ right = dc .read_values (id = [1 , 1 ], rval = ["a" , "b" ], session = test_session )
346+
347+ merged = left .merge (right , on = "id" )
348+
349+ assert "sys" not in merged .signals_schema .values
350+
351+ cols = merged .settings (sys = True ).to_pandas (flatten = True ).columns
352+ assert all (not str (col ).startswith ("sys" ) for col in cols )
353+
354+ ds_name = "merge_left_dups_sys_check_sys"
355+ merged .save (ds_name )
356+
357+ df_with_sys = (
358+ dc .read_dataset (ds_name , session = test_session )
359+ .settings (sys = True )
360+ .to_pandas (flatten = True )
361+ )
362+
363+ sys_cols = [c for c in df_with_sys .columns if str (c ).startswith ("sys" )]
364+ assert sys_cols
365+
366+ def _col (name : str ) -> str :
367+ for col in df_with_sys .columns :
368+ if str (col ) == f"sys.{ name } " :
369+ return str (col )
370+ raise AssertionError (f"Missing sys column for { name } " )
371+
372+ sys_id_col = _col ("id" )
373+ sys_rand_col = _col ("rand" )
374+
375+ sys_ids = list (df_with_sys [sys_id_col ])
376+ assert len (sys_ids ) == len (set (sys_ids ))
377+
378+ sys_rand = list (df_with_sys [sys_rand_col ])
379+ assert len (sys_rand ) == len (set (sys_rand ))
0 commit comments