Changeset: fb1846604869 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fb1846604869 Branch: default Log Message:
merged with Jun2023 diffs (155 lines): diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c --- a/gdk/gdk_tracer.c +++ b/gdk/gdk_tracer.c @@ -513,6 +513,7 @@ GDKtracer_log(const char *file, const ch va_list va; char ts[TS_SIZE]; char *msg = NULL; + bool isexit; static char file_prefix[] = __FILE__; static size_t prefix_length = (size_t) -1; @@ -550,6 +551,7 @@ GDKtracer_log(const char *file, const ch sizeof(buffer) - bytes_written, fmt, va); } + isexit = strstr(msg, EXITING_MSG) != NULL; va_end(va); if (bytes_written < 0) { if ((adapter_t) ATOMIC_GET(&cur_adapter) != MBEDDED) @@ -567,7 +569,8 @@ GDKtracer_log(const char *file, const ch size_t n = strlen(buf); snprintf(buf + n, GDKMAXERRLEN - n, "%s%s: %s%s%s\n", - GDKERROR, func, msg, + isexit ? "" : GDKERROR, + func, msg, syserr ? ": " : "", syserr ? syserr : ""); } @@ -582,7 +585,7 @@ GDKtracer_log(const char *file, const ch reinit(); if (level <= M_WARNING || (ATOMIC_GET(&GDKdebug) & FORCEMITOMASK)) { - fprintf(level <= M_ERROR ? stderr : stdout, + fprintf(level <= M_ERROR && !isexit ? stderr : stdout, "#%s%s%s: %s: %s: %s%s%s\n", add_ts ? ts : "", add_ts ? ": " : "", diff --git a/monetdb5/mal/mal_exception.c b/monetdb5/mal/mal_exception.c --- a/monetdb5/mal/mal_exception.c +++ b/monetdb5/mal/mal_exception.c @@ -159,7 +159,7 @@ createException(enum malexception type, ret = createException(type, fcn, "%s", q + 2); } if (ret == NULL) - ret = createException(type, fcn, "GDK reported error: %s", p); + ret = createException(type, fcn, "GDK reported%s: %s", strstr(p, EXITING_MSG) == NULL ? " error" : "", p); GDKclrerr(); assert(ret); return ret; diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c --- a/monetdb5/mal/mal_session.c +++ b/monetdb5/mal/mal_session.c @@ -404,7 +404,7 @@ MSscheduleClient(str command, str challe c->protocol = protocol; c->blocksize = blocksize; - if (!GDKembedded() && c->initClient) { + if (c->initClient) { if ((msg = c->initClient(c, passwd, challenge, algo)) != MAL_SUCCEED) { mnstr_printf(fout, "!%s\n", msg); if (passwd) diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c --- a/sql/server/rel_optimize_proj.c +++ b/sql/server/rel_optimize_proj.c @@ -2694,15 +2694,19 @@ rel_groupby_distinct(visitor *v, sql_rel } darg = arg->h->data; - if ((found = exps_find_exp(gbe, darg))) { /* first find if the aggregate argument already exists in the grouping list */ - darg = exp_ref(v->sql, found); + if ((found = exps_find_exp(exps, darg)) == NULL) { /* not already in the groups projection list */ + if ((found = exps_find_exp(gbe, darg))) { /* first find if the aggregate argument already exists in the grouping list */ + darg = exp_ref(v->sql, found); + } else { + list_append(gbe, darg = exp_copy(v->sql, darg)); + exp_label(v->sql->sa, darg, ++v->sql->label); + darg = exp_ref(v->sql, darg); + } + list_append(exps, darg); + darg = exp_ref(v->sql, darg); } else { - list_append(gbe, darg = exp_copy(v->sql, darg)); - exp_label(v->sql->sa, darg, ++v->sql->label); - darg = exp_ref(v->sql, darg); + darg = exp_ref(v->sql, found); } - list_append(exps, darg); - darg = exp_ref(v->sql, darg); arg->h->data = darg; l = rel->l = rel_groupby(v->sql, rel->l, gbe); l->exps = exps; diff --git a/sql/test/bugs/Tests/All b/sql/test/bugs/Tests/All --- a/sql/test/bugs/Tests/All +++ b/sql/test/bugs/Tests/All @@ -115,3 +115,4 @@ rtrim_bug savepoint-release procedure-recompile rse_bug +delete-or-not-in-bug diff --git a/sql/test/bugs/Tests/delete-or-not-in-bug.test b/sql/test/bugs/Tests/delete-or-not-in-bug.test new file mode 100644 --- /dev/null +++ b/sql/test/bugs/Tests/delete-or-not-in-bug.test @@ -0,0 +1,50 @@ +statement ok +CREATE TABLE "sys"."foo" ( + "id" INTEGER NOT NULL, + "cid" INTEGER, + "ak" INTEGER, + "bk" INTEGER, + CONSTRAINT "foo_id_unique" UNIQUE ("id") +); + +statement ok +CREATE TABLE "sys"."bar" ( + "cid" INTEGER, + "akr" INTEGER, + "bkr" INTEGER +); + +statement ok +INSERT INTO foo VALUES (1, 9, 10, 12), (2, 9, 11, 13), (3, 10, 20, 25), (4, 10, 452, 435), (5, 9, 130, 140); + +statement ok +INSERT INTO bar VALUES (9, 120, 180), (3, 111, 134), (5, 183, 154), (9, 142, 182), (9, 102, 134); + +query IIII +select * FROM foo WHERE cid = 9 AND ((ak NOT IN (SELECT akr FROM bar WHERE cid = 9)) OR (bk NOT IN (SELECT bkr FROM bar WHERE cid = 9))); +---- +1 +9 +10 +12 +2 +9 +11 +13 +5 +9 +130 +140 + +statement ok +DELETE FROM foo WHERE cid = 9 AND ((ak NOT IN (SELECT akr FROM bar WHERE cid = 9)) OR (bk NOT IN (SELECT bkr FROM bar WHERE cid = 9))); + +query IIII +select * FROM foo WHERE cid = 9 AND ((ak NOT IN (SELECT akr FROM bar WHERE cid = 9)) OR (bk NOT IN (SELECT bkr FROM bar WHERE cid = 9))); +---- + +statement ok +drop table foo; + +statement ok +drop table bar; _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org