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

Reply via email to