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

Reply via email to