Changeset: 9b22edee7ab6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9b22edee7ab6
Branch: default
Log Message:

Merge


diffs (143 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1615,7 +1615,7 @@ BUNfnd(BAT *b, const void *v)
        BATiter bi;
 
        BATcheck(b, BUN_NONE);
-       if (!v)
+       if (!v || BATcount(b) == 0)
                return r;
        if (complex_cand(b)) {
                struct canditer ci;
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1204,7 +1204,6 @@ check_version(logger *lg, FILE *fp, cons
                return GDK_FAIL;
        }
        if (version < 52300) {  /* first CATALOG_VERSION for "new" log format */
-               fclose(fp);
                lg->catalog_bid = logbat_new(TYPE_int, BATSIZE, PERSISTENT);
                lg->catalog_id = logbat_new(TYPE_int, BATSIZE, PERSISTENT);
                lg->dcatalog = logbat_new(TYPE_oid, BATSIZE, PERSISTENT);
@@ -1212,7 +1211,7 @@ check_version(logger *lg, FILE *fp, cons
                        GDKerror("cannot create catalog bats");
                        return GDK_FAIL;
                }
-               if (old_logger_load(lg, fn, logdir) != GDK_SUCCEED) {
+               if (old_logger_load(lg, fn, logdir, fp, version) != 
GDK_SUCCEED) {
                        //loads drop no longer needed catalog, snapshots bats
                        //convert catalog_oid -> catalog_id (lng->int)
                        GDKerror("Incompatible database version %06d, "
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -44,7 +44,7 @@ typedef int log_id;
 
 /* interface for the "old" logger */
 typedef struct old_logger old_logger;
-gdk_export gdk_return old_logger_load(logger *lg, const char *fn, const char 
*logdir);
+gdk_export gdk_return old_logger_load(logger *lg, const char *fn, const char 
*logdir, FILE *fp, int version);
 gdk_export log_bid old_logger_find_bat(old_logger *lg, const char *name, char 
tpe, oid id);
 
 gdk_export logger *logger_create(int debug, const char *fn, const char 
*logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr 
postfuncp, void *funcdata);
diff --git a/gdk/gdk_logger_old.c b/gdk/gdk_logger_old.c
--- a/gdk/gdk_logger_old.c
+++ b/gdk/gdk_logger_old.c
@@ -1341,16 +1341,8 @@ logger_commit(old_logger *lg)
 #endif
 
 static gdk_return
-check_version(old_logger *lg, FILE *fp)
+check_version(old_logger *lg, FILE *fp, int version)
 {
-       int version = 0;
-
-       if (fscanf(fp, "%6d", &version) != 1) {
-               GDKerror("Could not read the version number from the file 
'%slog'.\n",
-                        lg->lg->dir);
-
-               return GDK_FAIL;
-       }
        /* if these were equal we wouldn't have gotten here */
        assert(version != lg->lg->version);
 
@@ -1598,10 +1590,9 @@ bm_subcommit(old_logger *lg, BAT *list_b
  * unless running in read-only mode
  * Load data and persist it in the BATs */
 static gdk_return
-logger_load(const char *fn, char filename[FILENAME_MAX], old_logger *lg)
+logger_load(const char *fn, char filename[FILENAME_MAX], old_logger *lg, FILE 
*fp, int version)
 {
        size_t len;
-       FILE *fp = NULL;
        char bak[FILENAME_MAX];
        str filenamestr = NULL;
        log_bid snapshots_bid = 0;
@@ -1625,25 +1616,6 @@ logger_load(const char *fn, char filenam
                goto error;
        }
 
-       /* try to open logfile backup, or failing that, the file
-        * itself. we need to know whether this file exists when
-        * checking the database consistency later on */
-       if ((fp = MT_fopen(bak, "r")) != NULL) {
-               fclose(fp);
-               fp = NULL;
-               if (GDKunlink(0, lg->lg->dir, LOGFILE, NULL) != GDK_SUCCEED ||
-                   GDKmove(0, lg->lg->dir, LOGFILE, "bak", lg->lg->dir, 
LOGFILE, NULL) != GDK_SUCCEED)
-                       goto error;
-       } else if (errno != ENOENT) {
-               GDKsyserror("open %s failed", bak);
-               goto error;
-       }
-       fp = MT_fopen(filename, "r");
-       if (fp == NULL) {
-               GDKsyserror("open %s failed", filename);
-               goto error;
-       }
-
        strconcat_len(bak, sizeof(bak), fn, "_catalog_bid", NULL);
        catalog_bid = BBPindex(bak);
 
@@ -1896,7 +1868,7 @@ logger_load(const char *fn, char filenam
        }
        GDKdebug = dbg;
 
-       if (check_version(lg, fp) != GDK_SUCCEED) {
+       if (check_version(lg, fp, version) != GDK_SUCCEED) {
                goto error;
        }
 
@@ -1937,7 +1909,7 @@ logger_load(const char *fn, char filenam
 /* Initialize a new logger
  * It will load any data in the logdir and persist it in the BATs*/
 static old_logger *
-logger_new(logger *lg, const char *fn, const char *logdir)
+logger_new(logger *lg, const char *fn, const char *logdir, FILE *fp, int 
version)
 {
        old_logger *old_lg;
        char filename[FILENAME_MAX];
@@ -1974,7 +1946,7 @@ logger_new(logger *lg, const char *fn, c
                fprintf(stderr, "#logger_new dir set to %s\n", old_lg->lg->dir);
        }
 
-       if (logger_load(fn, filename, old_lg) == GDK_SUCCEED) {
+       if (logger_load(fn, filename, old_lg, fp, version) == GDK_SUCCEED) {
                return old_lg;
        }
        return NULL;
@@ -2018,10 +1990,10 @@ old_logger_destroy(old_logger *lg)
 
 /* Create a new logger */
 gdk_return
-old_logger_load(logger *lg, const char *fn, const char *logdir)
+old_logger_load(logger *lg, const char *fn, const char *logdir, FILE *fp, int 
version)
 {
        old_logger *old_lg;
-       old_lg = logger_new(lg, fn, logdir);
+       old_lg = logger_new(lg, fn, logdir, fp, version);
        if (old_lg == NULL)
                return GDK_FAIL;
        BBPrename(old_lg->catalog_bid->batCacheid, NULL);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to