@@ -1797,6 +1797,14 @@ def _delete_normative_import_state(
17971797 ))
17981798
17991799
1800+ def _create_operation_owned_data_table (
1801+ connection : Any , data_table : Table , state : dict [str , Any ],
1802+ ) -> None :
1803+ """Mark ownership only after this operation successfully creates the table."""
1804+ data_table .create (connection )
1805+ state ["data_table_created" ] = True
1806+
1807+
18001808def _cleanup_import_state (
18011809 connection : Any , * , dataset_id : str , operation_id : str , data_table : Table ,
18021810 state : Mapping [str , Any ], normative : Any , legacy : tuple [Table , ...],
@@ -1824,7 +1832,7 @@ def _cleanup_import_state(
18241832 fidelity_events .c .operation_id == operation_id
18251833 ))
18261834 connection .execute (delete (operations ).where (operations .c .operation_id == operation_id ))
1827- if state ["data_table_creation_attempted " ]:
1835+ if state ["data_table_created " ]:
18281836 data_table .drop (connection , checkfirst = True )
18291837
18301838
@@ -2028,7 +2036,7 @@ def _import_cleanup_guard(
20282036 snapshot_connection : Any , pre_dolt_state : dict [str , Any ] | None ,
20292037) -> Iterable [dict [str , Any ]]:
20302038 state : dict [str , Any ] = {
2031- "data_table_creation_attempted " : False ,
2039+ "data_table_created " : False ,
20322040 "legacy_dataset_created" : False ,
20332041 "normative_dataset_creation_attempted" : False ,
20342042 "normative_dataset_id" : None ,
@@ -2377,7 +2385,7 @@ def create_wide_dataset(
23772385 normative .fidelity_event .name , normative .operation .name ,
23782386 }
23792387 preflight_state = {
2380- "data_table_creation_attempted " : False ,
2388+ "data_table_created " : False ,
23812389 "legacy_dataset_created" : False ,
23822390 "normative_dataset_creation_attempted" : False ,
23832391 "normative_dataset_id" : None ,
@@ -2554,8 +2562,9 @@ def create_wide_dataset(
25542562 raise ValueError (f"Dataset { dataset_id !r} already exists; imports never overwrite a dataset." )
25552563 if connection .execute (select (datasets .c .dataset_id ).where (datasets .c .data_table == data_table .name )).first ():
25562564 raise ValueError (f"Dataset ID { dataset_id !r} collides with an existing physical data-table name; import was not started." )
2557- mutation ["data_table_creation_attempted" ] = True
2558- data_table .create (connection )
2565+ _create_operation_owned_data_table (
2566+ connection , data_table , mutation ,
2567+ )
25592568 materialized = [
25602569 {"__case_ordinal" : ordinal , ** row }
25612570 for ordinal , row in enumerate (source_rows , start = 1 )
0 commit comments