MonetDB: Aug2024 - Fix some old upgrade errors, allowing chain u...

2024-07-12 Thread Sjoerd Mullender via checkin-list
Changeset: 21cf4874209b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/21cf4874209b
Modified Files:
sql/backends/monet5/sql_upgrades.c

sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128

sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: Aug2024
Log Message:

Fix some old upgrade errors, allowing chain upgrades to work.
Also approve new upgrade output.


diffs (truncated from 1414 to 300 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -7061,7 +7061,26 @@ sql_update_aug2024(Client c, mvc *sql, s
fflush(stdout);
err = SQLstatementIntern(c, query1, "update", true, 
false, NULL);
if (err == MAL_SUCCEED) {
-   const char query2[] =
+   sql_subtype tp;
+   sql_find_subtype(&tp, "smallint", 0, 0);
+   if (!sql_bind_func(sql, s->base.name, 
"generate_series", &tp, &tp, F_UNION, true, true)) {
+   sql->session->status = 0;
+   sql->errstr[0] = '\0';
+   const char query[] =
+   "create function 
sys.generate_series(first smallint, \"limit\" smallint)\n"
+   "returns table (value 
smallint)\n"
+   "external name 
generator.series;\n"
+   "create function 
sys.generate_series(first smallint, \"limit\" smallint, stepsize smallint)\n"
+   "returns table (value 
smallint)\n"
+   "external name 
generator.series;\n"
+   "update sys.functions set 
system = true where system <> true and name in ('generate_series') and 
schema_id = (select id from sys.schemas where name = 'sys');\n";
+   printf("Running database upgrade 
commands:\n%s\n", query);
+   fflush(stdout);
+   err = SQLstatementIntern(c, query, 
"update", true, false, NULL);
+   }
+   }
+   if (err == MAL_SUCCEED) {
+   const char query[] =
"create function 
sys.generate_series(first date, \"limit\" date, stepsize interval month)\n"
"returns table (value date)\n"
"external name generator.series;\n"
@@ -7090,139 +7109,170 @@ sql_update_aug2024(Client c, mvc *sql, s
"update sys.functions set system = true 
where system <> true and name = 'generate_series' and schema_id = 2000;\n";
sql->session->status = 0;
sql->errstr[0] = '\0';
-   printf("Running database upgrade 
commands:\n%s\n", query2);
+   printf("Running database upgrade 
commands:\n%s\n", query);
+ 

MonetDB: Aug2024 - Merge with Dec2023 branch.

2024-07-12 Thread Sjoerd Mullender via checkin-list
Changeset: 957365bf81e3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/957365bf81e3
Modified Files:
monetdb5/mal/mal.c
monetdb5/mal/mal_client.c
monetdb5/mal/mal_private.h
sql/backends/monet5/sql_scenario.c
tools/merovingian/daemon/merovingian.h
Branch: Aug2024
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 318 to 300 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -721,9 +721,15 @@ msab_getSingleStatus(const char *pathbuf
};
 
/* store the database name */
-   snprintf(buf, sizeof(buf), "%s/%s", pathbuf, dbname);
+   int dbnamestart;
+#ifdef _MSC_VER
+   dbnamestart = snprintf(buf, sizeof(buf), "%s/", pathbuf);
+   snprintf(buf + dbnamestart, sizeof(buf) - dbnamestart, "%s", dbname);
+#else
+   snprintf(buf, sizeof(buf), "%s/%n%s", pathbuf, &dbnamestart, dbname);
+#endif
sdb->path = strdup(buf);
-   sdb->dbname = sdb->path + strlen(sdb->path) - strlen(dbname);
+   sdb->dbname = sdb->path + dbnamestart;
 
 
/* check the state of the server by looking at its gdk lock:
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -53,12 +53,6 @@ mal_version(void)
return MONETDB5_VERSION;
 }
 
-static void
-MALprintinfo(void)
-{
-   MCprintinfo();
-}
-
 /*
  * Initialization of the MAL context
  */
@@ -100,8 +94,6 @@ mal_init(char *modules[], bool embedded,
return -1;
initNamespace();
 
-   GDKprintinforegister(MALprintinfo);
-
err = malBootstrap(modules, embedded, initpasswd);
if (err != MAL_SUCCEED) {
mal_client_reset();
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -616,40 +616,6 @@ MCvalid(Client tc)
 }
 
 void
-MCprintinfo(void)
-{
-   int nrun = 0, nfinish = 0, nblock = 0;
-
-   MT_lock_set(&mal_contextLock);
-   for (Client c = mal_clients; c < mal_clients + MAL_MAXCLIENTS; c++) {
-   switch (c->mode) {
-   case RUNCLIENT:
-   /* running */
-   nrun++;
-   if (c->idle)
-   printf("client %d, user %s, using %"PRIu64" 
bytes of transient space, idle since %s", c->idx, c->username, (uint64_t) 
ATOMIC_GET(&c->qryctx.datasize), ctime(&c->idle));
-   else
-   printf("client %d, user %s, using %"PRIu64" 
bytes of transient space\n", c->idx, c->username, (uint64_t) 
ATOMIC_GET(&c->qryctx.datasize));
-   break;
-   case FINISHCLIENT:
-   /* finishing */
-   nfinish++;
-   break;
-   case BLOCKCLIENT:
-   /* blocked */
-   nblock++;
-   break;
-   case FREECLIENT:
-   break;
-   }
-   }
-   MT_lock_unset(&mal_contextLock);
-   printf("%d active clients, %d finishing clients, %d blocked clients\n",
-  nrun, nfinish, nblock);
-}
-
-
-void
 MCsetClientInfo(Client c, const char *property, const char *value)
 {
if (strlen(property) < 7)
diff --git a/monetdb5/mal/mal_private.h b/monetdb5/mal/mal_private.h
--- a/monetdb5/mal/mal_private.h
+++ b/monetdb5/mal/mal_private.h
@@ -81,9 +81,6 @@ void mal_runtime_reset(void)
 char *dupError(const char *err)
__attribute__((__visibility__("hidden"), __returns_nonnull__));
 
-void MCprintinfo(void)
-   __attribute__((__visibility__("hidden")));
-
 void
 setPoly(mel_func *f, malType tpe)
__attribute__((__visibility__("hidden")));
diff --git a/sql/backends/monet5/UDF/pyapi3/pytypes3.c 
b/sql/backends/monet5/UDF/pyapi3/pytypes3.c
--- a/sql/backends/monet5/UDF/pyapi3/pytypes3.c
+++ b/sql/backends/monet5/UDF/pyapi3/pytypes3.c
@@ -243,8 +243,10 @@ bool PyType_IsNumpyMaskedArray(PyObject 
 {
PyObject *type = PyObject_Type(object);
PyObject *str = PyObject_Str(type);
-   bool ret = strcmp(PyUnicode_AsUTF8(str),
- "") == 0;
+   bool ret = strcmp(PyUnicode_AsUTF8(str), /* numpy < 2.0 */
+ "") == 0 ||
+   strcmp(PyUnicode_AsUTF8(str), /* numpy >= 2.0 */
+  "") == 0;
Py_DECREF(str);
Py_DECREF(type);
return ret;
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -87,10 +87,60 @@ static MT_Lock sql_contextLock = MT_LOCK
 static str SQLinit(Client c, const char *initpasswd);
 static str master_password = NULL;
 
+#include "mal.h"
+#include "mal_client.h"
+
+static void
+CLIENTpr

MonetDB: Aug2024 - Convert sql/test/clientinfo-nonadmin into a s...

2024-07-12 Thread Joeri van Ruth via checkin-list
Changeset: c9475f5c9773 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c9475f5c9773
Added Files:
sql/test/mapi/Tests/clientinfo-nonadmin.test
Removed Files:
sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py
Branch: Aug2024
Log Message:

Convert sql/test/clientinfo-nonadmin into a sqllogictest

(I wasn't aware of @connection before)


diffs (133 lines):

diff --git a/sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py 
b/sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py
deleted file mode 100644
--- a/sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py
+++ /dev/null
@@ -1,61 +0,0 @@
-
-import os
-import sys
-from typing import List, Tuple
-import pymonetdb
-
-
-def connect(remark: str, **args) -> pymonetdb.Connection:
-dbname = os.environ['TSTDB']
-mapiport = os.environ['MAPIPORT']
-conn = pymonetdb.connect(dbname, port=mapiport, autocommit=True,  **args)
-with conn.cursor() as c:
-c.execute("CALL sys.setclientinfo('ClientRemark', %s)", [remark])
-return conn
-
-def get_remarks(conn: pymonetdb.Connection) -> List[Tuple[int,str]]:
-with conn.cursor() as c:
-c.execute("SELECT sessionid, remark FROM sys.sessions ORDER BY 
sessionid")
-return c.fetchall()
-
-def assert_equal(left, right):
-if left != right:
-print(f'LEFT:  {left!r}\nRIGHT: {right!r}\n', file=sys.stderr)
-assert left == right
-
-
-###
-# Connect as admin
-
-conn0 = connect('admin 0')
-assert_equal(get_remarks(conn0), [(0, 'admin 0')])
-
-
-###
-# Create a user
-
-c0 = conn0.cursor()
-# try:
-# c0.execute('DROP USER nonadmin')# convenientduring interactive 
testing
-# except pymonetdb.Error:
-# pass
-c0.execute("CREATE USER nonadmin WITH PASSWORD 'na' NAME 'Not Admin' SCHEMA 
sys")
-
-
-###
-# Connect as that user, twice
-
-conn1 = connect('user 1', user='nonadmin', password='na')
-conn2 = connect('user 2', user='nonadmin', password='na')
-
-
-###
-# Check who can see what
-
-# admin can see both
-assert_equal(get_remarks(conn0), [(0, 'admin 0'), (1, 'user 1'), (2, 'user 
2')])
-
-# users can only see themselves
-assert_equal(get_remarks(conn1), [(1, 'user 1'), (2, 'user 2')])
-assert_equal(get_remarks(conn2), [(1, 'user 1'), (2, 'user 2')])
-
diff --git a/sql/test/mapi/Tests/clientinfo-nonadmin.test 
b/sql/test/mapi/Tests/clientinfo-nonadmin.test
new file mode 100644
--- /dev/null
+++ b/sql/test/mapi/Tests/clientinfo-nonadmin.test
@@ -0,0 +1,62 @@
+
+# admin logs in with ClientRemark and creates users
+
+statement ok
+CALL sys.setclientinfo('ClientRemark', 'admin')
+
+statement ok
+CREATE USER user1 WITH PASSWORD 'bla' NAME 'User 1' SCHEMA sys;
+
+statement ok
+CREATE USER user2 WITH PASSWORD 'bla' NAME 'User 2' SCHEMA sys;
+
+
+# user1 logs in with ClientRemark
+
+@connection(id=user1, username=user1, password=bla)
+statement ok
+CALL sys.setclientinfo('ClientRemark', 'user 1')
+
+
+# user2 logs in twice, with different ClientRemarks
+
+@connection(id=user2a, username=user2, password=bla)
+statement ok
+CALL sys.setclientinfo('ClientRemark', 'user 2a')
+
+@connection(id=user2b, username=user2, password=bla)
+statement ok
+CALL sys.setclientinfo('ClientRemark', 'user 2b')
+
+
+# Now verify what everybody sees
+
+query IT rowsort
+SELECT sessionid, remark FROM sys.sessions
+
+0
+admin
+1
+user 1
+2
+user 2a
+3
+user 2b
+
+@connection(id=user1)
+query IT rowsort
+SELECT sessionid, remark FROM sys.sessions
+
+1
+user 1
+
+@connection(id=user2a)
+query IT rowsort
+SELECT sessionid, remark FROM sys.sessions
+
+2
+user 2a
+3
+user 2b
+
+
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Export getScenarioLanguage

2024-07-12 Thread Joeri van Ruth via checkin-list
Changeset: ec523f3b884f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ec523f3b884f
Modified Files:
clients/Tests/exports.stable.out
monetdb5/mal/mal_scenario.h
Branch: Aug2024
Log Message:

Export getScenarioLanguage

so the sql backend can use it


diffs (27 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1022,6 +1022,7 @@ int getOidConstant(MalBlkPtr mb, oid val
 int getPC(MalBlkPtr mb, InstrPtr p);
 str getPipeCatalog(bat *nme, bat *def, bat *stat);
 const char *getRef;
+str getScenarioLanguage(Client c);
 int getShtConstant(MalBlkPtr mb, sht val);
 int getStrConstant(MalBlkPtr mb, str val);
 const char *getTraceRef;
diff --git a/monetdb5/mal/mal_scenario.h b/monetdb5/mal/mal_scenario.h
--- a/monetdb5/mal/mal_scenario.h
+++ b/monetdb5/mal/mal_scenario.h
@@ -37,11 +37,11 @@ typedef struct SCENARIO {
 
 mal_export Scenario getFreeScenario(void);
 mal_export Scenario findScenario(const char *nme);
+mal_export str getScenarioLanguage(Client c);
 
 #ifdef LIBMONETDB5
 extern str setScenario(Client c, const char *nme);
 extern str runScenario(Client c);
-extern str getScenarioLanguage(Client c);
 
 extern void showCurrentScenario(void);
 extern void showScenarioByName(stream *f, const char *s);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Inline CLTsessions into sql_sessions_wrap

2024-07-12 Thread Joeri van Ruth via checkin-list
Changeset: 6e71ccb990b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6e71ccb990b3
Modified Files:
clients/Tests/exports.stable.out
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/clients.h
sql/backends/monet5/sql.c
Branch: Aug2024
Log Message:

Inline CLTsessions into sql_sessions_wrap

Because in the clients module we don't have access to the be->mvc


diffs (truncated from 454 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -790,7 +790,6 @@ str AUTHunlockVault(const char *password
 str AUTHverifyPassword(const char *passwd);
 str BKCmirror(bat *ret, const bat *bid);
 str BKCnewBAT(bat *res, const int *tt, const BUN *cap, role_t role);
-str CLTsessions(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CLTshutdown(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str COPYrejects(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str COPYrejects_clear(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c
--- a/monetdb5/modules/mal/clients.c
+++ b/monetdb5/modules/mal/clients.c
@@ -773,214 +773,6 @@ CLTshutdown(Client cntxt, MalBlkPtr mb, 
return MAL_SUCCEED;
 }
 
-str
-CLTsessions(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
-   BAT *id = NULL, *user = NULL, *login = NULL, *sessiontimeout = NULL,
-   *querytimeout = NULL, *idle = NULL;
-   BAT *opt = NULL, *wlimit = NULL, *mlimit = NULL;
-   BAT *language = NULL, *peer = NULL, *hostname = NULL, *application = 
NULL, *client = NULL, *clientpid = NULL, *remark = NULL;
-   bat *idId = getArgReference_bat(stk, pci, 0);
-   bat *userId = getArgReference_bat(stk, pci, 1);
-   bat *loginId = getArgReference_bat(stk, pci, 2);
-   bat *idleId = getArgReference_bat(stk, pci, 3);
-   bat *optId = getArgReference_bat(stk, pci, 4);
-   bat *sessiontimeoutId = getArgReference_bat(stk, pci, 5);
-   bat *querytimeoutId = getArgReference_bat(stk, pci, 6);
-   bat *wlimitId = getArgReference_bat(stk, pci, 7);
-   bat *mlimitId = getArgReference_bat(stk, pci, 8);
-   bat *languageId = getArgReference_bat(stk, pci, 9);
-   bat *peerId = getArgReference_bat(stk, pci, 10);
-   bat *hostnameId = getArgReference_bat(stk, pci, 11);
-   bat *applicationId = getArgReference_bat(stk, pci, 12);
-   bat *clientId = getArgReference_bat(stk, pci, 13);
-   bat *clientpidId = getArgReference_bat(stk, pci, 14);
-   bat *remarkId = getArgReference_bat(stk, pci, 15);
-   Client c;
-   bool admin;
-   timestamp ts;
-   lng pid;
-   const char *s;
-   int timeout;
-   str msg = NULL;
-
-   (void) cntxt;
-   (void) mb;
-
-   id = COLnew(0, TYPE_int, 0, TRANSIENT);
-   user = COLnew(0, TYPE_str, 0, TRANSIENT);
-   login = COLnew(0, TYPE_timestamp, 0, TRANSIENT);
-   opt = COLnew(0, TYPE_str, 0, TRANSIENT);
-   sessiontimeout = COLnew(0, TYPE_int, 0, TRANSIENT);
-   querytimeout = COLnew(0, TYPE_int, 0, TRANSIENT);
-   wlimit = COLnew(0, TYPE_int, 0, TRANSIENT);
-   mlimit = COLnew(0, TYPE_int, 0, TRANSIENT);
-   idle = COLnew(0, TYPE_timestamp, 0, TRANSIENT);
-   language = COLnew(0, TYPE_str, 0, TRANSIENT);
-   peer = COLnew(0, TYPE_str, 0, TRANSIENT);
-   hostname = COLnew(0, TYPE_str, 0, TRANSIENT);
-   application = COLnew(0, TYPE_str, 0, TRANSIENT);
-   client = COLnew(0, TYPE_str, 0, TRANSIENT);
-   clientpid = COLnew(0, TYPE_lng, 0, TRANSIENT);
-   remark = COLnew(0, TYPE_str, 0, TRANSIENT);
-
-   if (id == NULL || user == NULL || login == NULL || sessiontimeout == 
NULL
-   || idle == NULL || querytimeout == NULL || opt == NULL || 
wlimit == NULL
-   || mlimit == NULL || language == NULL || peer == NULL || 
hostname == NULL
-   || application == NULL || client == NULL || clientpid == NULL
-   || remark == NULL) {
-   BBPreclaim(id);
-   BBPreclaim(user);
-   BBPreclaim(login);
-   BBPreclaim(sessiontimeout);
-   BBPreclaim(querytimeout);
-   BBPreclaim(idle);
-   BBPreclaim(opt);
-   BBPreclaim(wlimit);
-   BBPreclaim(mlimit);
-   BBPreclaim(language);
-   BBPreclaim(peer);
-   BBPreclaim(hostname);
-   BBPreclaim(application);
-   BBPreclaim(client);
-   BBPreclaim(clientpid);
-   BBPreclaim(remark);
-
-   throw(SQL, "sql.sessions", SQLSTATE(HY013) MAL_MALLOC_FAIL);
-   }
-
-   admin = strcmp(cntxt->username, "monetdb") == 0;
-
-   MT_lock_set(&mal_contextLock);
-   for (c = mal_clients; c < mal_clients + MAL_MAXCLIENTS; c++) {
-   

MonetDB: Aug2024 - Use proper sqlid to decide which sessions row...

2024-07-12 Thread Joeri van Ruth via checkin-list
Changeset: f6c052f76604 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f6c052f76604
Modified Files:
sql/backends/monet5/sql.c
Branch: Aug2024
Log Message:

Use proper sqlid to decide which sessions rows to show


diffs (45 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -37,6 +37,7 @@
 #include "mal_resolve.h"
 #include "mal_client.h"
 #include "mal_interpreter.h"
+#include "mal_scenario.h"
 #include "mal_profiler.h"
 #include "bat5.h"
 #include "opt_pipes.h"
@@ -3563,6 +3564,9 @@ sql_sessions_wrap(Client cntxt, MalBlkPt
bat *clientpidId = getArgReference_bat(stk, pci, 14);
bat *remarkId = getArgReference_bat(stk, pci, 15);
Client c;
+   backend *be;
+   sqlid user_id;
+   sqlid role_id;
bool admin;
timestamp ts;
lng pid;
@@ -3615,14 +3619,21 @@ sql_sessions_wrap(Client cntxt, MalBlkPt
throw(SQL, "sql.sessions", SQLSTATE(HY013) MAL_MALLOC_FAIL);
}
 
-   admin = strcmp(cntxt->username, "monetdb") == 0;
+   be = cntxt->sqlcontext;
+   user_id = be->mvc->user_id;
+   role_id = be->mvc->role_id;
+   admin = user_id == USER_MONETDB || role_id == ROLE_SYSADMIN;
 
MT_lock_set(&mal_contextLock);
for (c = mal_clients; c < mal_clients + MAL_MAXCLIENTS; c++) {
if (c->mode != RUNCLIENT)
continue;
 
-   bool allowed_to_see = admin || c == cntxt || 
strcmp(c->username, cntxt->username) == 0;
+   backend *their_be = c->sqlcontext;
+   bool allowed_to_see = admin || c == cntxt ||  
their_be->mvc->user_id == user_id;
+   // Note that their role_id is not checked. Just because we have
+   // both been granted a ROLE does not mean you are allowed to see
+   // my private details.
if (!allowed_to_see)
continue;
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Test sys.sessions row permissions interaction...

2024-07-12 Thread Joeri van Ruth via checkin-list
Changeset: a4c6641aaeac for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a4c6641aaeac
Modified Files:
sql/test/mapi/Tests/clientinfo-nonadmin.test
Branch: Aug2024
Log Message:

Test sys.sessions row permissions interaction with SET ROLE


diffs (33 lines):

diff --git a/sql/test/mapi/Tests/clientinfo-nonadmin.test 
b/sql/test/mapi/Tests/clientinfo-nonadmin.test
--- a/sql/test/mapi/Tests/clientinfo-nonadmin.test
+++ b/sql/test/mapi/Tests/clientinfo-nonadmin.test
@@ -60,3 +60,29 @@ 3
 user 2b
 
 
+# Having the same role does not mean you can see each others details
+
+statement ok
+CREATE ROLE common
+
+statement ok
+GRANT common TO user1
+
+statement ok
+GRANT common TO user2
+
+@connection(id=user1)
+statement ok
+SET ROLE common
+
+@connection(id=user2a)
+statement ok
+SET ROLE common
+
+# no user2!
+@connection(id=user1)
+query IT rowsort
+SELECT sessionid, remark FROM sys.sessions
+
+1
+user 1
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Aug2024 branch.

2024-07-12 Thread Sjoerd Mullender via checkin-list
Changeset: b997340c8c2b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b997340c8c2b
Modified Files:
sql/backends/monet5/generator/generator.c
sql/backends/monet5/sql_upgrades.c

sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128

sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Merge with Aug2024 branch.


diffs (truncated from 2421 to 300 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -721,9 +721,15 @@ msab_getSingleStatus(const char *pathbuf
};
 
/* store the database name */
-   snprintf(buf, sizeof(buf), "%s/%s", pathbuf, dbname);
+   int dbnamestart;
+#ifdef _MSC_VER
+   dbnamestart = snprintf(buf, sizeof(buf), "%s/", pathbuf);
+   snprintf(buf + dbnamestart, sizeof(buf) - dbnamestart, "%s", dbname);
+#else
+   snprintf(buf, sizeof(buf), "%s/%n%s", pathbuf, &dbnamestart, dbname);
+#endif
sdb->path = strdup(buf);
-   sdb->dbname = sdb->path + strlen(sdb->path) - strlen(dbname);
+   sdb->dbname = sdb->path + dbnamestart;
 
 
/* check the state of the server by looking at its gdk lock:
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -53,12 +53,6 @@ mal_version(void)
return MONETDB5_VERSION;
 }
 
-static void
-MALprintinfo(void)
-{
-   MCprintinfo();
-}
-
 /*
  * Initialization of the MAL context
  */
@@ -100,8 +94,6 @@ mal_init(char *modules[], bool embedded,
return -1;
initNamespace();
 
-   GDKprintinforegister(MALprintinfo);
-
err = malBootstrap(modules, embedded, initpasswd);
if (err != MAL_SUCCEED) {
mal_client_reset();
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -616,40 +616,6 @@ MCvalid(Client tc)
 }
 
 void
-MCprintinfo(void)
-{
-   int nrun = 0, nfinish = 0, nblock = 0;
-
-   MT_lock_set(&mal_contextLock);
-   for (Client c = mal_clients; c < mal_clients + MAL_MAXCLIENTS; c++) {
-   switch (c->mode) {
-   case RUNCLIENT:
-   /* running */
-   nrun++;
-   if (c->idle)
-   printf("client %d, user %s, using %"PRIu64" 
bytes of transient space, idle since %s", c->idx, c->username, (uint64_t) 
ATOMIC_GET(&c->qryctx.datasize), ctime(&c->idle));
-   else
-   printf("client %d, user %s, using %"PRIu64" 
bytes of transient space\n", c->idx, c->username, (uint64_t) 
ATOMIC_GET(&c->qryctx.datasize));
-   break;
-   case FINISHCLIENT:
-   /* finishing */
-   nfinish++;
-   break;
-   case BLOCKCLIENT:
-   /* blocked */
-   nblock++;
-   break;
-   case FREECLIENT:
-   break;
-   }
-   }
-   MT_lock_unset(&mal_contextLock);
-   printf("%d active clients, %d finishing clients, %d blo

MonetDB: Dec2023 - USR1: Print start time of currently running q...

2024-07-12 Thread Sjoerd Mullender via checkin-list
Changeset: b5f4fa97bfb2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b5f4fa97bfb2
Modified Files:
sql/backends/monet5/sql_scenario.c
Branch: Dec2023
Log Message:

USR1: Print start time of currently running query if available.


diffs (13 lines):

diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -112,6 +112,9 @@ CLIENTprintinfo(void)
if (c->idle) {
localtime_r(&c->idle, &tm);
strftime(tmbuf, sizeof(tmbuf), ", idle since %F 
%H:%M:%S%z", &tm);
+   } else if (c->lastcmd) {
+   localtime_r(&c->lastcmd, &tm);
+   strftime(tmbuf, sizeof(tmbuf), ", busy since %F 
%H:%M:%S%z", &tm);
} else
tmbuf[0] = 0;
if (c->sqlcontext && ((backend *) c->sqlcontext)->mvc 
&& ((backend *) c->sqlcontext)->mvc->session && ((backend *) 
c->sqlcontext)->mvc->session->tr && ((backend *) 
c->sqlcontext)->mvc->session->tr->active)
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - also install the cmake version file

2024-07-12 Thread Niels Nes via checkin-list
Changeset: 9c85a86a8440 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9c85a86a8440
Modified Files:
CMakeLists.txt
Branch: Aug2024
Log Message:

also install the cmake version file


diffs (15 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -182,6 +182,11 @@ install(FILES
   DESTINATION ${EXPORT_TARGET_PATH}
   COMPONENT monetdbdev)
 
+install(FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/MonetDBConfigVersion.cmake
+  DESTINATION ${EXPORT_TARGET_PATH}
+  COMPONENT monetdbdev)
+
 include(monetdb-packages)
 
 include(CTest)
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - open up deadcode elimination (needed for sub ...

2024-07-12 Thread Niels Nes via checkin-list
Changeset: 158045696244 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/158045696244
Modified Files:
sql/server/rel_optimize_others.c
sql/server/rel_optimizer.h
Branch: Aug2024
Log Message:

open up deadcode elimination (needed for sub project(s)).


diffs (36 lines):

diff --git a/sql/server/rel_optimize_others.c b/sql/server/rel_optimize_others.c
--- a/sql/server/rel_optimize_others.c
+++ b/sql/server/rel_optimize_others.c
@@ -11,6 +11,7 @@
  */
 
 #include "monetdb_config.h"
+#include "rel_optimizer.h"
 #include "rel_optimizer_private.h"
 #include "rel_exp.h"
 #include "rel_select.h"
@@ -1083,6 +1084,13 @@ rel_dce(visitor *v, global_props *gp, sq
return rel_dce_(v->sql, rel);
 }
 
+/* keep export for other projects */
+sql_rel *
+rel_deadcode_elimination(mvc *sql, sql_rel *rel)
+{
+   return rel_dce_(sql, rel);
+}
+
 run_optimizer
 bind_dce(visitor *v, global_props *gp)
 {
diff --git a/sql/server/rel_optimizer.h b/sql/server/rel_optimizer.h
--- a/sql/server/rel_optimizer.h
+++ b/sql/server/rel_optimizer.h
@@ -18,6 +18,7 @@
 
 #define NSQLREWRITERS 29
 
+extern sql_rel *rel_deadcode_elimination(mvc *sql, sql_rel *rel);
 extern sql_rel *rel_optimizer(mvc *sql, sql_rel *rel, int profile, int 
instantiate, int value_based_opt, int storage_based_opt);
 
 #endif /*_REL_OPTIMIZER_H_*/
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Use feature check instead of system check.

2024-07-12 Thread Sjoerd Mullender via checkin-list
Changeset: c4d85cb8f767 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c4d85cb8f767
Modified Files:
clients/Tests/All
sql/test/BugTracker-2022/Tests/All
Branch: Dec2023
Log Message:

Use feature check instead of system check.


diffs (24 lines):

diff --git a/clients/Tests/All b/clients/Tests/All
--- a/clients/Tests/All
+++ b/clients/Tests/All
@@ -1,6 +1,6 @@
 exports
-HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP&NOT_WIN32?MAL-signatures-hge
-!HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP&NOT_WIN32?MAL-signatures
+HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP&HAVE_CUDF?MAL-signatures-hge
+!HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP&HAVE_CUDF?MAL-signatures
 NOT_WIN32?melcheck
 mclient-uri
 testcondvar
diff --git a/sql/test/BugTracker-2022/Tests/All 
b/sql/test/BugTracker-2022/Tests/All
--- a/sql/test/BugTracker-2022/Tests/All
+++ b/sql/test/BugTracker-2022/Tests/All
@@ -9,7 +9,7 @@ pkey-restart.Bug-7263
 delete-update.Bug-7267
 having-clauses.Bug-7278
 dump-table-data.Bug-7282
-NOT_WIN32?cudf-grouped-aggr.Bug-7285
+HAVE_CUDF?cudf-grouped-aggr.Bug-7285
 create_func_with_case_and_in
 single_row_in_rel_order_by_column.Bug-7306
 push-aggr-down-removes-distinct-on-union-all.Bug-7318
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - use Tracer not printf

2024-07-12 Thread Niels Nes via checkin-list
Changeset: d2916335b3af for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d2916335b3af
Modified Files:
sql/server/rel_file_loader.c
Branch: Aug2024
Log Message:

use Tracer not printf


diffs (12 lines):

diff --git a/sql/server/rel_file_loader.c b/sql/server/rel_file_loader.c
--- a/sql/server/rel_file_loader.c
+++ b/sql/server/rel_file_loader.c
@@ -40,7 +40,7 @@ fl_register(char *name, fl_add_types_fpt
 {
file_loader_t *fl = fl_find(name);
if (fl) {
-   printf("re-registering %s\n", name);
+   TRC_WARNING(SQL_TRANS,"file_loader re-registering %s\n", name);
GDKfree(fl->name);
fl->name = NULL;
}
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org