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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list