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