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