Changeset: bc01344b2d05 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bc01344b2d05
Branch: txtsim
Log Message:

merged with default


diffs (truncated from 948 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -787,6 +787,7 @@ 44e45c9a451f6afd933773094ec25723f713d3be
 44e45c9a451f6afd933773094ec25723f713d3be Jan2022_SP5_release
 43d4a717410d6f6692a16a878640fc7e0f248725 Jan2022_25
 43d4a717410d6f6692a16a878640fc7e0f248725 Jan2022_SP6_release
+700e099bfee85318da09aabcd78ec7ea6e8fb6ef Jul2021_29
 5c50a4071c86d1621e20a885a51cc36f2f23eec4 Sep2022_9
 41ca60d96bd0198ca5d74937630a442a5fbaf1cd Sep2022_11
 41ca60d96bd0198ca5d74937630a442a5fbaf1cd Sep2022_SP1_release
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3578,7 +3578,6 @@ main(int argc, char **argv)
        } else {
                if (mode == SQL) {
                        setFormatter("sql");
-                       mapi_set_size_header(mid, false);
                } else {
                        setFormatter("raw");
                        mapi_set_size_header(mid, true);
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -546,17 +546,26 @@ runMALsequence(Client cntxt, MalBlkPtr m
                                ret= createException(MAL, "mal.interpreter", 
"prematurely stopped client");
                        break;
                }
-#ifndef NDEBUG
-               if (cntxt->itrace || stk->status) {
-                       if (stk->status == 'p'){
-                               // execution is paused
+
+               if (stk->status) {
+                       /* pause procedure from SYSMON */
+                       if (stk->status == 'p') {
                                while (stk->status == 'p')
                                        MT_sleep_ms(50);
                                continue;
                        }
-                       if (stk->status == 'q')
-                               stk->cmd = 'x';
+                       /* stop procedure from SYSMON */
+                       if (stk->status == 'q') {
+                               stkpc = mb->stop;
+                               ret = createException(MAL, "mal.interpreter",
+                                                                         
"Query with tag "OIDFMT" received stop signal",
+                                                                         
mb->tag);
+                               break;
+                       }
+               }
 
+#ifndef NDEBUG
+               if (cntxt->itrace) {
                        if (stk->cmd == 0)
                                stk->cmd = cntxt->itrace;
                        mdbStep(cntxt, mb, stk, stkpc);
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
@@ -368,7 +368,7 @@ MSscheduleClient(str command, str challe
                        mnstr_printf(c->fdout, "!%s\n", s);
                        mnstr_flush(c->fdout, MNSTR_FLUSH_DATA);
                        GDKfree(s);
-                       c->mode = FINISHCLIENT;
+                       MCcloseClient(c);
                }
                if (!GDKgetenv_isyes(mal_enableflag) &&
                                (strncasecmp("sql", lang, 3) != 0 && uid != 0)) 
{
diff --git a/monetdb5/modules/kernel/CMakeLists.txt 
b/monetdb5/modules/kernel/CMakeLists.txt
--- a/monetdb5/modules/kernel/CMakeLists.txt
+++ b/monetdb5/modules/kernel/CMakeLists.txt
@@ -18,7 +18,7 @@ target_sources(kernel
   bat5.c
   algebra.c algebra.h
   group.c group.h
-  aggr.c
+  aggr.c aggr.h
   batmmath.c
   batstr.c
   batcolor.c
diff --git a/monetdb5/modules/kernel/aggr.c b/monetdb5/modules/kernel/aggr.c
--- a/monetdb5/modules/kernel/aggr.c
+++ b/monetdb5/modules/kernel/aggr.c
@@ -11,6 +11,7 @@
 #include "monetdb_config.h"
 #include "mal.h"
 #include "mal_exception.h"
+#include "aggr.h"
 
 /*
  * grouped aggregates
@@ -24,7 +25,7 @@ AGGRgrouped(bat *retval1, bat *retval2, 
                        const bat *quantile,
                        const char *malfunc)
 {
-       BAT *b, *g, *e, *s, *bn = NULL, *cnts, *q = NULL;
+       BAT *b, *g, *e, *s, *bn = NULL, *cnts = NULL, *q = NULL;
        double qvalue;
 
        /* exactly one of grpfunc1, grpfunc2 and quantilefunc is non-NULL */
@@ -124,7 +125,7 @@ AGGRsum3_int(bat *retval, const bat *bid
                                           BATgroupsum, NULL, NULL, NULL, 
"aggr.sum");
 }
 
-static str
+str
 AGGRsum3_lng(bat *retval, const bat *bid, const bat *gid, const bat *eid)
 {
        return AGGRgrouped(retval, NULL, bid, gid, eid, NULL, true, 0, TYPE_lng,
@@ -132,7 +133,7 @@ AGGRsum3_lng(bat *retval, const bat *bid
 }
 
 #ifdef HAVE_HGE
-static str
+str
 AGGRsum3_hge(bat *retval, const bat *bid, const bat *gid, const bat *eid)
 {
        return AGGRgrouped(retval, NULL, bid, gid, eid, NULL, true, 0, TYPE_hge,
diff --git a/monetdb5/modules/kernel/aggr.h b/monetdb5/modules/kernel/aggr.h
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/kernel/aggr.h
@@ -0,0 +1,17 @@
+/*
+ * SPDX-License-Identifier: MPL-2.0
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2023 MonetDB B.V.
+ */
+
+#ifndef _AGGR_H_
+#define _AGGR_H_
+
+extern str AGGRsum3_lng(bat *retval, const bat *bid, const bat *gid, const bat 
*eid);
+extern str AGGRsum3_hge(bat *retval, const bat *bid, const bat *gid, const bat 
*eid);
+
+#endif /* _AGGR_H_ */
diff --git a/monetdb5/modules/kernel/group.c b/monetdb5/modules/kernel/group.c
--- a/monetdb5/modules/kernel/group.c
+++ b/monetdb5/modules/kernel/group.c
@@ -92,7 +92,7 @@ GRPsubgroup3(bat *ngid, bat *next, bat *
        return GRPsubgroup5(ngid, next, nhis, bid, sid, gid, NULL, NULL);
 }
 
-static str
+str
 GRPsubgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *gid)
 {
        return GRPsubgroup5(ngid, next, nhis, bid, NULL, gid, NULL, NULL);
@@ -104,7 +104,7 @@ GRPgroup4(bat *ngid, bat *next, const ba
        return GRPsubgroup5(ngid, next, NULL, bid, sid, NULL, NULL, NULL);
 }
 
-static str
+str
 GRPgroup3(bat *ngid, bat *next, const bat *bid)
 {
        return GRPsubgroup5(ngid, next, NULL, bid, NULL, NULL, NULL, NULL);
diff --git a/monetdb5/modules/kernel/group.h b/monetdb5/modules/kernel/group.h
--- a/monetdb5/modules/kernel/group.h
+++ b/monetdb5/modules/kernel/group.h
@@ -17,4 +17,6 @@ mal_export str GRPsubgroup5(bat *ngid, b
                                                        const bat *bid, const 
bat *sid,
                                                        const bat *gid, const 
bat *eid, const bat *hid);
 
+extern str GRPsubgroup2(bat *ngid, bat *next, bat *nhis, const bat *bid, const 
bat *gid);
+extern str GRPgroup3(bat *ngid, bat *next, const bat *bid);
 #endif /* _GROUP_H_ */
diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -869,7 +869,11 @@ OPTpushselectImplementation(Client cntxt
                                getArg(u, 3) = getArg(q,2); /* update ids */
                                //getArg(u, 4) = getArg(s,0);
                                p = pushArgument(mb, u, getArg(s,0)); /* push 
at end */
+                               /* make sure to resolve again */
+                               u->token = ASSIGNsymbol;
                                u->typechk = TYPE_UNKNOWN;
+                       u->fcn = NULL;
+                       u->blk = NULL;
                                pushInstruction(mb,u);
                                oclean[i] = true;
                                continue;
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -4380,7 +4380,7 @@ sql_insert_check_null(backend *be, sql_t
 {
        mvc *sql = be->mvc;
        node *m, *n;
-       sql_subfunc *cnt = sql_bind_func(sql, "sys", "count", 
sql_bind_localtype("void"), NULL, F_AGGR, true);
+       sql_subfunc *cnt = NULL;
 
        for (n = ol_first_node(t->columns), m = inserts->h; n && m;
                n = n->next, m = m->next) {
@@ -4393,6 +4393,8 @@ sql_insert_check_null(backend *be, sql_t
 
                        if (!(s->key && s->nrcols == 0)) {
                                s = stmt_selectnil(be, column(be, i));
+                               if (!cnt)
+                                       cnt = sql_bind_func(sql, "sys", 
"count", sql_bind_localtype("void"), NULL, F_AGGR, true);
                                s = stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1);
                        } else {
                                sql_subfunc *isnil = sql_bind_func(sql, "sys", 
"isnull", &c->type, NULL, F_FUNC, true);
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -336,8 +336,9 @@ static int
        sqlid table_id = prp->id;
        node *n;
        int i, q, v, res = 0, added_to_cache = 0,  *lret, *rret;
-       size_t len = 1024, nr;
-       char *lname, *buf;
+       size_t len = 1024, nr, pwlen = 0;
+       char *lname = NULL, *buf = NULL, *mal_session_uuid, *err = NULL, 
*pwhash = NULL;
+       str username = NULL, password = NULL, msg = NULL;
        sql_rel *r = rel;
 
        if (table_id == 0) {
@@ -387,17 +388,25 @@ static int
        if( c->curprg == NULL) {
                GDKfree(lname);
                sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               c->curprg = backup;
                return -1;
        }
        lname[0] = 'l';
        curBlk = c->curprg->def;
        curInstr = getInstrPtr(curBlk, 0);
 
+       sql_table *rt = sql_trans_find_table(m->session->tr, table_id);
+       const char *uri = mapiuri_uri(rt->query, m->sa);
+       if (!rt) {
+               sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
+               res = -1;
+               goto cleanup;
+       }
        curInstr = relational_func_create_result_part2(curBlk, curInstr, rel2);
        if( curInstr == NULL) {
-               GDKfree(lname);
                sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
-               return -1;
+               res = -1;
+               goto cleanup;
        }
 
        /* ops */
@@ -412,9 +421,9 @@ static int
 
                        sprintf(nbuf, "A%d", i++);
                        if ((varid = newVariable(curBlk, nbuf, strlen(nbuf), 
type)) < 0) {
-                               GDKfree(lname);
                                sql_error(m, 10, SQLSTATE(42000) "Internal 
error while compiling statement: variable id too long");
-                               return -1;
+                               res = -1;
+                               goto cleanup;
                        }
                        curInstr = pushArgument(curBlk, curInstr, varid);
                        setVarType(curBlk, varid, type);
@@ -430,9 +439,9 @@ static int
                        type = newBatType(type);
                        p = newFcnCall(curBlk, batRef, newRef);
                        if (p == NULL) {
-                               GDKfree(lname);
                                sql_error(m, 10, SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-                               return -1;
+                               res = -1;
+                               goto cleanup;
                        }
                        p = pushType(curBlk, p, getBatType(type));
                        setArgType(curBlk, p, 0, type);
@@ -442,34 +451,30 @@ static int
        }
 
        /* get username / password */
-       sql_table *rt = sql_trans_find_table(m->session->tr, table_id);
-       if (!rt) {
-               sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
-               return -1;
-       }
-       str username = NULL, password = NULL;
-       str msg = remote_get(m, table_id, &username, &password);
+       msg = remote_get(m, table_id, &username, &password);
        if (msg) {
                sql_error(m, 10, "%s", msg);
                GDKfree(msg);
-               return -1;
+               msg = NULL;
+               res = -1;
+               goto cleanup;
        }
        /* q := remote.connect("uri", "username", "password", "msql"); */
        p = newStmt(curBlk, remoteRef, connectRef);
        if (p == NULL) {
-               GDKfree(lname);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to