Changeset: 7bb1804abbe6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7bb1804abbe6
Modified Files:
        sql/storage/objectset.c
        sql/storage/sql_storage.h
        sql/storage/store.c
Branch: nospare
Log Message:

small fixes


diffs (96 lines):

diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -497,9 +497,12 @@ tc_gc_objectversion(sql_store store, sql
 {
        (void) commit_ts;
 
+       assert(!change->handled);
        objectversion *ov = (objectversion*)change->data;
 
-       return os_cleanup( (sqlstore*) store, ov, oldest);
+       int res = os_cleanup( (sqlstore*) store, ov, oldest);
+       change->handled = (res)?true:false;
+       return res;
 }
 
 static int
@@ -509,6 +512,7 @@ tc_commit_objectversion(sql_trans *tr, s
        if (commit_ts) {
                assert(ov->ts == tr->tid);
                ov->ts = commit_ts;
+               change->committed = true;
                (void)oldest;
        }
        else {
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -489,6 +489,8 @@ typedef struct sqlstore {
 typedef struct sql_change {
        sql_base *obj;
        void *data;     /* data changes */
+       bool committed; /* commit or rollback */
+       bool handled;   /* handled in commit */
        tc_log_fptr log;                /* callback to log changes */
        tc_commit_fptr commit;  /* callback to commit or rollback the changes */
        tc_cleanup_fptr cleanup;/* callback to cleanup changes */
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2141,8 +2141,6 @@ store_exit(sqlstore *store)
                MT_lock_unset(&store->lock);
                if (store->changes) {
                        ulng oldest = store_timestamp(store)+1;
-                       if (!list_empty(store->changes))
-                               printf("pending changes %d\n", 
list_length(store->changes));
                        for(node *n=store->changes->h; n; n = n->next) {
                                sql_change *c = n->data;
 
@@ -3422,7 +3420,9 @@ sql_trans_rollback(sql_trans *tr)
                                node *next = n->next;
                                sql_change *c = n->data;
 
-                               if (c->cleanup && c->cleanup(store, c, 
commit_ts, oldest)) {
+                               if (!c->cleanup) {
+                                       _DELETE(c);
+                               } else if (c->cleanup && c->cleanup(store, c, 
commit_ts, oldest)) {
                                        list_remove_node(store->changes, store, 
n);
                                        _DELETE(c);
                                }
@@ -3432,9 +3432,11 @@ sql_trans_rollback(sql_trans *tr)
                for(node *n=nl->h; n; n = n->next) {
                        sql_change *c = n->data;
 
-                       if (c->cleanup && !c->cleanup(store, c, commit_ts, 
oldest))
+                       if (!c->cleanup) {
+                               _DELETE(c);
+                       } else if (c->cleanup && !c->cleanup(store, c, 
commit_ts, oldest)) {
                                store->changes = sa_list_append(tr->sa, 
store->changes, c);
-                       else
+                       } else
                                _DELETE(c);
                }
                list_destroy(nl);
@@ -3560,7 +3562,9 @@ sql_trans_commit(sql_trans *tr)
                        node *next = n->next;
                        sql_change *c = n->data;
 
-                       if (c->cleanup && c->cleanup(store, c, commit_ts, 
oldest)) {
+                       if (!c->cleanup) {
+                               _DELETE(c);
+                       } else if (c->cleanup && c->cleanup(store, c, 
commit_ts, oldest)) {
                                list_remove_node(store->changes, store, n);
                                _DELETE(c);
                        }
@@ -3600,7 +3604,9 @@ sql_trans_commit(sql_trans *tr)
                        node *next = n->next;
                        sql_change *c = n->data;
 
-                       if (c->cleanup && c->cleanup(store, c, commit_ts, 
oldest)) {
+                       if (!c->cleanup) {
+                               _DELETE(c);
+                       } else if (c->cleanup && c->cleanup(store, c, 
commit_ts, oldest)) {
                                _DELETE(c);
                        } else if (tr->parent) {
                                tr->parent->changes = sa_list_append(tr->sa, 
tr->parent->changes, c);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to