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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list