Changeset: e234c744d32e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e234c744d32e
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_logger.h
        sql/storage/bat/bat_storage.c
Branch: pax-log
Log Message:

Introduce start and end messages for logging appends/deletes.


diffs (89 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -34,7 +34,7 @@ static gdk_return logger_del_bat(logger 
 #define LOG_DESTROY    6
 #define LOG_SEQ                7
 #define LOG_CLEAR      8
-#define LOG_ROW                9 /* per row relative small log entry */
+#define LOG_TABLE      9
 
 #ifdef NATIVE_WIN32
 #define getfilepos _ftelli64
@@ -60,7 +60,7 @@ static const char *log_commands[] = {
        "LOG_DESTROY",
        "LOG_SEQ",
        "LOG_CLEAR",
-       "LOG_ROW",
+       "LOG_TABLE",
 };
 
 typedef struct logaction {
@@ -2623,6 +2623,31 @@ log_bat_transient(logger *lg, log_id id)
        return r;
 }
 
+static gdk_return
+log_table(logger *lg, log_id id)
+{
+       gdk_return r = GDK_SUCCEED;
+       logformat l;
+       l.flag = LOG_TABLE;
+       l.id = id;
+       logger_lock(lg);
+       r = log_write_format(lg, &l);
+       logger_unlock(lg);
+       return r;
+}
+
+gdk_return
+log_table_start(logger *lg, log_id id) {
+       /*positive table id represent start of logged table*/
+       return log_table(lg, id);
+}
+
+gdk_return
+log_table_end(logger *lg, log_id id) {
+       /*negative table id represent end of logged table*/
+       return log_table(lg, -id);
+}
+
 gdk_return
 log_bat(logger *lg, BAT *b, log_id id, lng offset, lng cnt, lng total_cnt)
 {
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -63,6 +63,9 @@ gdk_export gdk_return log_bat_persists(l
 gdk_export gdk_return log_bat_transient(logger *lg, log_id id);
 gdk_export gdk_return log_delta(logger *lg, BAT *uid, BAT *uval, log_id id);
 
+gdk_export gdk_return log_table_start(logger *lg, log_id id);
+gdk_export gdk_return log_table_end(logger *lg, log_id id);
+
 /* insert/clear groups of bats */
 //gdk_export gdk_return log_batgroup(logger *lg, char tpe, oid id, bool 
cleared, lng nr_inserted, lng offset_inserted, lng nr_deleted, lng 
offset_deleted);
 /* mark end of batgroup insert or clear */
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
@@ -3865,6 +3865,8 @@ log_table_append(sql_trans *tr, sql_tabl
                return LOG_OK;
        size_t end = segs_end(segs, tr, t);
 
+       log_table_start(store->logger, t->base.id);
+
        for (node *n = ol_first_node(t->columns); n && ok; n = n->next) {
                sql_column *c = n->data;
                column_storage *cs = ATOMIC_PTR_GET(&c->data);
@@ -3917,6 +3919,10 @@ log_table_append(sql_trans *tr, sql_tabl
                        }
                }
        }
+
+       if (ok == GDK_SUCCEED)
+               ok = log_table_end(store->logger, t->base.id);
+
        return ok == GDK_SUCCEED ? LOG_OK : LOG_ERR;
 }
 
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to