Changeset: f566126d60ed for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f566126d60ed
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_logger.h
        sql/include/sql_catalog.h
        sql/storage/bat/bat_logger.c
        sql/storage/bat/bat_storage.c
        sql/storage/objectset.c
        sql/storage/sql_storage.h
        sql/storage/store.c
Branch: Jul2021
Log Message:

cleanup of cleanup interface, no need for commit_ts argument
pass commit_ts add tend not tstart


diffs (truncated from 347 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1072,14 +1072,12 @@ logger_read_transaction(logger *lg)
                case LOG_START:
                        if (l.id > lg->tid)
                                lg->tid = l.id;
-                       lng trans_id;
-                       if (!mnstr_readLng(lg->input_log, &trans_id) ||
-                          (tr = tr_create(tr, l.id)) == NULL) {
+                       if ((tr = tr_create(tr, l.id)) == NULL) {
                                err = LOG_ERR;
                                break;
                        }
                        if (lg->debug & 1)
-                               fprintf(stderr, "#logger tstart %d-" LLFMT 
"\n", tr->tid, trans_id);
+                               fprintf(stderr, "#logger tstart %d\n", tr->tid);
                        break;
                case LOG_END:
                        if (tr == NULL)
@@ -2537,7 +2535,7 @@ pre_allocate(logger *lg)
 }
 
 gdk_return
-log_tend(logger *lg)
+log_tend(logger *lg, ulng commit_ts)
 {
        logformat l;
        gdk_return res = GDK_SUCCEED;
@@ -2552,6 +2550,11 @@ log_tend(logger *lg)
                return logger_commit(lg);
        }
 
+       if (lg->current) {
+               lg->current->last_tid = lg->tid;
+               lg->current->last_ts = commit_ts;
+       }
+
        if (LOG_DISABLED(lg)) {
                lg->end++;
                return GDK_SUCCEED;
@@ -2727,7 +2730,7 @@ logger_find_bat(logger *lg, log_id id)
 
 
 gdk_return
-log_tstart(logger *lg, ulng commit_ts, bool flushnow)
+log_tstart(logger *lg, bool flushnow)
 {
        logformat l;
 
@@ -2738,13 +2741,9 @@ log_tstart(logger *lg, ulng commit_ts, b
                if (logger_open_output(lg) != GDK_SUCCEED)
                        return GDK_FAIL;
                while (lg->saved_id+1 < lg->id)
-                       logger_flush(lg, commit_ts);
+                       logger_flush(lg, (1ULL<<63));
                lg->flushnow = flushnow;
        }
-       if (lg->current) {
-               lg->current->last_tid = lg->tid+1;
-               lg->current->last_ts = commit_ts;
-       }
 
        if (LOG_DISABLED(lg)) {
                lg->end++;
@@ -2756,8 +2755,7 @@ log_tstart(logger *lg, ulng commit_ts, b
 
        if (lg->debug & 1)
                fprintf(stderr, "#log_tstart %d\n", lg->tid);
-       if (log_write_format(lg, &l) != GDK_SUCCEED ||
-           !mnstr_writeLng(lg->output_log, commit_ts))
+       if (log_write_format(lg, &l) != GDK_SUCCEED)
                return GDK_FAIL;
        return GDK_SUCCEED;
 }
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -68,8 +68,8 @@ gdk_export gdk_return log_delta(logger *
 /* mark end of batgroup insert or clear */
 //gdk_export gdk_return log_batgroup_end(logger *lg, oid id);
 
-gdk_export gdk_return log_tstart(logger *lg, ulng commit_ts, bool flush);
-gdk_export gdk_return log_tend(logger *lg);
+gdk_export gdk_return log_tstart(logger *lg, bool flush);
+gdk_export gdk_return log_tend(logger *lg, ulng commit_ts);
 
 gdk_export gdk_return log_sequence(logger *lg, int seq, lng id);
 gdk_export log_bid logger_find_bat(logger *lg, log_id id);
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -244,7 +244,7 @@ struct os_iter {
 typedef int (*tc_validate_fptr) (struct sql_trans *tr, struct sql_change *c, 
ulng commit_ts, ulng oldest);
 typedef int (*tc_log_fptr) (struct sql_trans *tr, struct sql_change *c);       
                                                        /* write changes to the 
log */
 typedef int (*tc_commit_fptr) (struct sql_trans *tr, struct sql_change *c, 
ulng commit_ts, ulng oldest);/* commit/rollback changes */
-typedef int (*tc_cleanup_fptr) (sql_store store, struct sql_change *c, ulng 
commit_ts, ulng oldest);   /* garbage collection, ie cleanup structures when 
possible */
+typedef int (*tc_cleanup_fptr) (sql_store store, struct sql_change *c, ulng 
oldest);   /* garbage collection, ie cleanup structures when possible */
 typedef void (*destroy_fptr)(sql_store store, sql_base *b);
 
 extern struct objectset *os_new(sql_allocator *sa, destroy_fptr destroy, bool 
temporary, bool unique, sql_store store);
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -2355,15 +2355,15 @@ bl_log_isnew(sqlstore *store)
 }
 
 static int
-bl_tstart(sqlstore *store, ulng commit_ts, bool flush)
+bl_tstart(sqlstore *store, bool flush)
 {
-       return log_tstart(store->logger, commit_ts, flush) == GDK_SUCCEED ? 
LOG_OK : LOG_ERR;
+       return log_tstart(store->logger, flush) == GDK_SUCCEED ? LOG_OK : 
LOG_ERR;
 }
 
 static int
-bl_tend(sqlstore *store)
+bl_tend(sqlstore *store, ulng commit_ts)
 {
-       return log_tend(store->logger) == GDK_SUCCEED ? LOG_OK : LOG_ERR;
+       return log_tend(store->logger, commit_ts) == GDK_SUCCEED ? LOG_OK : 
LOG_ERR;
 }
 
 static int
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -28,9 +28,9 @@ static int log_create_del(sql_trans *tr,
 static int commit_create_col(sql_trans *tr, sql_change *change, ulng 
commit_ts, ulng oldest);
 static int commit_create_idx(sql_trans *tr, sql_change *change, ulng 
commit_ts, ulng oldest);
 static int commit_create_del(sql_trans *tr, sql_change *change, ulng 
commit_ts, ulng oldest);
-static int tc_gc_col( sql_store Store, sql_change *c, ulng commit_ts, ulng 
oldest);
-static int tc_gc_idx( sql_store Store, sql_change *c, ulng commit_ts, ulng 
oldest);
-static int tc_gc_del( sql_store Store, sql_change *c, ulng commit_ts, ulng 
oldest);
+static int tc_gc_col( sql_store Store, sql_change *c, ulng oldest);
+static int tc_gc_idx( sql_store Store, sql_change *c, ulng oldest);
+static int tc_gc_del( sql_store Store, sql_change *c, ulng oldest);
 
 static int tr_merge_delta( sql_trans *tr, sql_delta *obat);
 
@@ -75,9 +75,9 @@ unlock_table(sqlstore *store, sqlid id)
 #define unlock_column(store, id) unlock_table(store, id)
 
 static int
-tc_gc_seg( sql_store Store, sql_change *change, ulng commit_ts, ulng oldest)
+tc_gc_seg( sql_store Store, sql_change *change, ulng oldest)
 {
-       (void)Store; (void)commit_ts;
+       (void)Store; 
        segment *s = change->data;
 
        if (s->ts <= oldest) {
@@ -2675,9 +2675,8 @@ commit_update_col_( sql_trans *tr, sql_c
 }
 
 static int
-tc_gc_rollbacked( sql_store Store, sql_change *change, ulng commit_ts, ulng 
oldest)
+tc_gc_rollbacked( sql_store Store, sql_change *change, ulng oldest)
 {
-       (void)commit_ts;
        sqlstore *store = Store;
 
        sql_delta *d = (sql_delta*)change->data;
@@ -2896,7 +2895,7 @@ commit_update_del( sql_trans *tr, sql_ch
 
 /* only rollback (content version) case for now */
 static int
-tc_gc_col( sql_store Store, sql_change *change, ulng commit_ts, ulng oldest)
+tc_gc_col( sql_store Store, sql_change *change, ulng oldest)
 {
        (void)Store;
        sql_column *c = (sql_column*)change->obj;
@@ -2907,8 +2906,6 @@ tc_gc_col( sql_store Store, sql_change *
        /* savepoint commit (did it merge ?) */
        if (ATOMIC_PTR_GET(&c->data) != change->data || isTempTable(c->t)) /* 
data is freed by commit */
                return 1;
-       if (commit_ts && commit_ts >= TRANSACTION_ID_BASE) /* cannot cleanup 
older stuff on savepoint commits */
-               return 0;
        sql_delta *d = (sql_delta*)change->data;
        if (d->next) {
                if (d->cs.ts > oldest)
@@ -2921,7 +2918,7 @@ tc_gc_col( sql_store Store, sql_change *
 }
 
 static int
-tc_gc_idx( sql_store Store, sql_change *change, ulng commit_ts, ulng oldest)
+tc_gc_idx( sql_store Store, sql_change *change, ulng oldest)
 {
        (void)Store;
        sql_idx *i = (sql_idx*)change->obj;
@@ -2932,8 +2929,6 @@ tc_gc_idx( sql_store Store, sql_change *
        /* savepoint commit (did it merge ?) */
        if (ATOMIC_PTR_GET(&i->data) != change->data || isTempTable(i->t)) /* 
data is freed by commit */
                return 1;
-       if (commit_ts && commit_ts >= TRANSACTION_ID_BASE) /* cannot cleanup 
older stuff on savepoint commits */
-               return 0;
        sql_delta *d = (sql_delta*)change->data;
        if (d->next) {
                if (d->cs.ts > oldest)
@@ -2946,7 +2941,7 @@ tc_gc_idx( sql_store Store, sql_change *
 }
 
 static int
-tc_gc_del( sql_store Store, sql_change *change, ulng commit_ts, ulng oldest)
+tc_gc_del( sql_store Store, sql_change *change, ulng oldest)
 {
        sqlstore *store = Store;
        sql_table *t = (sql_table*)change->obj;
@@ -2955,8 +2950,6 @@ tc_gc_del( sql_store Store, sql_change *
        /* savepoint commit (did it merge ?) */
        if (ATOMIC_PTR_GET(&t->data) != change->data || isTempTable(t)) /* data 
is freed by commit */
                return 1;
-       if (commit_ts && commit_ts >= TRANSACTION_ID_BASE) /* cannot cleanup 
older stuff on savepoint commits */
-               return 0;
        storage *d = (storage*)change->data;
        if (d->next) {
                if (d->cs.ts > oldest)
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -585,10 +585,8 @@ os_cleanup(sqlstore* store, objectversio
 }
 
 static int
-tc_gc_objectversion(sql_store store, sql_change *change, ulng commit_ts, ulng 
oldest)
+tc_gc_objectversion(sql_store store, sql_change *change, ulng oldest)
 {
-       (void) commit_ts;
-
        assert(!change->handled);
        objectversion *ov = (objectversion*)change->data;
 
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
@@ -250,8 +250,8 @@ typedef int (*logger_changes_fptr)(struc
 typedef int (*logger_get_sequence_fptr) (struct sqlstore *store, int seq, lng 
*id);
 
 typedef int (*log_isnew_fptr)(struct sqlstore *store);
-typedef int (*log_tstart_fptr) (struct sqlstore *store, ulng commit_ts, bool 
flush);
-typedef int (*log_tend_fptr) (struct sqlstore *store);
+typedef int (*log_tstart_fptr) (struct sqlstore *store, bool flush);
+typedef int (*log_tend_fptr) (struct sqlstore *store, ulng commit_ts);
 typedef lng (*log_save_id_fptr) (struct sqlstore *store);
 typedef int (*log_sequence_fptr) (struct sqlstore *store, int seq, lng id);
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1943,9 +1943,9 @@ store_exit(sqlstore *store)
                        for(node *n=store->changes->h; n; n = n->next) {
                                sql_change *c = n->data;
 
-                               if (c->cleanup && !c->cleanup(store, c, oldest, 
oldest)) {
+                               if (c->cleanup && !c->cleanup(store, c, 
oldest)) {
                                        /* try again with newer oldest, should 
cleanup any pending issues */
-                                       if (!c->cleanup(store, c, oldest+1, 
oldest+1))
+                                       if (!c->cleanup(store, c, oldest+1))
                                                printf("not deleted\n");
                                        else
                                                _DELETE(c);
@@ -2017,7 +2017,7 @@ store_resume_log(sqlstore *store)
 }
 
 static void
-store_pending_changes(sqlstore *store, ulng commit_ts, ulng oldest)
+store_pending_changes(sqlstore *store, ulng oldest)
 {
        if (!list_empty(store->changes)) { /* lets first cleanup old stuff */
                for(node *n=store->changes->h; n; ) {
@@ -2026,7 +2026,7 @@ store_pending_changes(sqlstore *store, u
 
                        if (!c->cleanup) {
                                _DELETE(c);
-                       } else if (c->cleanup && c->cleanup(store, c, 
commit_ts, oldest)) {
+                       } else if (c->cleanup && c->cleanup(store, c, oldest)) {
                                list_remove_node(store->changes, store, n);
                                _DELETE(c);
                        }
@@ -2051,7 +2051,7 @@ store_manager(sqlstore *store)
                                store_lock(store);
                                if (ATOMIC_GET(&store->nr_active) == 0) {
                                        ulng oldest = store_timestamp(store)+1;
-                                       store_pending_changes(store, oldest, 
oldest);
+                                       store_pending_changes(store, oldest);
                                }
                                store->logger_api.activate(store); /* rotate 
too new log file */
                                store_unlock(store);
@@ -3253,7 +3253,7 @@ sql_trans_rollback(sql_trans *tr)
 
                                if (!c->cleanup) {
                                        _DELETE(c);
-                               } else if (c->cleanup && c->cleanup(store, c, 
commit_ts, oldest)) {
+                               } else if (c->cleanup && c->cleanup(store, c, 
oldest)) {
                                        list_remove_node(store->changes, store, 
n);
                                        _DELETE(c);
                                }
@@ -3265,7 +3265,7 @@ sql_trans_rollback(sql_trans *tr)
 
                        if (!c->cleanup) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to