Changeset: 15f8f49fa732 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=15f8f49fa732 Modified Files: gdk/gdk_bbp.c gdk/gdk_cross.c gdk/gdk_logger.c gdk/gdk_posix.c gdk/gdk_storage.c gdk/gdk_string.c gdk/gdk_system.c gdk/gdk_tracer.c gdk/gdk_utils.c sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_optimizer.c sql/server/rel_select.c sql/server/rel_unnest.c sql/server/sql_parser.y sql/test/BugTracker-2017/Tests/lateral.Bug-6310.stable.err sql/test/BugTracker-2017/Tests/lateral.Bug-6310.stable.out sql/test/mergetables/Tests/sqlsmith-exists2.sql sql/test/mergetables/Tests/sqlsmith-exists2.stable.out sql/test/miscellaneous/Tests/groupby_error.sql sql/test/miscellaneous/Tests/groupby_error.stable.out sql/test/miscellaneous/Tests/simple_plans.stable.out sql/test/subquery/Tests/subquery6.sql sql/test/subquery/Tests/subquery6.stable.err sql/test/subquery/Tests/subquery6.stable.out Branch: default Log Message:
Merged with Jun2020 diffs (truncated from 2127 to 300 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -652,8 +652,8 @@ fixdatebats(void) } fp = fopen(filename, "w"); if (fp == NULL) { - TRC_CRITICAL(GDK, "cannot create file %s: %s\n", - filename, GDKstrerror(errno, (char[128]){0}, 128)); + GDKsyserror("cannot create file %s\n", + filename); return GDK_FAIL; } fclose(fp); @@ -1137,7 +1137,7 @@ BBPaddfarm(const char *dirname, int role return GDK_FAIL; } } else { - GDKerror("%s: cannot create directory\n", dirname); + GDKsyserror("%s: cannot create directory\n", dirname); return GDK_FAIL; } } @@ -1161,7 +1161,6 @@ BBPaddfarm(const char *dirname, int role * database */ bbpdir = GDKfilepath(i, BATDIR, "BBP", "dir"); if (bbpdir == NULL) { - GDKerror("malloc failed\n"); return GDK_FAIL; } if (stat(bbpdir, &st) != -1 || errno != ENOENT) { @@ -1172,7 +1171,6 @@ BBPaddfarm(const char *dirname, int role GDKfree(bbpdir); bbpdir = GDKfilepath(i, BAKDIR, "BBP", "dir"); if (bbpdir == NULL) { - GDKerror("malloc failed\n"); return GDK_FAIL; } if (stat(bbpdir, &st) != -1 || errno != ENOENT) { @@ -1332,7 +1330,6 @@ BBPinit(void) if (j == i) { char *d = GDKfilepath(i, NULL, BATDIR, NULL); if (d == NULL) { - TRC_CRITICAL(GDK, "malloc failed\n"); return GDK_FAIL; } BBPdiskscan(d, strlen(d) - strlen(BATDIR)); @@ -2953,7 +2950,7 @@ BBPprepare(bool subcommit) ret = BBPrecover(0); if (ret == GDK_SUCCEED) { if (mkdir(bakdirpath, MONETDB_DIRMODE) < 0 && errno != EEXIST) { - GDKsyserror("BBPprepare: cannot create directory %s\n", bakdirpath); + GDKsyserror("cannot create directory %s\n", bakdirpath); ret = GDK_FAIL; } /* if BAKDIR already exists, don't signal error */ @@ -2963,7 +2960,7 @@ BBPprepare(bool subcommit) if (ret == GDK_SUCCEED && start_subcommit) { /* make a new SUBDIR (subdir of BAKDIR) */ if (mkdir(subdirpath, MONETDB_DIRMODE) < 0) { - GDKsyserror("BBPprepare: cannot create directory %s\n", subdirpath); + GDKsyserror("cannot create directory %s\n", subdirpath); ret = GDK_FAIL; } TRC_DEBUG(IO_, "mkdir %s = %d\n", subdirpath, (int) ret); @@ -3262,7 +3259,6 @@ force_move(int farmid, const char *srcdi strncpy(srcpath, name, len); srcpath[len] = '\0'; if(!(dstpath = GDKfilepath(farmid, dstdir, srcpath, NULL))) { - GDKsyserror("force_move: malloc fail\n"); return GDK_FAIL; } @@ -3280,7 +3276,6 @@ force_move(int farmid, const char *srcdi /* step 2: now remove the .kill file. This one is * crucial, otherwise we'll never finish recovering */ if(!(killfile = GDKfilepath(farmid, srcdir, name, NULL))) { - GDKsyserror("force_move: malloc fail\n"); return GDK_FAIL; } if (remove(killfile) != 0) { @@ -3340,6 +3335,8 @@ BBPrecover(int farmid) } dirp = opendir(bakdirpath); if (dirp == NULL) { + if (errno != ENOENT) + GDKsyserror("cannot open directory %s\n", bakdirpath); GDKfree(bakdirpath); GDKfree(leftdirpath); return GDK_SUCCEED; /* nothing to do */ @@ -3351,7 +3348,7 @@ BBPrecover(int farmid) TRC_DEBUG(IO_, "start\n"); if (mkdir(leftdirpath, MONETDB_DIRMODE) < 0 && errno != EEXIST) { - GDKsyserror("BBPrecover: cannot create directory %s\n", leftdirpath); + GDKsyserror("cannot create directory %s\n", leftdirpath); closedir(dirp); GDKfree(bakdirpath); GDKfree(leftdirpath); @@ -3450,6 +3447,8 @@ BBPrecover_subdir(void) if (subdirpath == NULL) return GDK_FAIL; dirp = opendir(subdirpath); + if (dirp == NULL && errno != ENOENT) + GDKsyserror("cannot open directory %s\n", subdirpath); GDKfree(subdirpath); if (dirp == NULL) { return GDK_SUCCEED; /* nothing to do */ @@ -3528,8 +3527,11 @@ BBPdiskscan(const char *parent, size_t b size_t dstlen = sizeof(fullname); const char *src = parent; - if (dirp == NULL) + if (dirp == NULL) { + if (errno != ENOENT) + GDKsyserror("cannot open directory %s\n", parent); return true; /* nothing to do */ + } while (*src) { *dst++ = *src++; diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c --- a/gdk/gdk_cross.c +++ b/gdk/gdk_cross.c @@ -27,7 +27,7 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l cnt1 = canditer_init(&ci1, l, sl); cnt2 = canditer_init(&ci2, r, sr); - if (max_one && cnt2 > 1) { + if (max_one && cnt1 > 0 && cnt2 > 1) { GDKerror("more than one match"); return GDK_FAIL; } diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -208,7 +208,7 @@ logbat_new(int tt, BUN size, role_t role if (role == PERSISTENT) BATmode(nb, false); } else { - fprintf(stderr, "!ERROR: logbat_new: creating new BAT[void:%s]#" BUNFMT " failed\n", ATOMname(tt), size); + TRC_CRITICAL(GDK, "creating new BAT[void:%s]#" BUNFMT " failed\n", ATOMname(tt), size); } return nb; } @@ -230,7 +230,7 @@ log_write_format(logger *l, logformat *d mnstr_writeLng(l->log, data->nr) && mnstr_writeInt(l->log, data->tid)) return GDK_SUCCEED; - fprintf(stderr, "!ERROR: log_write_format: write failed\n"); + TRC_CRITICAL(GDK, "write failed\n"); return GDK_FAIL; } @@ -243,7 +243,7 @@ log_read_string(logger *l) assert(!l->inmemory); if (mnstr_readInt(l->log, &len) != 1) { - fprintf(stderr, "!ERROR: log_read_string: read failed\n"); + TRC_CRITICAL(GDK, "read failed\n"); //MK This leads to non-repeatable log structure? return NULL; } @@ -251,14 +251,14 @@ log_read_string(logger *l) return NULL; buf = GDKmalloc(len); if (buf == NULL) { - fprintf(stderr, "!ERROR: log_read_string: malloc failed\n"); + TRC_CRITICAL(GDK, "malloc failed\n"); /* this is bad */ return (char *) -1; } if ((nr = mnstr_read(l->log, buf, 1, len)) != (ssize_t) len) { buf[len - 1] = 0; - fprintf(stderr, "!ERROR: log_read_string: couldn't read name (%s) %zd\n", buf, nr); + TRC_CRITICAL(GDK, "couldn't read name (%s) %zd\n", buf, nr); GDKfree(buf); return NULL; } @@ -276,7 +276,7 @@ log_write_string(logger *l, const char * assert(len <= INT_MAX); if (!mnstr_writeInt(l->log, (int) len) || mnstr_write(l->log, n, 1, len) != (ssize_t) len) { - fprintf(stderr, "!ERROR: log_write_string: write failed\n"); + TRC_CRITICAL(GDK, "write failed\n"); return GDK_FAIL; } return GDK_SUCCEED; @@ -348,7 +348,7 @@ log_read_seq(logger *lg, logformat *l) assert(!lg->inmemory); assert(l->nr <= (lng) INT_MAX); if (mnstr_readLng(lg->log, &val) != 1) { - fprintf(stderr, "!ERROR: log_read_seq: read failed\n"); + TRC_CRITICAL(GDK, "read failed\n"); return LOG_EOF; } @@ -378,7 +378,7 @@ log_write_id(logger *l, char tpe, oid id if (mnstr_writeChr(l->log, tpe) && mnstr_writeLng(l->log, lid)) return GDK_SUCCEED; - fprintf(stderr, "!ERROR: log_write_id: write failed\n"); + TRC_CRITICAL(GDK, "write failed\n"); return GDK_FAIL; } @@ -390,7 +390,7 @@ log_read_id(logger *lg, char *tpe, oid * assert(!lg->inmemory); if (mnstr_readChr(lg->log, tpe) != 1 || mnstr_readLng(lg->log, &lid) != 1) { - fprintf(stderr, "!ERROR: log_read_id: read failed\n"); + TRC_CRITICAL(GDK, "read failed\n"); return LOG_EOF; } *id = (oid)lid; @@ -801,7 +801,7 @@ log_read_create(logger *lg, trans *tr, c ha = buf; ta = strchr(buf, ','); if (ta == NULL) { - fprintf(stderr, "!ERROR: log_read_create: inconsistent data read\n"); + TRC_CRITICAL(GDK, "inconsistent data read\n"); return LOG_ERR; } *ta++ = 0; /* skip over , */ @@ -1077,11 +1077,11 @@ logger_open(logger *lg) } len = snprintf(id, sizeof(id), LLFMT, lg->id); if (len == -1 || len >= BUFSIZ) { - fprintf(stderr, "!ERROR: logger_open: filename is too large\n"); + TRC_CRITICAL(GDK, "filename is too large\n"); return GDK_FAIL; } if (!(filename = GDKfilepath(BBPselectfarm(PERSISTENT, 0, offheap), lg->dir, LOGFILE, id))) { - fprintf(stderr, "!ERROR: logger_open: allocation failure\n"); + TRC_CRITICAL(GDK, "allocation failure\n"); return GDK_FAIL; } @@ -1093,7 +1093,7 @@ logger_open(logger *lg) lg->end = 0; if (lg->log == NULL || mnstr_errnr(lg->log)) { - fprintf(stderr, "!ERROR: logger_open: creating %s failed\n", filename); + TRC_CRITICAL(GDK, "creating %s failed\n", filename); GDKfree(filename); return GDK_FAIL; } @@ -1153,7 +1153,7 @@ logger_readlog(logger *lg, char *filenam break; } if ((fd = getFileNo(lg->log)) < 0 || fstat(fd, &sb) < 0) { - fprintf(stderr, "!ERROR: logger_readlog: fstat on opened file %s failed\n", filename); + TRC_CRITICAL(GDK, "fstat on opened file %s failed\n", filename); logger_close(lg); GDKdebug = dbg; /* If the file could be opened, but fstat fails, @@ -1670,7 +1670,7 @@ bm_subcommit(logger *lg, BAT *list_bid, res = TMsubcommit_list(n, i); GDKfree(n); if (res != GDK_SUCCEED) - fprintf(stderr, "!ERROR: bm_subcommit: commit failed\n"); + TRC_CRITICAL(GDK, "commit failed\n"); return res; } @@ -1731,8 +1731,15 @@ logger_load(int debug, const char *fn, c if (GDKunlink(farmid, lg->dir, LOGFILE, NULL) != GDK_SUCCEED || GDKmove(farmid, lg->dir, LOGFILE, "bak", lg->dir, LOGFILE, NULL) != GDK_SUCCEED) goto error; + } else if (errno != ENOENT) { + GDKsyserror("open %s failed", bak); + goto error; } fp = fopen(filename, "r"); + if (fp == NULL && errno != ENOENT) { + GDKsyserror("open %s failed", filename); + goto error; + } } strconcat_len(bak, sizeof(bak), fn, "_catalog", NULL); @@ -1808,8 +1815,8 @@ logger_load(int debug, const char *fn, c goto error; } if ((fp = fopen(filename, "w")) == NULL) { - GDKerror("cannot create log file %s\n", - filename); + GDKsyserror("cannot create log file %s\n", + filename); goto error; } lg->id ++; @@ -2179,8 +2186,10 @@ logger_load(int debug, const char *fn, c #ifdef _MSC_VER /* work around bug in Visual Studio runtime: * fgetpos may return incorrect value */ - if ((fp1 = fopen(filename, "r")) == NULL) + if ((fp1 = fopen(filename, "r")) == NULL) { + GDKsyserror("cannot open %s\n", filename); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list