@@ -85,6 +85,7 @@ def __init__(
8585 self .environments_table = nullsafe_join ("." , self .schema , "_environments" )
8686 self .seeds_table = nullsafe_join ("." , self .schema , "_seeds" )
8787 self .intervals_table = nullsafe_join ("." , self .schema , "_intervals" )
88+ self .plan_dags_table = nullsafe_join ("." , self .schema , "_plan_dags" )
8889 self .versions_table = nullsafe_join ("." , self .schema , "_versions" )
8990
9091 self ._snapshot_columns_to_types = {
@@ -306,7 +307,7 @@ def _update_snapshot(self, snapshot: Snapshot) -> None:
306307 snapshot .updated_ts = now_timestamp ()
307308 self .engine_adapter .update_table (
308309 self .snapshots_table ,
309- {"snapshot" : snapshot . json ( )},
310+ {"snapshot" : _snapshot_to_json ( snapshot )},
310311 where = self ._snapshot_id_filter ([snapshot .snapshot_id ]),
311312 contains_json = True ,
312313 )
@@ -726,22 +727,22 @@ def rollback(self) -> None:
726727 """Rollback to the previous migration."""
727728 logger .info ("Starting migration rollback." )
728729 tables = (self .snapshots_table , self .environments_table , self .versions_table )
730+ optional_tables = (self .seeds_table , self .intervals_table , self .plan_dags_table )
729731 versions = self .get_versions (validate = False )
730732 if versions .schema_version == 0 :
731733 # Clean up state tables
732- for table in tables + ( self . seeds_table , self . intervals_table ) :
734+ for table in tables + optional_tables :
733735 self .engine_adapter .drop_table (table )
734736 else :
735737 if not all (self .engine_adapter .table_exists (f"{ table } _backup" ) for table in tables ):
736738 raise SQLMeshError ("There are no prior migrations to roll back to." )
737739 for table in tables :
738740 self ._restore_table (table , _backup_table_name (table ))
739741
740- if self .engine_adapter .table_exists (_backup_table_name (self .seeds_table )):
741- self ._restore_table (self .seeds_table , _backup_table_name (self .seeds_table ))
742+ for optional_table in optional_tables :
743+ if self .engine_adapter .table_exists (_backup_table_name (optional_table )):
744+ self ._restore_table (optional_table , _backup_table_name (optional_table ))
742745
743- if self .engine_adapter .table_exists (_backup_table_name (self .intervals_table )):
744- self ._restore_table (self .intervals_table , _backup_table_name (self .intervals_table ))
745746 logger .info ("Migration rollback successful." )
746747
747748 def _backup_state (self ) -> None :
@@ -751,6 +752,7 @@ def _backup_state(self) -> None:
751752 self .versions_table ,
752753 self .seeds_table ,
753754 self .intervals_table ,
755+ self .plan_dags_table ,
754756 ):
755757 if self .engine_adapter .table_exists (table ):
756758 with self .engine_adapter .transaction (TransactionType .DDL ):
@@ -1000,7 +1002,7 @@ def _snapshots_to_df(snapshots: t.Iterable[Snapshot]) -> pd.DataFrame:
10001002 "name" : snapshot .name ,
10011003 "identifier" : snapshot .identifier ,
10021004 "version" : snapshot .version ,
1003- "snapshot" : snapshot . json ( exclude = { "intervals" , "dev_intervals" } ),
1005+ "snapshot" : _snapshot_to_json ( snapshot ),
10041006 "kind_name" : snapshot .model_kind_name .value if snapshot .model_kind_name else None ,
10051007 }
10061008 for snapshot in snapshots
@@ -1033,3 +1035,7 @@ def _environment_to_df(environment: Environment) -> pd.DataFrame:
10331035
10341036def _backup_table_name (table_name : str ) -> str :
10351037 return f"{ table_name } _backup"
1038+
1039+
1040+ def _snapshot_to_json (snapshot : Snapshot ) -> str :
1041+ return snapshot .json (exclude = {"intervals" , "dev_intervals" })
0 commit comments