Changeset: 61df8c14ea06 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=61df8c14ea06 Modified Files: sql/storage/objectset.c Branch: nospare Log Message:
Fix rollback. diffs (46 lines): diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c --- a/sql/storage/objectset.c +++ b/sql/storage/objectset.c @@ -326,7 +326,8 @@ os_rollback_os_id_based_cascading(object ov->id_based_head->ov = ov->id_based_older; } else { - os_rollback_name_based_terminal_decendant(ov->name_based_head->ov, store); + if (!(state & name_based_rollbacked)) + os_rollback_name_based_terminal_decendant(ov->name_based_head->ov, store); // TODO ATOMIC GET state = ov->id_based_older->state; @@ -357,7 +358,8 @@ os_rollback_os_name_based_cascading(obje ov->name_based_head->ov = ov->name_based_older; } else { - os_rollback_id_based_terminal_decendant(ov->id_based_head->ov, store); + if (!(state & id_based_rollbacked)) + os_rollback_id_based_terminal_decendant(ov->id_based_head->ov, store); // TODO ATOMIC GET state = ov->name_based_older->state; @@ -389,7 +391,10 @@ os_rollback_name_based_terminal_decendan //TODO ATOMIC SET ov->state = state; - os_rollback_id_based_terminal_decendant(ov->id_based_head->ov, store); + + if (!(state & id_based_rollbacked)) + os_rollback_id_based_terminal_decendant(ov->id_based_head->ov, store); + os_rollback_os_name_based_cascading(ov, store); } @@ -407,7 +412,9 @@ os_rollback_id_based_terminal_decendant( //TODO ATOMIC SET ov->state = state; - os_rollback_name_based_terminal_decendant(ov->name_based_head->ov, store); + if (!(state & name_based_rollbacked)) + os_rollback_name_based_terminal_decendant(ov->name_based_head->ov, store); + os_rollback_os_id_based_cascading(ov, store); } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list