Changeset: 61783c4ab33c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/61783c4ab33c Branch: scatter Log Message:
merge diffs (138 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -541,6 +541,7 @@ gdk_return log_delta(logger *lg, BAT *ui gdk_return log_sequence(logger *lg, int seq, lng id); gdk_return log_tend(logger *lg); gdk_return log_tstart(logger *lg, ulng commit_ts, bool flush); +gdk_return logger_activate(logger *lg); lng logger_changes(logger *lg); logger *logger_create(int debug, const char *fn, const char *logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, void *funcdata); void logger_destroy(logger *lg); diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -2098,6 +2098,27 @@ logger_cleanup_range(logger *lg) } gdk_return +logger_activate(logger *lg) +{ + if (LOG_DISABLED(lg)) { + if (lg->saved_id+1 == lg->id) { + lg->saved_id++; + lg->saved_tid = lg->tid; + logger_cleanup_range(lg); + } + return GDK_SUCCEED; + } + if (lg->end > 0 && lg->saved_id+1 == lg->id) { + lg->id++; + logger_close_output(lg); + /* start new file */ + if (logger_open_output(lg) != GDK_SUCCEED) + return GDK_FAIL; + } + return GDK_SUCCEED; +} + +gdk_return logger_flush(logger *lg, ulng ts) { ulng lid = logger_next_logfile(lg, ts); diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h --- a/gdk/gdk_logger.h +++ b/gdk/gdk_logger.h @@ -50,6 +50,7 @@ gdk_export log_bid old_logger_find_bat(o gdk_export logger *logger_create(int debug, const char *fn, const char *logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, void *funcdata); gdk_export void logger_destroy(logger *lg); gdk_export gdk_return logger_flush(logger *lg, ulng saved_id); /* try too flush a part of the logs, including the passed saved_id transaction id */ +gdk_export gdk_return logger_activate(logger *lg); /* when the server has been idle, activate logger too make more cleanup possible */ gdk_export lng logger_changes(logger *lg); gdk_export int logger_sequence(logger *lg, int seq, lng *id); 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 @@ -2325,6 +2325,14 @@ bl_flush(sqlstore *store, lng save_id) } static int +bl_activate(sqlstore *store) +{ + if (store->logger) + return logger_activate(store->logger) == GDK_SUCCEED ? LOG_OK : LOG_ERR; + return LOG_OK; +} + +static int bl_changes(sqlstore *store) { return (int) MIN(logger_changes(store->logger), GDK_int_max); @@ -2745,6 +2753,7 @@ bat_logger_init( logger_functions *lf ) lf->create = bl_create; lf->destroy = bl_destroy; lf->flush = bl_flush; + lf->activate = bl_activate; lf->changes = bl_changes; lf->get_sequence = bl_get_sequence; lf->log_isnew = bl_log_isnew; diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c --- a/sql/storage/objectset.c +++ b/sql/storage/objectset.c @@ -1101,9 +1101,11 @@ os_obj_intransaction(objectset *os, stru versionhead *n = find_id(os, b->id); if (n) { - objectversion *ov = get_valid_object_id(tr, n->ov); - if (ov && os_atmc_get_state(ov) == active && ov->ts == tr->tid) - return true; + //objectversion *ov = get_valid_object_id(tr, n->ov); + objectversion *ov = n->ov; + + if (ov && os_atmc_get_state(ov) == active && ov->ts == tr->tid) + return true; } return false; } 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 @@ -243,6 +243,7 @@ typedef int (*logger_create_fptr) (struc typedef void (*logger_destroy_fptr) (struct sqlstore *store); typedef int (*logger_flush_fptr) (struct sqlstore *store, lng save_id); +typedef int (*logger_activate_fptr) (struct sqlstore *store); typedef int (*logger_cleanup_fptr) (struct sqlstore *store); typedef int (*logger_changes_fptr)(struct sqlstore *store); @@ -273,6 +274,7 @@ typedef struct logger_functions { logger_create_fptr create; logger_destroy_fptr destroy; logger_flush_fptr flush; + logger_activate_fptr activate; logger_changes_fptr changes; logger_get_sequence_fptr get_sequence; diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -2045,6 +2045,7 @@ store_manager(sqlstore *store) ulng oldest = store_timestamp(store)+1; store_pending_changes(store, oldest, oldest); } + store->logger_api.activate(store); /* rotate too new log file */ store_unlock(store); } if (GDKexiting()) diff --git a/sql/storage/store_dependency.c b/sql/storage/store_dependency.c --- a/sql/storage/store_dependency.c +++ b/sql/storage/store_dependency.c @@ -139,6 +139,7 @@ sql_trans_get_dependencies(sql_trans* tr *(sht *) v = (sht) depend_type; } else { list_destroy(dep_list); + store->table_api.rids_destroy(rs); return NULL; } list_append(dep_list, v); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list