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

Reply via email to