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