MonetDB: nilmask - small steps towards unsigned types

2024-06-17 Thread Niels Nes via checkin-list
Changeset: 8f85d1dd4e0f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8f85d1dd4e0f
Modified Files:
gdk/gdk.h
gdk/gdk_atoms.c
sql/common/sql_types.c
Branch: nilmask
Log Message:

small steps towards unsigned types


diffs (152 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -431,15 +431,20 @@ enum {
TYPE_msk,   /* bit mask */
TYPE_bit,   /* TRUE, FALSE, or nil */
TYPE_bte,
+   TYPE_ubte,
TYPE_sht,
+   TYPE_usht,
TYPE_int,
+   TYPE_uint,
TYPE_oid,
TYPE_ptr,   /* C pointer! */
TYPE_flt,
TYPE_dbl,
TYPE_lng,
+   TYPE_ulng,
 #ifdef HAVE_HGE
TYPE_hge,
+   TYPE_uhge,
 #endif
TYPE_date,
TYPE_daytime,
@@ -718,6 +723,7 @@ typedef struct {
bool key:1, /* no duplicate values present */
nonil:1,/* there are no nils in the column */
nil:1,  /* there is a nil in the column */
+   nilmask:1,  /* bat has nils seperated */
sorted:1,   /* column is sorted in ascending order */
revsorted:1,/* column is sorted in descending order */
ascii:1;/* string column is fully ASCII (7 bit) */
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -1691,6 +1691,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) bteCmp,
.atomHash = (BUN (*)(const void *)) bteHash,
},
+   [TYPE_ubte] = {
+   .name = "ubte",
+   .storage = TYPE_bte,
+   .linear = true,
+   .size = sizeof(bte),
+   .atomNull = NULL,
+   .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, 
bool)) bteFromStr,
+   .atomToStr = (ssize_t (*)(char **, size_t *, const void *, 
bool)) bteToStr,
+   .atomRead = (void *(*)(void *, size_t *, stream *, size_t)) 
bteRead,
+   .atomWrite = (gdk_return (*)(const void *, stream *, size_t)) 
bteWrite,
+   .atomCmp = (int (*)(const void *, const void *)) bteCmp,
+   .atomHash = (BUN (*)(const void *)) bteHash,
+   },
[TYPE_sht] = {
.name = "sht",
.storage = TYPE_sht,
@@ -1704,6 +1717,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) shtCmp,
.atomHash = (BUN (*)(const void *)) shtHash,
},
+   [TYPE_usht] = {
+   .name = "usht",
+   .storage = TYPE_sht,
+   .linear = true,
+   .size = sizeof(sht),
+   .atomNull = NULL,
+   .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, 
bool)) shtFromStr,
+   .atomToStr = (ssize_t (*)(char **, size_t *, const void *, 
bool)) shtToStr,
+   .atomRead = (void *(*)(void *, size_t *, stream *, size_t)) 
shtRead,
+   .atomWrite = (gdk_return (*)(const void *, stream *, size_t)) 
shtWrite,
+   .atomCmp = (int (*)(const void *, const void *)) shtCmp,
+   .atomHash = (BUN (*)(const void *)) shtHash,
+   },
[TYPE_int] = {
.name = "int",
.storage = TYPE_int,
@@ -1717,6 +1743,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) intCmp,
.atomHash = (BUN (*)(const void *)) intHash,
},
+   [TYPE_uint] = {
+   .name = "uint",
+   .storage = TYPE_int,
+   .linear = true,
+   .size = sizeof(int),
+   .atomNull = NULL,
+   .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, 
bool)) intFromStr,
+   .atomToStr = (ssize_t (*)(char **, size_t *, const void *, 
bool)) intToStr,
+   .atomRead = (void *(*)(void *, size_t *, stream *, size_t)) 
intRead,
+   .atomWrite = (gdk_return (*)(const void *, stream *, size_t)) 
intWrite,
+   .atomCmp = (int (*)(const void *, const void *)) intCmp,
+   .atomHash = (BUN (*)(const void *)) intHash,
+   },
[TYPE_oid] = {
.name = "oid",
.linear = true,
@@ -1796,6 +1835,19 @@ atomDesc BATatoms[MAXATOMS] = {
.atomCmp = (int (*)(const void *, const void *)) lngCmp,
.atomHash = (BUN (*)(const void *)) lngHash,
},
+   [TYPE_ulng] = {
+   .name = "ulng",
+   .storage = TYPE_lng,
+   .linear = true,
+   .size = sizeof(lng),
+   .atomNull = NULL,
+   .atomFromStr = (ssize_t (*)(const char *, size_t *, void **, 
bool)) lngFromStr,
+   .atomToStr = (ssize_t (*)(char **, size_t *, const void *, 
bool

MonetDB: Dec2023 - Graft changeset 91425:e1cf401e08b1

2024-06-17 Thread Lucas Pereira via checkin-list
Changeset: 12e11dbf2958 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/12e11dbf2958
Modified Files:
sql/include/sql_catalog.h
sql/storage/objectset.c
sql/storage/store.c
Branch: Dec2023
Log Message:

Graft changeset 91425:e1cf401e08b1


diffs (61 lines):

diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -300,6 +300,8 @@ typedef struct sql_schema {
 } sql_schema;
 
 typedef struct sql_catalog {
+   ATOMIC_TYPE schema_version;
+
struct objectset *schemas;
struct objectset *objects;
 } sql_catalog;
@@ -753,6 +755,7 @@ typedef struct sql_session {
char *def_schema_name; /* users default schema name */
char *schema_name; /* transaction's schema name */
sql_schema *schema;
+   ATOMIC_TYPE schema_version;
 
char ac_on_commit;  /* if 1, auto_commit should be enabled on
   commit, rollback, etc. */
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -643,6 +643,7 @@ tc_commit_objectversion(sql_trans *tr, s
(void)oldest;
if (!tr->parent)
change->obj->new = 0;
+   ATOMIC_INC(&tr->cat->schema_version);
}
else {
os_rollback(ov, tr->store);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3837,6 +3837,7 @@ sql_trans_create_(sqlstore *store, sql_t
store->cat = tr->cat = ZNEW(sql_catalog);
store->cat->schemas = os_new(NULL, (destroy_fptr) 
&schema_destroy, false, true, true, true, store);
store->cat->objects = os_new(NULL, (destroy_fptr) &key_destroy, 
false, false, true, false, store);
+   ATOMIC_INIT(&store->cat->schema_version, 0);
}
tr->tmp = store->tmp;
TRC_DEBUG(SQL_STORE, "New transaction: %p\n", tr);
@@ -7245,13 +7246,17 @@ sql_trans_begin(sql_session *s)
}
tr->active = 1;
 
+   int res = ATOMIC_GET(&s->schema_version) ?
+   ATOMIC_GET(&s->schema_version) != 
ATOMIC_GET(&tr->cat->schema_version) : 0;
+   ATOMIC_SET(&s->schema_version, tr->cat->schema_version);
+
ATOMIC_INC(&store->nr_active);
list_append(store->active, tr);
 
TRC_DEBUG(SQL_STORE, "Exit sql_trans_begin for transaction: " ULLFMT 
"\n", tr->tid);
store_unlock(store);
s->status = tr->status = 0;
-   return 0;
+   return res;
 }
 
 int
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Add test for #7537

2024-06-17 Thread Lucas Pereira via checkin-list
Changeset: 7b48eb76c4e2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7b48eb76c4e2
Added Files:
sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test
Modified Files:
sql/test/BugTracker-2024/Tests/All
Branch: Dec2023
Log Message:

Add test for #7537


diffs (32 lines):

diff --git 
a/sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test 
b/sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test
@@ -0,0 +1,19 @@
+@connection(id=c1, username=monetdb, password=monetdb)
+statement ok
+create table t(c int)
+
+@connection(id=c1, username=monetdb, password=monetdb)
+statement ok
+prepare select c * ? from t
+
+@connection(id=c1, username=monetdb, password=monetdb)
+statement ok
+exec 0(1)
+
+@connection(id=c2, username=monetdb, password=monetdb)
+statement ok
+drop table t
+
+@connection(id=c1, username=monetdb, password=monetdb)
+statement error 42S02!SELECT: no such table 't'
+exec 0(1)
diff --git a/sql/test/BugTracker-2024/Tests/All 
b/sql/test/BugTracker-2024/Tests/All
--- a/sql/test/BugTracker-2024/Tests/All
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -56,3 +56,4 @@ 7511-password-hash-missing-error
 7512-concurrent-globaltmp-instantiate-crash
 7513-uri-authority-parse-issue
 7528-jarowinkler-null
+7537-prepare_stmt_with_dropped_table
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Merge with Dec2023

2024-06-17 Thread Lucas Pereira via checkin-list
Changeset: 37ad28092f31 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/37ad28092f31
Modified Files:
sql/include/sql_catalog.h
sql/storage/objectset.c
sql/storage/store.c
sql/test/BugTracker-2024/Tests/All
Branch: Aug2024
Log Message:

Merge with Dec2023


diffs (32 lines):

diff --git 
a/sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test 
b/sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/7537-prepare_stmt_with_dropped_table.test
@@ -0,0 +1,19 @@
+@connection(id=c1, username=monetdb, password=monetdb)
+statement ok
+create table t(c int)
+
+@connection(id=c1, username=monetdb, password=monetdb)
+statement ok
+prepare select c * ? from t
+
+@connection(id=c1, username=monetdb, password=monetdb)
+statement ok
+exec 0(1)
+
+@connection(id=c2, username=monetdb, password=monetdb)
+statement ok
+drop table t
+
+@connection(id=c1, username=monetdb, password=monetdb)
+statement error 42S02!SELECT: no such table 't'
+exec 0(1)
diff --git a/sql/test/BugTracker-2024/Tests/All 
b/sql/test/BugTracker-2024/Tests/All
--- a/sql/test/BugTracker-2024/Tests/All
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -66,3 +66,4 @@ 7535-create-view-groupby-func
 7536-mclient-forgets-to-flush
 7538-reduce-cast
 7539-is-distinct-from
+7537-prepare_stmt_with_dropped_table
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Aug2024

2024-06-17 Thread Lucas Pereira via checkin-list
Changeset: 272c586a7ca4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/272c586a7ca4
Modified Files:
sql/server/rel_select.c
sql/server/sql_parser.y
sql/storage/store.c
Branch: default
Log Message:

Merge with Aug2024


diffs (truncated from 1397 to 300 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3879,6 +3879,8 @@ main(int argc, char **argv)
}
 
mapi_destroy(mid);
+   if (toConsole != stdout_stream && toConsole != stderr_stream)
+   close_stream(toConsole);
mnstr_destroy(stdout_stream);
mnstr_destroy(stderr_stream);
if (priv.buf != NULL)
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -88,7 +88,7 @@ SQLhelp sqlhelp1[] = {
 "ALTER USER ident\n"
 "[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string]\n"
 "[SET SCHEMA ident] [SCHEMA PATH string] [DEFAULT ROLE ident]\n"
-"[MAX_MEMORY posbytes | NO MAX_MEMORY] [MAX_WORKERS poscount | NO 
MAX_WORKERS]",
+"[MAX_MEMORY posbytes | MAX_MEMORY sizestr | NO MAX_MEMORY] 
[MAX_WORKERS poscount | NO MAX_WORKERS]",
 "ident",
 "See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"},
{"ANALYZE",
@@ -252,7 +252,7 @@ SQLhelp sqlhelp1[] = {
{"CREATE USER",
 "Create a new database user",
 "CREATE USER ident WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string NAME 
string [SCHEMA ident] [SCHEMA PATH string]\n"
-"[MAX_MEMORY posbytes | NO MAX_MEMORY] [MAX_WORKERS poscount | NO 
MAX_WORKERS]\n"
+"[MAX_MEMORY posbytes | MAX_MEMORY sizestr | NO MAX_MEMORY] 
[MAX_WORKERS poscount | NO MAX_WORKERS]\n"
 "[OPTIMIZER string] [DEFAULT ROLE ident]",
 "ident",
 "See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"},
diff --git a/clients/mapilib/Tests/tlssecurity.py 
b/clients/mapilib/Tests/tlssecurity.py
--- a/clients/mapilib/Tests/tlssecurity.py
+++ b/clients/mapilib/Tests/tlssecurity.py
@@ -14,10 +14,8 @@ import os
 import re
 import subprocess
 import sys
-import threading
 
-sys.path.append(os.environ.get('TSTSRCDIR','.'))
-import tlstester
+from MonetDBtesting.tlstester import TLSTesterClient
 
 level = logging.WARNING
 # if sys.platform == 'win32':
@@ -27,45 +25,20 @@ if '-v' in sys.argv:
 #level = logging.DEBUG
 logging.basicConfig(level=level)
 
+# A tmpdir to write certificates to
 tgtdir = os.environ['TSTTRGDIR']
 assert os.path.isdir(tgtdir)
+scratchdir = os.path.join(tgtdir, "scratch")
+logging.debug(f"scratchdir={scratchdir}")
 
-hostnames = ['localhost']
-# Generate certificates and write them to the scratch dir
-# Write them to the scratch dir for inspection by the user.
-certs = tlstester.Certs(hostnames)
-certsdir = os.path.join(tgtdir, "certs")
-try:
-os.mkdir(certsdir)
-except FileExistsError:
-pass
-count = 0
-for name, content in certs.all().items():
-with open(os.path.join(certsdir, name), "wb") as a:
-a.write(content)
-count += 1
-logging.debug(f"Wrote {count} files to {certsdir}")
+tlstester = TLSTesterClient(scratchdir)
+
 
 def certpath(name):
-return os.path.join(certsdir, name)
-def certbytes(name):
-filename = certpath(name)
-with open(filename, 'rb') as f:
-return f.read()
-
-# Start the worker threads
-
-server = tlstester.TLSTester(
-certs=certs,
-listen_addr='127.0.0.1',
-preassigned=dict(),
-sequential=False,
-hostnames=hostnames)
-server_thread = threading.Thread(target=server.serve_forever, daemon=True)
-server_thread.start()
+return tlstester.download(name)
 
 def attempt(experiment: str, portname: str, expected_error_regex: str, 
tls=True, host='localhost', **params):
-port = server.get_port(portname)
+port = tlstester.get_port(portname)
 scheme = 'monetdbs' if tls else 'monetdb'
 url = f"{scheme}://{host}:{port}/demo"
 if params:
@@ -197,7 +170,7 @@ attempt('connect_server_name', 'sni', No
 # Connect to port 'server1' over TLS, with certhash set to a prefix of the hash
 # of the server certificate in DER form. Have a succesful MAPI exchange.
 
-server1hash = sha256(certs.get_file('server1.der')).hexdigest()
+server1hash = sha256(tlstester.fetch('server1.der')).hexdigest()
 attempt('connect_right_hash', 'server1', None, certhash='sha256:' + 
server1hash[:6])
 
 # connect_wrong_hash
@@ -218,7 +191,7 @@ attempt('connect_wrong_hash', 'server1',
 # Connect to port 'server1' over TLS, with certhash set to a prefix of the hash
 # of the CA1 certificate in DER form. This should fail.
 
-ca1hash = sha256(certs.get_file('ca1.der')).hexdigest()
+ca1hash = sha256(tlstester.fetch('ca1.der')).hexdigest()
 attempt('connect_ca_hash', 'server1', "does not match certhash", 

MonetDB: nilmask - merged with default

2024-06-17 Thread Niels Nes via checkin-list
Changeset: f016580a6ce2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f016580a6ce2
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
gdk/gdk.h
gdk/gdk_batop.c
sql/backends/monet5/sql.c
sql/include/sql_catalog.h
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_storage.h
sql/storage/sql_storage.h
sql/storage/store.c
Branch: nilmask
Log Message:

merged with default


diffs (truncated from 3864 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -49815,8 +49815,13 @@ SQLstddev_pop;
 return the standard deviation population of groups
 sql
 stop_vacuum
+unsafe pattern sql.stop_vacuum(X_0:str, X_1:str):void
+SQLstr_stop_vacuum;
+stop auto vacuum
+sql
+stop_vacuum
 unsafe pattern sql.stop_vacuum(X_0:str, X_1:str, X_2:str):void
-SQLstr_column_stop_vacuum;
+SQLstr_stop_vacuum;
 stop auto vacuum
 sql
 storage
@@ -49975,13 +49980,23 @@ SYSupdate_tables;
 Procedure triggered on update of the sys._tables table
 sql
 vacuum
+unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:int):void
+SQLstr_auto_vacuum;
+auto vacuum string column of given table with interval(sec)
+sql
+vacuum
 unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str, X_3:int):void
-SQLstr_column_auto_vacuum;
+SQLstr_auto_vacuum;
 auto vacuum string column with interval(sec)
 sql
 vacuum
+unsafe pattern sql.vacuum(X_0:str, X_1:str):void
+SQLstr_vacuum;
+vacuum a string column
+sql
+vacuum
 unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str):void
-SQLstr_column_vacuum;
+SQLstr_vacuum;
 vacuum a string column
 sql
 variance
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -38225,8 +38225,13 @@ SQLstddev_pop;
 return the standard deviation population of groups
 sql
 stop_vacuum
+unsafe pattern sql.stop_vacuum(X_0:str, X_1:str):void
+SQLstr_stop_vacuum;
+stop auto vacuum
+sql
+stop_vacuum
 unsafe pattern sql.stop_vacuum(X_0:str, X_1:str, X_2:str):void
-SQLstr_column_stop_vacuum;
+SQLstr_stop_vacuum;
 stop auto vacuum
 sql
 storage
@@ -38360,8 +38365,13 @@ SYSupdate_tables;
 Procedure triggered on update of the sys._tables table
 sql
 vacuum
+unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:int):void
+SQLstr_auto_vacuum;
+auto vacuum string column of given table with interval(sec)
+sql
+vacuum
 unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str, X_3:int):void
-SQLstr_column_auto_vacuum;
+SQLstr_auto_vacuum;
 auto vacuum string column with interval(sec)
 sql
 vacuum
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3879,6 +3879,8 @@ main(int argc, char **argv)
}
 
mapi_destroy(mid);
+   if (toConsole != stdout_stream && toConsole != stderr_stream)
+   close_stream(toConsole);
mnstr_destroy(stdout_stream);
mnstr_destroy(stderr_stream);
if (priv.buf != NULL)
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -88,7 +88,7 @@ SQLhelp sqlhelp1[] = {
 "ALTER USER ident\n"
 "[WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string]\n"
 "[SET SCHEMA ident] [SCHEMA PATH string] [DEFAULT ROLE ident]\n"
-"[MAX_MEMORY posbytes | NO MAX_MEMORY] [MAX_WORKERS poscount | NO 
MAX_WORKERS]",
+"[MAX_MEMORY posbytes | MAX_MEMORY sizestr | NO MAX_MEMORY] 
[MAX_WORKERS poscount | NO MAX_WORKERS]",
 "ident",
 "See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"},
{"ANALYZE",
@@ -252,7 +252,7 @@ SQLhelp sqlhelp1[] = {
{"CREATE USER",
 "Create a new database user",
 "CREATE USER ident WITH [ENCRYPTED | UNENCRYPTED] PASSWORD string NAME 
string [SCHEMA ident] [SCHEMA PATH string]\n"
-"[MAX_MEMORY posbytes | NO MAX_MEMORY] [MAX_WORKERS poscount | NO 
MAX_WORKERS]\n"
+"[MAX_MEMORY posbytes | MAX_MEMORY sizestr | NO MAX_MEMORY] 
[MAX_WORKERS poscount | NO MAX_WORKERS]\n"
 "[OPTIMIZER string] [DEFAULT ROLE ident]",
 "ident",
 "See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"},
diff --git a/clients/mapilib/Tests/tlssecurity.py 
b/clients/mapilib/Tests/tlssecurity.py
--- a/clients/mapilib/Tests/tlssecurity.py
+++ b/clients/mapilib/Tests/tlssecurity.py
@@ -14,10 +14,8 @@ import os
 import re
 import subprocess
 import sys
-import threading
 
-sys.path.append(os.environ.get('TSTSRCDIR','.'))
-import tlstester
+from MonetDBtesting.tlstester import TLSTesterClient
 
 level = logging.WARNING
 # if sys.platform == 'win32':
@@ -27,45 +25,20 @@ if '-v' in 

MonetDB: Aug2024 - Don't enforce single value BAT. Take the firs...

2024-06-17 Thread Lucas Pereira via checkin-list
Changeset: 97be32b0daf2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/97be32b0daf2
Modified Files:
monetdb5/modules/atoms/str.c
Branch: Aug2024
Log Message:

Don't enforce single value BAT. Take the first row always for icase flag. Fix 
#7540.


diffs (12 lines):

diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -2875,7 +2875,7 @@ ignorecase(const bat *ic_id, bool *icase
if ((c = BATdescriptor(*ic_id)) == NULL)
throw(MAL, fname, SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
 
-   assert(BATcount(c) == 1);
+   assert(BATcount(c) >= 1);
 
BATiter bi = bat_iterator(c);
*icase = *(bit *) BUNtloc(bi, 0);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Aug2024 - Don't call sys.check_constraint on older serv...

2024-06-17 Thread Sjoerd Mullender via checkin-list
Changeset: ac9358579737 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ac9358579737
Modified Files:
clients/mapiclient/dump.c
Branch: Aug2024
Log Message:

Don't call sys.check_constraint on older servers.


diffs (91 lines):

diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -452,6 +452,45 @@ bailout:
return false;
 }
 
+static bool
+has_check_constraint(Mapi mid)
+{
+   MapiHdl hdl;
+   bool ret;
+   static int answer = -1;
+
+   if (answer >= 0)
+   return answer;
+
+   if ((hdl = mapi_query(mid,
+ "select id from sys.functions"
+ " where schema_id = 2000"
+ " and name = 
'check_constraint'")) == NULL ||
+   mapi_error(mid))
+   goto bailout;
+   ret = mapi_get_row_count(hdl) == 1;
+   while ((mapi_fetch_row(hdl)) != 0) {
+   if (mapi_error(mid))
+   goto bailout;
+   }
+   if (mapi_error(mid))
+   goto bailout;
+   mapi_close_handle(hdl);
+   answer = ret;
+   return ret;
+
+bailout:
+   if (hdl) {
+   if (mapi_result_error(hdl))
+   mapi_explain_result(hdl, stderr);
+   else
+   mapi_explain_query(hdl, stderr);
+   mapi_close_handle(hdl);
+   } else
+   mapi_explain(mid, stderr);
+   return false;
+}
+
 static int
 dump_foreign_keys(Mapi mid, const char *schema, const char *tname, const char 
*tid, stream *sqlf)
 {
@@ -1114,6 +1153,7 @@ dump_column_definition(Mapi mid, stream 
mapi_close_handle(hdl);
hdl = NULL;
 
+   const char *cc = has_check_constraint(mid) ? "case when k.type = 4 then 
sys.check_constraint(s.name, k.name) else null end" : "cast(null as 
varchar(10))";
if (tid)
snprintf(query, maxquerylen,
 "SELECT kc.name, " /* 0 */
@@ -1121,13 +1161,13 @@ dump_column_definition(Mapi mid, stream 
"k.name, "  /* 2 */
"kc.id, "   /* 3 */
"k.type, "  /* 4 */
-   "case when k.type = 4 then 
sys.check_constraint(s.name, k.name) else null end " /* 5 */
+   "%s " /* 5 */
 "FROM sys.objects kc, "
  "sys.keys k "
 "WHERE kc.id = k.id "
   "AND k.table_id = %s "
   "AND k.type = 1 "
-"ORDER BY kc.id, kc.nr", tid);
+"ORDER BY kc.id, kc.nr", cc, tid);
else
snprintf(query, maxquerylen,
 "SELECT kc.name, " /* 0 */
@@ -1135,7 +1175,7 @@ dump_column_definition(Mapi mid, stream 
"k.name, "  /* 2 */
"kc.id, "   /* 3 */
"k.type, "  /* 4 */
-   "case when k.type = 4 then 
sys.check_constraint(s.name, k.name) else null end " /* 5 */
+   "%s " /* 5 */
 "FROM sys.objects kc, "
  "sys.keys k, "
  "sys.schemas s, "
@@ -1146,7 +1186,7 @@ dump_column_definition(Mapi mid, stream 
   "AND t.schema_id = s.id "
   "AND s.name = '%s' "
   "AND t.name = '%s' "
-"ORDER BY kc.id, kc.nr", s, t);
+"ORDER BY kc.id, kc.nr", cc, s, t);
if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
goto bailout;
cnt = 0;
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org