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