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]