Changeset: 49eb9221eac3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=49eb9221eac3
Modified Files:
gdk/gdk_logger.c
Branch: transaction-replication
Log Message:
Pull out finding the persistent catalog in a separate function
diffs (88 lines):
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1185,6 +1185,43 @@ logger_create_catalog_file(int debug, lo
return 1;
}
+/* find the persistent catalog. As non persistent bats
+ * require a logical reference we also add a logical
+ * reference for the persistent bats */
+static int
+logger_find_persistent_catalog(logger *lg, char *fn, FILE *fp, char *bak, bat
*catalog_bid, bat *catalog_nme) {
+ BUN p, q;
+ BAT *b = BATdescriptor(*catalog_bid), *n;
+ if (b == 0)
+ logger_fatal("Logger_new: inconsistent database, catalog does
not exist", 0, 0, 0);
+
+ snprintf(bak, BUFSIZ, "%s_catalog_nme", fn);
+ n = BATdescriptor(*catalog_nme);
+ if (n == 0)
+ logger_fatal("Logger_new: inconsistent database, catalog_nme
does not exist", 0, 0, 0);
+
+ /* the catalog exists, and so should the log file */
+ if (fp == NULL) {
+ logger_fatal(
+ "logger_new: there is a logger catalog, but no
log file.\n"
+ "Are you sure you are using the
correct combination of database\n"
+ "(--dbpath) and log directory
(--set %s_logdir)?\n"
+ "If you have done a recent
update of the server, it may be that your\n"
+ "logs are in an old location.
You should then either use\n"
+ "--set %s_logdir=<path to old
log directory> or move the old log\n"
+ "directory to the new location
(%s).\n", fn, fn,
+ lg->dir);
+ return 0;
+ }
+ lg->catalog_bid = b;
+ lg->catalog_nme = n;
+ BATloop(b, p, q) {
+ bat bid = *(log_bid *) Tloc(b, p);
+ BBPincref(bid, TRUE);
+ }
+ return 1;
+}
+
static logger *
logger_new(int debug, char *fn, logger_settings *log_settings, int version,
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp)
{
@@ -1270,39 +1307,10 @@ logger_new(int debug, char *fn, logger_s
goto error;
}
} else {
- /* find the persistent catalog. As non persistent bats
- * require a logical reference we also add a logical
- * reference for the persistent bats */
- BUN p, q;
- BAT *b = BATdescriptor(catalog_bid), *n;
- if (b == 0)
- logger_fatal("Logger_new: inconsistent database,
catalog does not exist",0,0,0);
-
- snprintf(bak, BUFSIZ, "%s_catalog_nme", fn);
catalog_nme = BBPindex(bak);
- n = BATdescriptor(catalog_nme);
- if (n == 0)
- logger_fatal("Logger_new: inconsistent database,
catalog_nme does not exist",0,0,0);
-
- /* the catalog exists, and so should the log file */
- if (fp == NULL) {
- logger_fatal("logger_new: there is a logger catalog,
but no log file.\n"
- "Are you sure you are using the correct
combination of database\n"
- "(--dbpath) and log directory (--set
%s_logdir)?\n"
- "If you have done a recent update of the
server, it may be that your\n"
- "logs are in an old location. You should
then either use\n"
- "--set %s_logdir=<path to old log
directory> or move the old log\n"
- "directory to the new location (%s).\n",
- fn, fn, lg->dir);
+ if (!logger_find_persistent_catalog(lg, fn, fp, bak,
&catalog_bid, &catalog_nme)) {
goto error;
}
- lg->catalog_bid = b;
- lg->catalog_nme = n;
- BATloop(b, p, q) {
- bat bid = *(log_bid *) Tloc(b, p);
-
- BBPincref(bid, TRUE);
- }
}
seqs_id = logger_find_bat(lg, "seqs_id");
if (seqs_id == 0) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list