MonetDB: default - Merge with Dec2023 branch.

2024-05-31 Thread Sjoerd Mullender via checkin-list
Changeset: 06b5a9250dec for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/06b5a9250dec
Modified Files:
gdk/gdk_aggr.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (12 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -3610,7 +3610,7 @@ BATmin_skipnil(BAT *b, void *aggr, bit s
pos = binsearch(NULL, 0, bi.type, bi.base,
bi.vh ? bi.vh->base : NULL,
bi.width, 0, bi.count,
-   ATOMnilptr(bi.type), -1, 1);
+   ATOMnilptr(bi.type), -1, 0);
if (pos == 0)
pos = oid_nil;
else
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-30 Thread Sjoerd Mullender via checkin-list
Changeset: b55743d2496c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b55743d2496c
Modified Files:
monetdb5/modules/mal/txtsim.c
sql/test/BugTracker-2024/Tests/All
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (34 lines):

diff --git a/monetdb5/modules/mal/txtsim.c b/monetdb5/modules/mal/txtsim.c
--- a/monetdb5/modules/mal/txtsim.c
+++ b/monetdb5/modules/mal/txtsim.c
@@ -592,6 +592,10 @@ TXTSIMjarowinkler(dbl *res, const char *
str_item xi = { 0 }, yi = { 0 };
str msg = MAL_SUCCEED;
 
+   if (strNil(*x) || strNil(*y)) {
+   *res = dbl_nil;
+   return MAL_SUCCEED;
+   }
xi.val = *x;
xi.len = UTF8_strlen(*x);
if ((msg = str_2_codepointseq()) != MAL_SUCCEED)
diff --git a/sql/test/BugTracker-2024/Tests/7528-jarowinlkler-null.test 
b/sql/test/BugTracker-2024/Tests/7528-jarowinlkler-null.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/7528-jarowinlkler-null.test
@@ -0,0 +1,7 @@
+statement ok
+CREATE TABLE t0(c1 VARCHAR)
+
+query T nosort
+SELECT * FROM t0 WHERE NOT NULL ORDER BY JAROWINKLER('a', NULL) DESC
+
+
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
@@ -60,3 +60,4 @@ 7512-concurrent-globaltmp-instantiate-cr
 7513-uri-authority-parse-issue
 7514-wrong-window-function
 7524-right-outer-join
+7528-jarowinkler-null
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-29 Thread Sjoerd Mullender via checkin-list
Changeset: 4784d7f2b200 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4784d7f2b200
Modified Files:
sql/storage/bat/bat_storage.c
sql/storage/objectset.c
sql/storage/store.c
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (129 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -3492,7 +3492,6 @@ log_segments(sql_trans *tr, segments *se
unlock_table(tr->store, id);
if (seg->ts == tr->tid && seg->end-seg->start) {
if (log_segment(tr, seg, id) != LOG_OK) {
-   unlock_table(tr->store, id);
return LOG_ERR;
}
}
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -55,6 +55,7 @@ typedef struct objectset {
allocator *sa;
destroy_fptr destroy;
MT_RWLock rw_lock;  /*readers-writer lock to protect the links 
(chains) in the objectversion chain.*/
+   MT_Lock lock;   /* global objectset lock for os_add/del */
versionhead  *name_based_h;
versionhead  *name_based_t;
versionhead  *id_based_h;
@@ -668,6 +669,7 @@ os_new(allocator *sa, destroy_fptr destr
};
os->destroy = destroy;
MT_rwlock_init(>rw_lock, "sa_readers_lock");
+   MT_lock_init(>lock, "single_writer_lock");
}
 
return os;
@@ -685,6 +687,7 @@ os_destroy(objectset *os, sql_store stor
 {
if (ATOMIC_DEC(>refcnt) > 0)
return;
+   MT_lock_destroy(>lock);
MT_rwlock_destroy(>rw_lock);
versionhead* n=os->id_based_h;
while(n) {
@@ -927,9 +930,9 @@ os_add_(objectset *os, struct sql_trans 
 int
 os_add(objectset *os, struct sql_trans *tr, const char *name, sql_base *b)
 {
-   store_lock(tr->store);
+   MT_lock_set(>lock);
int res = os_add_(os, tr, name, b);
-   store_unlock(tr->store);
+   MT_lock_unset(>lock);
return res;
 }
 
@@ -1032,9 +1035,9 @@ os_del_(objectset *os, struct sql_trans 
 int
 os_del(objectset *os, sql_trans *tr, const char *name, sql_base *b)
 {
-   store_lock(tr->store);
+   MT_lock_set(>lock);
int res = os_del_(os, tr, name, b);
-   store_unlock(tr->store);
+   MT_lock_unset(>lock);
return res;
 }
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3816,8 +3816,6 @@ sql_trans_destroy(sql_trans *tr)
sql_trans_rollback(tr, false);
sqlstore *store = tr->store;
os_destroy(tr->localtmps, store);
-   store_lock(store);
-   store_unlock(store);
MT_lock_destroy(>lock);
if (!list_empty(tr->dropped))
list_destroy(tr->dropped);
diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -656,10 +656,11 @@ class SQLLogic:
 result2 = result
 return result1, result2
 
-def initfile(self, f, defines):
+def initfile(self, f, defines, run_until=None):
 self.name = f
 self.file = open(f, 'r', encoding='utf-8', errors='replace')
 self.line = 0
+self.run_until = run_until
 self.hashes = {}
 defs = []
 if defines:
@@ -674,6 +675,8 @@ class SQLLogic:
 
 def readline(self):
 self.line += 1
+if self.run_until and self.line >= self.run_until:
+return ''
 origline = line = self.file.readline()
 for reg, val, key in self.defines:
 line = reg.sub(val.replace('\\', r'\\'), line)
@@ -736,9 +739,9 @@ class SQLLogic:
 self.raise_error('invalid connection parameters definition, 
username or password missing!')
 return res
 
-def parse(self, f, approve=None, verbose=False, defines=None):
+def parse(self, f, approve=None, verbose=False, defines=None, 
run_until=None):
 self.approve = approve
-self.initfile(f, defines)
+self.initfile(f, defines, run_until=run_until)
 nthreads = None
 if self.language == 'sql':
 self.crs.execute(f'call sys.setsessiontimeout({self.timeout or 
0})')
@@ -945,6 +948,8 @@ if __name__ == '__main__':
 ' (can be repeated)')
 parser.add_argument('--alltests', action='store_true',
 help='also executed "knownfail" tests')
+parser.add_argument('--run-until', action='store', type=int,
+help='run tests until specified line')
 parser.add_argument('tests', nargs='*', help='tests to be run')
 opts = parser.parse_args()
 args = opts.tests
@@ -959,7 +964,7 @@ if __name__ == '__main__':
 

MonetDB: default - Merge with Dec2023 branch.

2024-05-21 Thread Sjoerd Mullender via checkin-list
Changeset: 2495e1dbce95 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2495e1dbce95
Modified Files:
gdk/gdk_logger.c
tools/mserver/mserver5.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (92 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1038,6 +1038,7 @@ log_read_types_file(logger *lg, FILE *fp
 {
int id = 0;
char atom_name[IDLENGTH];
+   bool seen_geom = false;
 
/* scanf should use IDLENGTH somehow */
while (fscanf(fp, "%d,%63s\n", , atom_name) == 2) {
@@ -1049,9 +1050,17 @@ log_read_types_file(logger *lg, FILE *fp
GDKerror("unknown type in log file '%s'\n", atom_name);
return GDK_FAIL;
}
+   seen_geom |= strcmp(atom_name, "mbr") == 0 || strcmp(atom_name, 
"wkb") == 0;
lg->type_id[i] = (int8_t) id;
lg->type_nr[id < 0 ? 256 + id : id] = i;
}
+#ifdef HAVE_GEOM
+   if (!seen_geom && ATOMindex("mbr") > 0) {
+   GDKerror("incompatible database: server supports GEOM, but 
database does not\n");
+   return GDK_FAIL;
+   }
+#endif
+   (void) seen_geom;
return GDK_SUCCEED;
 }
 
@@ -1802,7 +1811,8 @@ bm_subcommit(logger *lg, logged_range *p
cleanup++;
if (lids[p] == -1)
continue;
-   if (BUNappend(dcatalog, &(oid){p}, true) != 
GDK_SUCCEED) {
+   if (BUNfnd(dcatalog, &(oid){p}) == BUN_NONE &&
+   BUNappend(dcatalog, &(oid){p}, true) != 
GDK_SUCCEED) {
while (BATcount(dcatalog) > dcnt) {
if (BUNdelete(dcatalog, 
BATcount(dcatalog) - 1) != GDK_SUCCEED) {
TRC_CRITICAL(WAL, "delete after 
failed append failed\n");
diff --git a/tools/mserver/mserver5.1.in b/tools/mserver/mserver5.1.in
--- a/tools/mserver/mserver5.1.in
+++ b/tools/mserver/mserver5.1.in
@@ -121,6 +121,18 @@ Load extra module in the form of a dynam
 file) which should be located in the lib/monetdb5 directory.
 This option can be repeated for different modules.
 .TP
+.B \-\-without\-geom
+Start the server without 
+.I geom
+support, even if it is available.
+Normally the server will refuse to start if
+.I geom
+is loaded, but the
+database was created by a server without
+.I geom
+support.
+With this option it is possible to start the server anyway.
+.TP
 .B \-\-help
 Print list of options.
 .TP
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -342,6 +342,7 @@ main(int argc, char **av)
 
{"read-password-initialize-and-exit", no_argument, NULL, 0},
{"loadmodule", required_argument, NULL, 0},
+   {"without-geom", no_argument, NULL, 0},
 
{NULL, 0, NULL, 0}
};
@@ -526,6 +527,19 @@ main(int argc, char **av)
"ERROR: maximum number 
of modules reached\n");
break;
}
+   if (strcmp(long_options[option_index].name, 
"without-geom") == 0) {
+   for (int i = 0; i < mods; i++) {
+   if (strcmp(modules[i], "geom") == 0) {
+   while (i + 1 < mods) {
+   modules[i] = modules[i 
+ 1];
+   i++;
+   }
+   mods--;
+   break;
+   }
+   }
+   break;
+   }
usage(prog, -1);
/* not reached */
case 'c':
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-17 Thread Sjoerd Mullender via checkin-list
Changeset: 8a06076b4de2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8a06076b4de2
Modified Files:
gdk/gdk_logger.c
monetdb5/modules/mal/mal_mapi.c
sql/backends/monet5/sql.c
sql/server/rel_optimize_proj.c
sql/server/rel_select.c
sql/storage/bat/bat_storage.c
sql/storage/store.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (165 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -3458,6 +3458,12 @@ log_tstart(logger *lg, bool flushnow, ul
 {
rotation_lock(lg);
if (flushnow) {
+   if (file_id == NULL) {
+   /* special case: ask store_manager to rotate log file */
+   lg->file_age = 0;
+   rotation_unlock(lg);
+   return GDK_SUCCEED;
+   }
/* I am now the exclusive flusher */
if (ATOMIC_GET(>nr_flushers)) {
/* I am waiting until all existing flushers are done */
@@ -3512,7 +3518,6 @@ log_printinfo(logger *lg)
rotation_lock(lg);
printf("current log file "ULLFMT", last handled log file "ULLFMT"\n",
   lg->id, lg->saved_id);
-   rotation_unlock(lg);
printf("current transaction id %d, saved transaction id %d\n",
   lg->tid, lg->saved_tid);
printf("number of flushers: %d\n", (int) ATOMIC_GET(>nr_flushers));
@@ -3525,4 +3530,5 @@ log_printinfo(logger *lg)
buf[0] = 0;
printf("pending range "ULLFMT": drops %"PRIu64", last_ts 
%"PRIu64", flushed_ts %"PRIu64", refcount %"PRIu64"%s%s\n", p->id, (uint64_t) 
ATOMIC_GET(>drops), (uint64_t) ATOMIC_GET(>last_ts), (uint64_t) 
ATOMIC_GET(>flushed_ts), (uint64_t) ATOMIC_GET(>refcount), buf, p == 
lg->current ? " (current)" : "");
}
+   rotation_unlock(lg);
 }
diff --git a/monetdb5/modules/atoms/xml.c b/monetdb5/modules/atoms/xml.c
--- a/monetdb5/modules/atoms/xml.c
+++ b/monetdb5/modules/atoms/xml.c
@@ -735,9 +735,9 @@ XMLxml2str(str *s, const xml *x)
 }
 
 str
-XMLstr2xml(xml *x, const char **s)
+XMLstr2xml(xml *x, const char *const*val)
 {
-   (void) s;
+   (void) val;
(void) x;
return createException(MAL, "xml.xml2str", SQLSTATE(HY005) 
NO_LIBXML_FATAL);
 }
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -527,7 +527,7 @@ start_listen(SOCKET *sockp, int *portp, 
hints.ai_family = AF_INET6;
ipv6_vs6only = 0;
}
-   char sport[8];  /* max "65535" */
+   char sport[16]; /* max "65535", but compiler 
doesn't know */
snprintf(sport, sizeof(sport), "%d", *portp);
for (;;) {  /* max twice */
int check = getaddrinfo(listenaddr, sport, , );
diff --git a/sql/ChangeLog.Dec2023 b/sql/ChangeLog.Dec2023
--- a/sql/ChangeLog.Dec2023
+++ b/sql/ChangeLog.Dec2023
@@ -1,3 +1,12 @@
 # ChangeLog file for sql
 # This file is updated with Maddlog
 
+* Wed May 15 2024 Sjoerd Mullender 
+- When sys.persist_unlogged is called for a table, it may return that
+  zero rows were persisted.  If this is because the call was done too
+  early, i.e. the table was recently created and the write-ahead log
+  where this was logged has not been processed yet, the call will
+  request an immediate write-ahead log rotation.  This means that the
+  WAL will be processed as soon as possible and a new call to
+  sys.persist_unlogged soon after will likely return a positive result.
+
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
@@ -4471,6 +4471,16 @@ SQLpersist_unlogged(Client cntxt, MalBlk
GDKfree(sizes);
}
count = d_bi.count;
+   } else {
+   /* special case of log_tstart: third arg == NULL with second arg
+* true is request to rotate log file ASAP */
+   store->logger_api.log_tstart(store, true, NULL);
+   /* special case for sql->debug: if 1024 bit is set,
+* store_manager doesn't wait for 30 seconds of idle time before
+* attempting to rotate */
+   MT_lock_set(>flush);
+   store->debug |= 1024;
+   MT_lock_unset(>flush);
}
 
bat_iterator_end(_bi);
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
@@ -907,7 +907,7 @@ rel_split_project_(visitor *v, sql_rel *
}
if (is_set(rel->op) || is_basetable(rel->op))
return rel;
-   if (rel->l) {
+   if (rel->l && (rel->op != op_table || rel->flag != 

MonetDB: default - Merge with Dec2023 branch.

2024-05-14 Thread Sjoerd Mullender via checkin-list
Changeset: 1c9d7fbe4bc0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1c9d7fbe4bc0
Modified Files:
gdk/gdk_calc_convert.c
gdk/gdk_hash.c
monetdb5/optimizer/opt_mergetable.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.SQL.py

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 Dec2023 branch.


diffs (truncated from 650 to 300 lines):

diff --git a/gdk/gdk_calc_convert.c b/gdk/gdk_calc_convert.c
--- a/gdk/gdk_calc_convert.c
+++ b/gdk/gdk_calc_convert.c
@@ -821,6 +821,7 @@ convert_str_fix(BATiter *bi, int tp, voi
return 0;
}
 
+   int (*atomcmp)(const void *, const void *) = ATOMcompare(tp);
TIMEOUT_LOOP(ci->ncand, qry_ctx) {
oid x = canditer_next(ci) - candoff;
const char *s = BUNtvar(*bi, x);
@@ -834,7 +835,7 @@ convert_str_fix(BATiter *bi, int tp, voi
goto conversion_failed;
}
assert(len == ATOMsize(tp));
-   if (ATOMcmp(tp, dst, nil) == 0)
+   if (atomcmp(dst, nil) == 0)
nils++;
}
dst = (void *) ((char *) dst + len);
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -873,7 +873,8 @@ BAThash_impl(BAT *restrict b, struct can
case TYPE_uuid:
starthash(uuid);
break;
-   default:
+   default: {
+   int (*atomcmp)(const void *, const void *) = 
ATOMcompare(h->type);
TIMEOUT_LOOP(p, qry_ctx) {
const void *restrict v = BUNtail(bi, o - 
b->hseqbase);
c = hash_any(h, v);
@@ -887,8 +888,7 @@ BAThash_impl(BAT *restrict b, struct can
for (hb = hget;
 hb != BUN_NONE;
 hb = HASHgetlink(h, hb)) {
-   if (ATOMcmp(h->type,
-   v,
+   if (atomcmp(v,
BUNtail(bi, hb)) == 
0)
break;
}
@@ -902,6 +902,7 @@ BAThash_impl(BAT *restrict b, struct can
  GOTO_LABEL_TIMEOUT_HANDLER(bailout, 
qry_ctx));
break;
}
+   }
TRC_DEBUG_IF(ACCELERATOR) if (p < cnt1)
TRC_DEBUG_ENDIF(ACCELERATOR,
"%s: abort starthash with "
@@ -949,7 +950,8 @@ BAThash_impl(BAT *restrict b, struct can
case TYPE_uuid:
finishhash(uuid);
break;
-   default:
+   default: {
+   int (*atomcmp)(const void *, const void *) = 
ATOMcompare(h->type);
TIMEOUT_LOOP(ci->ncand - p, qry_ctx) {
const void *restrict v = BUNtail(bi, o - b->hseqbase);
c = hash_any(h, 

MonetDB: default - Merge with Dec2023 branch.

2024-05-13 Thread Sjoerd Mullender via checkin-list
Changeset: d5c90fe141d5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d5c90fe141d5
Modified Files:
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out
Branch: default
Log Message:

Merge with Dec2023 branch.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-10 Thread Sjoerd Mullender via checkin-list
Changeset: 4aab2525d40a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4aab2525d40a
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_upgrades.c
sql/scripts/52_describe.sql
sql/server/rel_optimize_others.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_select.c
sql/storage/sql_catalog.c
sql/storage/store.c
sql/test/BugTracker-2024/Tests/All
sql/test/Dependencies/Tests/dependency_DBobjects.test
sql/test/Dependencies/Tests/dependency_owner_schema_3.test
sql/test/SQLancer/Tests/sqlancer18.test

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/sql_dump/Tests/dump.test

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 Dec2023 branch.


diffs (truncated from 1220 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -826,3 +826,4 @@ dcc8c702e685a4faf21ccf663028d1bc3d1165d1
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release
 9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9
+9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release
diff --git a/monetdb5/modules/atoms/url.c b/monetdb5/modules/atoms/url.c
--- a/monetdb5/modules/atoms/url.c
+++ b/monetdb5/modules/atoms/url.c
@@ -107,8 +107,10 @@ skip_authority(const char *uri, const ch
port = pass = uri + 1;
else
port = uri + 1;
-   } else if (*uri == '@')
+   } else if (*uri == '@') {
host = uri + 1;
+   port = NULL;
+   }
uri += *uri == '%' ? 3 : 1;
}
if (user == host) {
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
@@ -5208,6 +5208,8 @@ SQLuser_password(Client cntxt, MalBlkPtr
return msg;
}
*password = monet5_password_hash(m, username);
+   if (!(*password))
+   throw(SQL, "mvc", SQLSTATE(42000) "SELECT: Failed to retrieve 
password hash");
return MAL_SUCCEED;
 }
 
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
@@ -6596,6 +6596,46 @@ sql_update_dec2023_sp1(Client c, mvc *sq
 }
 
 static str
+sql_update_dec2023_sp4(Client c, mvc *sql, sql_schema *s)
+{
+   char *err;
+   res_table *output;
+   BAT *b;
+
+   (void) sql;
+   (void) s;
+
+   /* SQL optimizer fixes make that some "dependencies" are no longer
+* dependencies (functions that depend on all columns of a table
+* when it only actually uses a subset of the columns); while we're
+* at it, also fix some ancient dependency changes where view did
+* the same thing (i.e. the second delete will normally not delete
+* anything) */
+   err = 

MonetDB: default - Merge with Dec2023 branch.

2024-05-07 Thread Sjoerd Mullender via checkin-list
Changeset: e97cd4d87b96 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e97cd4d87b96
Modified Files:
gdk/gdk.h
gdk/gdk_strimps.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/mal/remote.c
sql/storage/bat/bat_storage.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (114 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -900,9 +900,10 @@ gdk_export size_t HEAPmemsize(Heap *h);
 gdk_export void HEAPdecref(Heap *h, bool remove);
 gdk_export void HEAPincref(Heap *h);
 
-#define isVIEW(x)  \
-   (((x)->theap && (x)->theap->parentid != (x)->batCacheid) || \
-((x)->tvheap && (x)->tvheap->parentid != (x)->batCacheid))
+#define VIEWtparent(x) ((x)->theap == NULL || (x)->theap->parentid == 
(x)->batCacheid ? 0 : (x)->theap->parentid)
+#define VIEWvtparent(x)((x)->tvheap == NULL || (x)->tvheap->parentid 
== (x)->batCacheid ? 0 : (x)->tvheap->parentid)
+
+#define isVIEW(x)  (VIEWtparent(x) != 0 || VIEWvtparent(x) != 0)
 
 /*
  * @+ BAT Buffer Pool
@@ -1083,7 +1084,7 @@ bat_iterator_nolock(BAT *b)
 {
/* does not get matched by bat_iterator_end */
if (b) {
-   bool isview = isVIEW(b);
+   bool isview = VIEWtparent(b);
return (BATiter) {
.b = b,
.h = b->theap,
@@ -2162,9 +2163,6 @@ gdk_export void VIEWbounds(BAT *b, BAT *
}   \
} while (false)
 
-#define VIEWtparent(x) ((x)->theap == NULL || (x)->theap->parentid == 
(x)->batCacheid ? 0 : (x)->theap->parentid)
-#define VIEWvtparent(x)((x)->tvheap == NULL || (x)->tvheap->parentid 
== (x)->batCacheid ? 0 : (x)->tvheap->parentid)
-
 /*
  * @+ BAT Iterators
  *  @multitable @columnfractions 0.15 0.7
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -551,7 +551,7 @@ STRMPfilter(BAT *b, BAT *s, const char *
 
TRC_DEBUG_IF(ACCELERATOR) t0 = GDKusec();
 
-   if (isVIEW(b)) {
+   if (VIEWtparent(b)) {
pb = BATdescriptor(VIEWtparent(b));
if (pb == NULL)
return NULL;
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -396,7 +396,7 @@ prepareMalEvent(Client cntxt, MalBlkPtr 
 * without further locking */
MT_lock_unset(>theaplock);
cnt = di.count;
-   if (isVIEW(d)) {
+   if (VIEWtparent(d)) {
BAT *v = 
BBP_desc(VIEWtparent(d));

MT_lock_set(>theaplock);
bool vtransient = 
v->batTransient;
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -1546,7 +1546,7 @@ RMTbincopyto(Client cntxt, MalBlkPtr mb,
 
sendtheap = b->ttype != TYPE_void;
sendtvheap = sendtheap && b->tvheap;
-   if (isVIEW(b) && sendtvheap && VIEWvtparent(b)
+   if (sendtvheap && VIEWvtparent(b)
&& BATcount(b) < BATcount(BBP_desc(VIEWvtparent(b {
if ((b = BATdescriptor(bid)) == NULL) {
BBPunfix(bid);
diff --git a/sql/backends/monet5/sql_statistics.c 
b/sql/backends/monet5/sql_statistics.c
--- a/sql/backends/monet5/sql_statistics.c
+++ b/sql/backends/monet5/sql_statistics.c
@@ -183,7 +183,7 @@ sql_analyze(Client cntxt, MalBlkPtr mb, 
int access = c->storage_type && 
c->storage_type[0] == 'D' ? RD_EXT : RDONLY;
if (!(b = 
store->storage_api.bind_col(tr, c, access)))
continue; /* At the moment we 
ignore the error, but maybe we can change this */
-   if (isVIEW(b)) { /* If it is a view get 
the parent BAT */
+   if (VIEWtparent(b)) { /* If it is a 
view get the parent BAT */
BAT *nb = 
BATdescriptor(VIEWtparent(b));
BBPunfix(b->batCacheid);
b = nb;
@@ -370,7 +370,7 @@ sql_statistics(Client cntxt, MalBlkPtr m
goto bailout;
}
BATiter rei = 
bat_iterator(re);
- 

MonetDB: default - Merge with Dec2023 branch.

2024-05-07 Thread Sjoerd Mullender via checkin-list
Changeset: b9b9086ac1ad for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b9b9086ac1ad
Modified Files:
monetdb5/modules/mal/clients.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (31 lines):

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
@@ -479,9 +479,11 @@ CLTqueryTimeout(Client cntxt, MalBlkPtr 
lng timeout_micro = ATOMIC_GET() & FORCEMITOMASK
&& qto == 1 ? 1000 : (lng) qto * 100;
mal_clients[idx].querytimeout = timeout_micro;
-   QryCtx *qry_ctx = MT_thread_get_qry_ctx();
-   if (qry_ctx) {
-   qry_ctx->endtime = qry_ctx->starttime && timeout_micro 
? qry_ctx->starttime + timeout_micro : 0;
+   if (timeout_micro != 1000) {
+   QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+   if (qry_ctx) {
+   qry_ctx->endtime = qry_ctx->starttime && 
timeout_micro ? qry_ctx->starttime + timeout_micro : 0;
+   }
}
}
MT_lock_unset(_contextLock);
diff --git a/sql/test/strimps/Tests/small_string_crash.test 
b/sql/test/strimps/Tests/small_string_crash.test
--- a/sql/test/strimps/Tests/small_string_crash.test
+++ b/sql/test/strimps/Tests/small_string_crash.test
@@ -117,3 +117,9 @@ SELECT * FROM fal WHERE x LIKE 'Daniel%'
 Daniel Sims
 Daniel Sullivan
 
+query T nosort
+SELECT * FROM fal WHERE startswith(x, 'Daniel')
+
+Daniel Sims
+Daniel Sullivan
+
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-06 Thread Sjoerd Mullender via checkin-list
Changeset: 5c1f3c7ab660 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5c1f3c7ab660
Modified Files:
monetdb5/modules/atoms/batxml.c
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/mtime.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/kernel/batmmath.c
monetdb5/modules/kernel/batstr.c
monetdb5/modules/mal/bbp.c
monetdb5/modules/mal/clients.c
monetdb5/modules/mal/inspect.c
monetdb5/modules/mal/iterator.c
monetdb5/modules/mal/mal_io.c
monetdb5/modules/mal/mal_mapi.c
monetdb5/modules/mal/mdb.c
monetdb5/modules/mal/profiler.c
monetdb5/modules/mal/querylog.c
monetdb5/modules/mal/remote.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 3580 to 300 lines):

diff --git a/monetdb5/modules/atoms/batxml.c b/monetdb5/modules/atoms/batxml.c
--- a/monetdb5/modules/atoms/batxml.c
+++ b/monetdb5/modules/atoms/batxml.c
@@ -760,7 +760,7 @@ BATXMLroot(bat *ret, const bat *bid, con
  *standalone);
snprintf(buf + i, len - i, "?>%s", t + 1);
buf++;
-   XMLisdocument(, );/* check 
well-formedness */
+   XMLisdocument(, &(const char *){buf});/* 
check well-formedness */
buf--;
if (!isdoc) {
err = XML_NOT_WELL_FORMED;
diff --git a/monetdb5/modules/atoms/blob.c b/monetdb5/modules/atoms/blob.c
--- a/monetdb5/modules/atoms/blob.c
+++ b/monetdb5/modules/atoms/blob.c
@@ -130,7 +130,7 @@ BLOBnitems_bulk(Client cntxt, MalBlkPtr 
 }
 
 static str
-BLOBtoblob(blob **retval, str *s)
+BLOBtoblob(blob **retval, const char *const *s)
 {
size_t len = strLen(*s);
blob *b = (blob *) GDKmalloc(blobsize(len));
@@ -144,7 +144,7 @@ BLOBtoblob(blob **retval, str *s)
 }
 
 static str
-BLOBblob_blob(blob **d, blob **s)
+BLOBblob_blob(blob **d, const blob *const*s)
 {
size_t len = blobsize((*s)->nitems);
blob *b;
@@ -238,7 +238,7 @@ BLOBblob_blob_bulk(bat *res, const bat *
 }
 
 static str
-BLOBblob_fromstr(blob **b, const char **s)
+BLOBblob_fromstr(blob **b, const char *const*s)
 {
size_t len = 0;
 
diff --git a/monetdb5/modules/atoms/identifier.c 
b/monetdb5/modules/atoms/identifier.c
--- a/monetdb5/modules/atoms/identifier.c
+++ b/monetdb5/modules/atoms/identifier.c
@@ -93,7 +93,7 @@ IDtoString(char **retval, size_t *len, c
  * to parse the string.
  */
 static str
-IDentifier(identifier *retval, str *in)
+IDentifier(identifier *retval, const char *const *in)
 {
size_t len = 0;
 
diff --git a/monetdb5/modules/atoms/inet.c b/monetdb5/modules/atoms/inet.c
--- a/monetdb5/modules/atoms/inet.c
+++ b/monetdb5/modules/atoms/inet.c
@@ -229,7 +229,7 @@ INETtoString(str *retval, size_t *len, c
  * to parse the string.
  */
 static str
-INETnew(inet *retval, str *in)
+INETnew(inet *retval, const char *const *in)
 {
ssize_t pos;
size_t len = sizeof(inet);
@@ -787,7 +787,7 @@ INET_inet(inet *d, const inet *s)
 }
 
 static str
-INET_fromstr(inet *ret, str *s)
+INET_fromstr(inet *ret, const char *const *s)
 {
size_t len = sizeof(inet);
if (INETfromString(*s, , (void **) , false) < 0)
diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -233,7 +233,7 @@ JSONtoStorageString(JSON *jt, int idx, j
return msg;
 }
 
-static str JSONstr2json(json *ret, const char **j);
+static str JSONstr2json(json *ret, const char *const*j);
 
 static ssize_t
 JSONfromString(const char *src, size_t *len, void **J, bool external)
@@ -338,7 +338,7 @@ JSONtoString(str *s, size_t *len, const 
 }
 
 static BAT *
-JSONdumpInternal(JSON *jt, int depth)
+JSONdumpInternal(const JSON *jt, int depth)
 {
int i, idx;
JSONterm *je;
@@ -464,7 +464,7 @@ JSONdump(Client cntxt, MalBlkPtr mb, Mal
(void) cntxt;
 
bat *ret = getArgReference_bat(stk, pci, 0);
-   json *val = (json *) getArgReference(stk, pci, 1);
+   const json *val = (json *) getArgReference(stk, pci, 1);
JSON *jt = JSONparse(*val);
 
CHECK_JSON(jt);
@@ -503,7 +503,7 @@ JSON2json(json *ret, const json *j)
 }
 
 static str
-JSONstr2json(json *ret, const char **j)
+JSONstr2json(json *ret, const char *const*j)
 {
str msg = MAL_SUCCEED;
json buf = NULL;
@@ -541,7 +541,7 @@ JSONstr2json(json *ret, const char **j)
 }
 
 static str
-JSONisvalid(bit *ret, str *j)
+JSONisvalid(bit *ret, const char *const *j)
 {
if (strNil(*j)) {
*ret = bit_nil;
@@ -556,12 +556,12 @@ JSONisvalid(bit *ret, str *j)
 }
 
 static str
-JSONisobject(bit *ret, json *js)
+JSONisobject(bit *ret, const json *js)
 {
if (strNil(*js)) {
*ret = bit_nil;
} else {
-

MonetDB: default - Merge with Dec2023 branch.

2024-05-06 Thread Sjoerd Mullender via checkin-list
Changeset: 20f1242657c0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/20f1242657c0
Modified Files:
monetdb5/modules/atoms/str.c
monetdb5/modules/kernel/batstr.c
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/txtsim.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_user.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 1102 to 300 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
@@ -3514,7 +3514,7 @@ STRlike(const char *s, const char *pat, 
 }
 
 static str
-STRlikewrap3(bit *ret, const str *s, const str *pat, const str *esc)
+STRlikewrap3(bit *ret, const char *const *s, const char *const *pat, const 
char *const *esc)
 {
if (strNil(*s) || strNil(*pat) || strNil(*esc))
*ret = bit_nil;
@@ -3524,7 +3524,7 @@ STRlikewrap3(bit *ret, const str *s, con
 }
 
 static str
-STRlikewrap(bit *ret, const str *s, const str *pat)
+STRlikewrap(bit *ret, const char *const *s, const char *const *pat)
 {
if (strNil(*s) || strNil(*pat))
*ret = bit_nil;
@@ -3534,7 +3534,7 @@ STRlikewrap(bit *ret, const str *s, cons
 }
 
 static str
-STRtostr(str *res, const str *src)
+STRtostr(str *res, const char *const *src)
 {
if (*src == 0)
*res = GDKstrdup(str_nil);
@@ -3546,7 +3546,7 @@ STRtostr(str *res, const str *src)
 }
 
 static str
-STRLength(int *res, const str *arg1)
+STRLength(int *res, const char *const *arg1)
 {
const char *s = *arg1;
 
@@ -3555,7 +3555,7 @@ STRLength(int *res, const str *arg1)
 }
 
 static str
-STRBytes(int *res, const str *arg1)
+STRBytes(int *res, const char *const *arg1)
 {
const char *s = *arg1;
 
@@ -3579,7 +3579,7 @@ str_tail(str *buf, size_t *buflen, const
 }
 
 static str
-STRTail(str *res, const str *arg1, const int *offset)
+STRTail(str *res, const char *const *arg1, const int *offset)
 {
str buf = NULL, msg = MAL_SUCCEED;
const char *s = *arg1;
@@ -3635,7 +3635,7 @@ str_Sub_String(str *buf, size_t *buflen,
 }
 
 static str
-STRSubString(str *res, const str *arg1, const int *offset, const int *length)
+STRSubString(str *res, const char *const *arg1, const int *offset, const int 
*length)
 {
str buf = NULL, msg = MAL_SUCCEED;
const char *s = *arg1;
@@ -3724,7 +3724,7 @@ str_wchr_at(int *res, const char *s, int
 }
 
 static str
-STRWChrAt(int *res, const str *arg1, const int *at)
+STRWChrAt(int *res, const char *const *arg1, const int *at)
 {
return str_wchr_at(res, *arg1, *at);
 }
@@ -3737,7 +3737,7 @@ str_lower(str *buf, size_t *buflen, cons
 }
 
 static inline str
-STRlower(str *res, const str *arg1)
+STRlower(str *res, const char *const *arg1)
 {
str buf = NULL, msg = MAL_SUCCEED;
const char *s = *arg1;
@@ -3778,7 +3778,7 @@ str_upper(str *buf, size_t *buflen, cons
 }
 
 static str
-STRupper(str *res, const str *arg1)
+STRupper(str *res, const char *const *arg1)
 {
str buf = NULL, msg = MAL_SUCCEED;
const char *s = *arg1;
@@ -3974,10 +3974,11 @@ STRstr_search(Client cntxt, MalBlkPtr mb
(void) cntxt;
(void) mb;
bit *res = getArgReference(stk, pci, 0);
-   const str *haystack = getArgReference(stk, pci, 1),
-   *needle = getArgReference(stk, pci, 2);
+   const char *const *haystack = getArgReference(stk, pci, 1);
+   const char *const *needle = getArgReference(stk, pci, 2);
bit icase = pci->argc == 4 && *getArgReference_bit(stk, pci, 3);
-   str s = *haystack, h = *needle, msg = MAL_SUCCEED;
+   const char *s = *haystack, *h = *needle;
+   char *msg = MAL_SUCCEED;
if (strNil(s) || strNil(h)) {
*res = bit_nil;
} else {
@@ -4035,10 +4036,11 @@ STRrevstr_search(Client cntxt, MalBlkPtr
(void) cntxt;
(void) mb;
bit *res = getArgReference(stk, pci, 0);
-   const str *haystack = getArgReference(stk, pci, 1);
-   const str *needle = getArgReference(stk, pci, 2);
+   const char *const *haystack = getArgReference(stk, pci, 1);
+   const char *const *needle = getArgReference(stk, pci, 2);
bit icase = pci->argc == 4 && *getArgReference_bit(stk, pci, 3);
-   str s = *haystack, h = *needle, msg = MAL_SUCCEED;
+   const char *s = *haystack, *h = *needle;
+   char *msg = MAL_SUCCEED;
if (strNil(s) || strNil(h)) {
*res = bit_nil;
} else {
@@ -4207,7 +4209,7 @@ str_strip(str *buf, size_t *buflen, cons
 
 /* remove all whitespace from either side of arg1 */
 static str
-STRStrip(str *res, const str *arg1)
+STRStrip(str *res, const char *const *arg1)
 {
str buf = NULL, msg = MAL_SUCCEED;
const char *s = *arg1;
@@ -4248,7 +4250,7 @@ str_ltrim(str *buf, size_t *buflen, cons
 
 /* remove all whitespace from the start (left) of arg1 */
 static str
-STRLtrim(str *res, 

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-05-02 Thread Sjoerd Mullender via checkin-list
Changeset: b7be7e896f89 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b7be7e896f89
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files..

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-02 Thread Sjoerd Mullender via checkin-list
Changeset: d1bececfe979 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d1bececfe979
Modified Files:
MonetDB.spec
cmake/monetdb-versions.cmake
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (163 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -825,3 +825,4 @@ dcc8c702e685a4faf21ccf663028d1bc3d1165d1
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release
+9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -91,7 +91,7 @@ Group: Applications/Databases
 License: MPL-2.0
 URL: https://www.monetdb.org/
 BugURL: https://github.com/MonetDB/MonetDB/issues
-Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP2/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP3/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -916,6 +916,25 @@ fi
 %endif
 
 %changelog
+* Thu May 02 2024 Sjoerd Mullender  - 11.49.9-20240502
+- Rebuilt.
+- GH#7422: Aggregate functions with variadic arguments
+- GH#7472: MonetDB server crashes in `tail_type`
+- GH#7473: MonetDB server crashes in `SQLunionfunc`
+- GH#7478: MonetDB server crashes in `exp_equal`
+- GH#7496: Query on view fails to produce a resultset. Assertion triggered
+  in rel2bin_select.
+- GH#7499: create schema + set schema inside a transaction that is rolled
+  back causes the connection to be aborted
+- GH#7501: files remain in backup causing problems at restart
+- GH#7503: MonetDB server crashes using `WHEN MATCHED THEN UPDATE`
+- GH#7504: possible deadlock when a bat is made persistent when it is also
+  getting unloaded
+- GH#7506: MonetDB Dec2023-SP2 crashes at `rel_value_exp2`
+- GH#7507: BBPextend: ERROR: trying to extend BAT pool beyond the limit
+  (16384)
+- GH#7508: MonetDB Dec2023-SP2 crashes at `exp_ref`
+
 * Tue Apr 09 2024 Sjoerd Mullender  - 11.49.7-20240409
 - Rebuilt.
 - GH#7469: Crash when using `CONTAINS`
diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -44,19 +44,19 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M
 # common/options and common/utils)
 set(GDK_VERSION_MAJOR "28")
 set(GDK_VERSION_MINOR "1")
-set(GDK_VERSION_PATCH "2")
+set(GDK_VERSION_PATCH "3")
 set(GDK_VERSION 
"${GDK_VERSION_MAJOR}.${GDK_VERSION_MINOR}.${GDK_VERSION_PATCH}")
 
 # version of the MAPI library (subdirectory clients/mapilib)
 set(MAPI_VERSION_MAJOR "26")
 set(MAPI_VERSION_MINOR "2")
-set(MAPI_VERSION_PATCH "1")
+set(MAPI_VERSION_PATCH "2")
 set(MAPI_VERSION 
"${MAPI_VERSION_MAJOR}.${MAPI_VERSION_MINOR}.${MAPI_VERSION_PATCH}")
 
 # version of the MONETDB5 library (subdirectory monetdb5, not including extras 
or sql)
 set(MONETDB5_VERSION_MAJOR "35")
 set(MONETDB5_VERSION_MINOR "0")
-set(MONETDB5_VERSION_PATCH "3")
+set(MONETDB5_VERSION_PATCH "4")
 set(MONETDB5_VERSION 
"${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_MINOR}.${MONETDB5_VERSION_PATCH}")
 
 # version of the MONETDBE library (subdirectory tools/monetdbe)
@@ -74,5 +74,5 @@ set(STREAM_VERSION "${STREAM_VERSION_MAJ
 # version of the SQL library (subdirectory sql)
 set(SQL_VERSION_MAJOR "14")
 set(SQL_VERSION_MINOR "1")
-set(SQL_VERSION_PATCH "3")
+set(SQL_VERSION_PATCH "4")
 set(SQL_VERSION 
"${SQL_VERSION_MAJOR}.${SQL_VERSION_MINOR}.${SQL_VERSION_PATCH}")
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,25 @@
+monetdb (11.49.9) unstable; urgency=low
+
+  * Rebuilt.
+  * GH#7422: Aggregate functions with variadic arguments
+  * GH#7472: MonetDB server crashes in `tail_type`
+  * GH#7473: MonetDB server crashes in `SQLunionfunc`
+  * GH#7478: MonetDB server crashes in `exp_equal`
+  * GH#7496: Query on view fails to produce a resultset. Assertion triggered
+in rel2bin_select.
+  * GH#7499: create schema + set schema inside a transaction that is rolled
+back causes the connection to be aborted
+  * GH#7501: files remain in backup causing problems at restart
+  * GH#7503: MonetDB server crashes using `WHEN MATCHED THEN UPDATE`
+  * GH#7504: possible deadlock when a bat is made persistent when it is also
+getting unloaded
+  * GH#7506: MonetDB Dec2023-SP2 crashes at `rel_value_exp2`
+  * GH#7507: BBPextend: ERROR: trying to extend BAT pool beyond the limit
+(16384)
+  * GH#7508: MonetDB Dec2023-SP2 crashes at `exp_ref`
+
+ -- Sjoerd Mullender   Thu, 02 May 2024 12:35:52 +0200
+
 monetdb (11.49.7) unstable; urgency=low
 
   * Rebuilt.
diff --git a/misc/packages/deb/changelog b/misc/packages/deb/changelog
--- a/misc/packages/deb/changelog
+++ b/misc/packages/deb/changelog
@@ -1,3 +1,25 @@
+monetdb (11.49.9) unstable; urgency=low
+
+ 

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-05-02 Thread Sjoerd Mullender via checkin-list
Changeset: d688acbf8e0a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d688acbf8e0a
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-02 Thread Sjoerd Mullender via checkin-list
Changeset: 90d39ff168f9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/90d39ff168f9
Modified Files:
sql/server/rel_optimize_proj.c
sql/server/rel_select.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (34 lines):

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
@@ -1781,6 +1781,8 @@ rel_groupby_cse(visitor *v, sql_rel *rel
sql_exp *e1_in_exps = (e1->l && 
e1->alias.rname == e1->l && e1->alias.name == e1->r) ?
exps_bind_column2(rel->exps, 
e1->l, e1->r, NULL) :
exps_bind_column(rel->exps, 
e1->alias.name, NULL, NULL, 0);
+   if (!e1_in_exps)
+   continue;
assert(e1_in_exps);
 
/* write e2 as an e1 alias since the 
expressions are the same */
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -3299,6 +3299,8 @@ rel_nop(sql_query *query, sql_rel **rel,
if (!sname && strcmp(fname, "field") == 0) { /* map into join */
if (err)
return NULL;
+   if (list_length(exps) < 2)
+   return sql_error(sql, 02, SQLSTATE(42000) "Field 
function called with not enough arguments");
sql_exp *le = exps->h->data;
set_freevar(le, 1);
list_remove_data(exps, NULL, le);
diff --git a/sql/test/BugTracker-2024/Tests/field-arg-error-Bug-7506.test 
b/sql/test/BugTracker-2024/Tests/field-arg-error-Bug-7506.test
--- a/sql/test/BugTracker-2024/Tests/field-arg-error-Bug-7506.test
+++ b/sql/test/BugTracker-2024/Tests/field-arg-error-Bug-7506.test
@@ -1,2 +1,5 @@
-statement error
+statement error 42000!SELECT: identifier 'x' unknown
 SELECT FIELD(x, '', '', '', '', '', '', '', '', '', '', '', '', '')
+
+statement error 42000!Field function called with not enough arguments
+SELECT 
FIELD('fieldID999')
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-05-01 Thread Sjoerd Mullender via checkin-list
Changeset: 086054b9400a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/086054b9400a
Modified Files:
gdk/gdk_bat.c
gdk/gdk_bbp.c
sql/backends/monet5/rel_bin.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (103 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2550,6 +2550,7 @@ BATmode(BAT *b, bool transient)
 
BATiter bi = bat_iterator(b);
bool mustrelease = false;
+   bool mustretain = false;
bat bid = b->batCacheid;
 
if (transient != bi.transient) {
@@ -2564,16 +2565,20 @@ BATmode(BAT *b, bool transient)
}
}
 
-   /* persistent BATs get a logical reference */
+   /* we need to delay the calls to BBPretain and
+* BBPrelease until after we have released our reference
+* to the heaps (i.e. until after bat_iterator_end),
+* because in either case, BBPfree can be called (either
+* directly here or in BBPtrim) which waits for the heap
+* reference to come down.  BBPretain calls incref which
+* waits until the trim that is waiting for us is done,
+* so that causes deadlock, and BBPrelease can call
+* BBPfree which causes deadlock with a single thread */
if (!transient) {
-   BBPretain(bid);
+   /* persistent BATs get a logical reference */
+   mustretain = true;
} else if (!bi.transient) {
-   /* we need to delay the release because if there
-* is no fix and the bat is loaded, BBPrelease
-* can call BBPfree which calls BATfree which
-* may hang while waiting for the heap reference
-* that we have because of the BAT iterator to
-* come down, in other words, deadlock */
+   /* transient BATs loose their logical reference */
mustrelease = true;
}
MT_lock_set((bid));
@@ -2605,8 +2610,10 @@ BATmode(BAT *b, bool transient)
MT_lock_unset((bid));
}
bat_iterator_end();
-   /* release after bat_iterator_end because of refs to heaps */
-   if (mustrelease)
+   /* retain/release after bat_iterator_end because of refs to heaps */
+   if (mustretain)
+   BBPretain(bid);
+   else if (mustrelease)
BBPrelease(bid);
return GDK_SUCCEED;
 }
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4073,6 +4073,7 @@ BBPsync(int cnt, bat *restrict subcommit
/* move any tail/theap files we find for this bat that
 * are in the BACKUP directory to the SUBCOMMIT
 * directory */
+   assert(b->ttype > 0); /* no unknown types allowed */
char fname[16]; /* plenty big enough */
if (snprintf(fname, sizeof(fname), "%o", (unsigned) 
bid) < 16) {
/* the snprintf never fails, any of the
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
@@ -6661,7 +6661,15 @@ static stmt *
 rel2bin_merge(backend *be, sql_rel *rel, list *refs)
 {
mvc *sql = be->mvc;
-   sql_rel *join = rel->l, *r = rel->r;
+   sql_rel *join;
+
+   if (is_project(((sql_rel*)rel->l)->op)) {
+   join = ((sql_rel*)rel->l)->l;
+   } else {
+   join = rel->l;
+   }
+
+   sql_rel *r = rel->r;
stmt *join_st, *bt_stmt, *target_stmt, *jl, *jr, *ld, *rd = NULL, *ns;
list *slist = sa_list(sql->sa);
 
diff --git a/sql/test/BugTracker-2024/Tests/merge-into-gh-7503.test 
b/sql/test/BugTracker-2024/Tests/merge-into-gh-7503.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/merge-into-gh-7503.test
@@ -0,0 +1,14 @@
+statement ok
+CREATE TABLE logs(id int, activity varchar(255) NOT NULL)
+
+statement ok
+CREATE TABLE stats(activity varchar(255) NOT NULL, absolute_reworks int)
+
+statement ok
+WITH rework_stats AS (SELECT activity, count(*) AS frequency FROM (SELECT 
activity,count(*) AS reworks FROM logs GROUP BY  activity HAVING count(*) > 
1) AS case_reworks GROUP BY activity) MERGE INTO stats USING rework_stats 
on rework_stats.activity = stats.activity WHEN MATCHED THEN UPDATE SET 
absolute_reworks = rework_stats.frequency
+
+statement ok
+DROP TABLE logs
+
+statement ok
+DROP TABLE stats
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-29 Thread Sjoerd Mullender via checkin-list
Changeset: 6a013fec3b56 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6a013fec3b56
Modified Files:
gdk/gdk_bbp.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_user.c
sql/include/sql_catalog.h
sql/storage/bat/bat_storage.c
sql/storage/store.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (237 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1711,6 +1711,9 @@ BBPjson_upgrade(json_storage_conversion 
const char *nme;
 
nme = ATOMunknown_name(b->ttype);
+   int tt = ATOMindex(nme);
+   if (tt >= 0)
+   b->ttype = tt;
if (strcmp(nme, "json") != 0)
continue;
} else if (b->ttype != JSON_type) {
@@ -4065,34 +4068,41 @@ BBPsync(int cnt, bat *restrict subcommit
if (lock)
MT_lock_set((bid));
}
-   if (subcommit) {
+   BAT *b = BBP_desc(bid);
+   if (subcommit && b->ttype != TYPE_void) {
/* move any tail/theap files we find for this bat that
 * are in the BACKUP directory to the SUBCOMMIT
 * directory */
char fname[16]; /* plenty big enough */
-   if (snprintf(fname, sizeof(fname), "%o", i) < 16) {
+   if (snprintf(fname, sizeof(fname), "%o", (unsigned) 
bid) < 16) {
/* the snprintf never fails, any of the
 * below may fail */
-   if (GDKmove(0, BAKDIR, fname, "tail", SUBDIR, 
fname, "tail", false) == GDK_SUCCEED)
-   TRC_DEBUG(BAT_, "moved %s.tail from %s 
to %s\n",
+   uint8_t stpe = ATOMstorage(b->ttype);
+   if ((b->ttype != TYPE_str || b->twidth >= 8) &&
+   GDKmove(0, BAKDIR, fname, "tail", SUBDIR, 
fname, "tail", false) == GDK_SUCCEED)
+   TRC_DEBUG(IO_, "moved %s.tail from %s 
to %s\n",
  fname, BAKDIR, SUBDIR);
-   if (GDKmove(0, BAKDIR, fname, "tail1", SUBDIR, 
fname, "tail1", false) == GDK_SUCCEED)
-   TRC_DEBUG(BAT_, "moved %s.tail1 from %s 
to %s\n",
+   if (stpe == TYPE_str &&
+   GDKmove(0, BAKDIR, fname, "tail1", SUBDIR, 
fname, "tail1", false) == GDK_SUCCEED)
+   TRC_DEBUG(IO_, "moved %s.tail1 from %s 
to %s\n",
  fname, BAKDIR, SUBDIR);
-   if (GDKmove(0, BAKDIR, fname, "tail2", SUBDIR, 
fname, "tail2", false) == GDK_SUCCEED)
-   TRC_DEBUG(BAT_, "moved %s.tail2 from %s 
to %s\n",
+   if (stpe == TYPE_str && b->twidth >= 2 &&
+   GDKmove(0, BAKDIR, fname, "tail2", SUBDIR, 
fname, "tail2", false) == GDK_SUCCEED)
+   TRC_DEBUG(IO_, "moved %s.tail2 from %s 
to %s\n",
  fname, BAKDIR, SUBDIR);
 #if SIZEOF_VAR_T == 8
-   if (GDKmove(0, BAKDIR, fname, "tail4", SUBDIR, 
fname, "tail4", false) == GDK_SUCCEED)
-   TRC_DEBUG(BAT_, "moved %s.tail4 from %s 
to %s\n",
+   if (stpe == TYPE_str && b->twidth >= 4 &&
+   GDKmove(0, BAKDIR, fname, "tail4", SUBDIR, 
fname, "tail4", false) == GDK_SUCCEED)
+   TRC_DEBUG(IO_, "moved %s.tail4 from %s 
to %s\n",
  fname, BAKDIR, SUBDIR);
 #endif
-   if (GDKmove(0, BAKDIR, fname, "theap", SUBDIR, 
fname, "theap", false) == GDK_SUCCEED)
-   TRC_DEBUG(BAT_, "moved %s.theap from %s 
to %s\n",
+   if (ATOMvarsized(b->ttype) &&
+   GDKmove(0, BAKDIR, fname, "theap", SUBDIR, 
fname, "theap", false) == GDK_SUCCEED)
+   TRC_DEBUG(IO_, "moved %s.theap from %s 
to %s\n",
  fname, BAKDIR, SUBDIR);
}
}
-   BAT *b = dirty_bat(, subcommit != NULL);
+   b = dirty_bat(, subcommit != NULL);
if (i <= 0)
ret = GDK_FAIL;
else if (BBP_status(bid) & BBPEXISTING &&
diff --git a/sql/backends/monet5/sql_scenario.c 

MonetDB: default - Merge with Dec2023 branch.

2024-04-26 Thread Sjoerd Mullender via checkin-list
Changeset: 049f0782c886 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/049f0782c886
Modified Files:
gdk/gdk_bbp.c
monetdb5/modules/mal/tablet.c
sql/storage/bat/bat_storage.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (163 lines):

diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -48,7 +48,12 @@ jobs:
   ref: ${{ github.ref }}
 
   - name: install pymonetdb cryptography
-run: pip3 install pymonetdb cryptography
+run: pip3 install --user --upgrade pymonetdb cryptography
+if: runner.os != 'macOS'
+
+  - name: install pymonetdb cryptography
+run: pip3 install --user --break-system-packages --upgrade pymonetdb 
cryptography
+if: runner.os == 'macOS'
 
   - name: make MonetDB on linux
 run: |
@@ -83,7 +88,23 @@ jobs:
 -DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison \
 -DCMAKE_SUMMARY=ON
   make install -j3
-if: runner.os == 'macOS'
+if: runner.os == 'macOS' && runner.arch == 'x64'
+
+  - name: make MonetDB on macos
+run: |
+  mkdir build
+  cd build 
+  cmake .. \
+-DCMAKE_INSTALL_PREFIX=$HOME/MDB \
+-DPY3INTEGRATION=OFF \
+-DRINTEGRATION=OFF  \
+-DCMAKE_BUILD_TYPE=Release \
+-DASSERT=OFF \
+-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \
+-DBISON_EXECUTABLE=/opt/homebrew/opt/bison/bin/bison \
+-DCMAKE_SUMMARY=ON
+  make install -j3
+if: runner.os == 'macOS' && runner.arch == 'arm64'
 
   - name: choco packages
 run: |
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4065,6 +4065,33 @@ BBPsync(int cnt, bat *restrict subcommit
if (lock)
MT_lock_set((bid));
}
+   if (subcommit) {
+   /* move any tail/theap files we find for this bat that
+* are in the BACKUP directory to the SUBCOMMIT
+* directory */
+   char fname[16]; /* plenty big enough */
+   if (snprintf(fname, sizeof(fname), "%o", i) < 16) {
+   /* the snprintf never fails, any of the
+* below may fail */
+   if (GDKmove(0, BAKDIR, fname, "tail", SUBDIR, 
fname, "tail", false) == GDK_SUCCEED)
+   TRC_DEBUG(BAT_, "moved %s.tail from %s 
to %s\n",
+ fname, BAKDIR, SUBDIR);
+   if (GDKmove(0, BAKDIR, fname, "tail1", SUBDIR, 
fname, "tail1", false) == GDK_SUCCEED)
+   TRC_DEBUG(BAT_, "moved %s.tail1 from %s 
to %s\n",
+ fname, BAKDIR, SUBDIR);
+   if (GDKmove(0, BAKDIR, fname, "tail2", SUBDIR, 
fname, "tail2", false) == GDK_SUCCEED)
+   TRC_DEBUG(BAT_, "moved %s.tail2 from %s 
to %s\n",
+ fname, BAKDIR, SUBDIR);
+#if SIZEOF_VAR_T == 8
+   if (GDKmove(0, BAKDIR, fname, "tail4", SUBDIR, 
fname, "tail4", false) == GDK_SUCCEED)
+   TRC_DEBUG(BAT_, "moved %s.tail4 from %s 
to %s\n",
+ fname, BAKDIR, SUBDIR);
+#endif
+   if (GDKmove(0, BAKDIR, fname, "theap", SUBDIR, 
fname, "theap", false) == GDK_SUCCEED)
+   TRC_DEBUG(BAT_, "moved %s.theap from %s 
to %s\n",
+ fname, BAKDIR, SUBDIR);
+   }
+   }
BAT *b = dirty_bat(, subcommit != NULL);
if (i <= 0)
ret = GDK_FAIL;
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -1945,8 +1945,7 @@ SQLload_file(Client cntxt, Tablet *as, b
return BUN_NONE;
 }
 
-/* return the latest reject table, to be on the safe side we should
- * actually create copies within a critical section. Ignored for now. */
+/* return the latest reject table */
 str
 COPYrejects(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
@@ -1958,10 +1957,27 @@ COPYrejects(Client cntxt, MalBlkPtr mb, 
create_rejects_table(cntxt);
if (cntxt->error_row == NULL)
throw(MAL, "sql.rejects", "No reject table available");
-   BBPretain(*row = cntxt->error_row->batCacheid);
-   BBPretain(*fld = cntxt->error_fld->batCacheid);
-   BBPretain(*msg = cntxt->error_msg->batCacheid);
-   

MonetDB: default - Merge with Dec2023 branch.

2024-04-24 Thread Sjoerd Mullender via checkin-list
Changeset: 85413ad9ca49 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/85413ad9ca49
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (12 lines):

diff --git 
a/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py 
b/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
--- a/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
+++ b/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
@@ -1,7 +1,7 @@
 import pymonetdb, sys, threading, os
 
 query = '''
-select count(*) from tables;
+--select count(*) from tables;
 create table t1(i int);
 insert into t1 values(1);
 insert into t1 values(2);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-24 Thread Sjoerd Mullender via checkin-list
Changeset: 2b1939405e38 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2b1939405e38
Modified Files:
cmake/monetdb-defines.cmake
gdk/gdk_system.c
monetdb5/mal/mal_dataflow.c
monetdb_config.h.in
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (193 lines):

diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -85,6 +85,7 @@ function(monetdb_configure_defines)
 check_symbol_exists("getopt_long" "getopt.h" HAVE_GETOPT_LONG)
   cmake_pop_check_state()
   check_function_exists("getrlimit" HAVE_GETRLIMIT)
+  check_function_exists("gettid" HAVE_GETTID)
   check_function_exists("gettimeofday" HAVE_GETTIMEOFDAY)
   check_function_exists("getuid" HAVE_GETUID)
   check_symbol_exists("gmtime_r" "time.h" HAVE_GMTIME_R)
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -52,6 +52,8 @@
 
 #include "mutils.h"
 
+static ATOMIC_TYPE GDKthreadid = ATOMIC_VAR_INIT(1);
+
 #ifdef LOCK_STATS
 
 ATOMIC_TYPE GDKlockcnt = ATOMIC_VAR_INIT(0);
@@ -218,6 +220,9 @@ static struct mtthread {
HANDLE hdl;
DWORD wtid;
 #endif
+#ifdef HAVE_GETTID
+   pid_t lwptid;
+#endif
MT_Id tid;
uintptr_t sp;
char *errbuf;
@@ -227,6 +232,7 @@ struct mtthread mainthread = {
.threadname = "main thread",
.exited = ATOMIC_VAR_INIT(0),
.refs = 1,
+   .tid = 1,
 };
 #ifdef HAVE_PTHREAD_H
 static pthread_mutex_t posthread_lock = PTHREAD_MUTEX_INITIALIZER;
@@ -285,9 +291,22 @@ dump_threads(void)
MT_Cond *cn = t->condwait;
struct mtthread *jn = t->joinwait;
int pos = snprintf(buf, sizeof(buf),
-  "%s, tid %zu, %"PRIu32" free bats, waiting 
for %s%s, working on %.200s",
+  "%s, tid %zu, "
+#ifdef HAVE_PTHREAD_H
+  "Thread 0x%lx, "
+#endif
+#ifdef HAVE_GETTID
+  "LWP %ld, "
+#endif
+  "%"PRIu32" free bats, waiting for %s%s, 
working on %.200s",
   t->threadname,
   t->tid,
+#ifdef HAVE_PTHREAD_H
+  (long) t->hdl,
+#endif
+#ifdef HAVE_GETTID
+  (long) t->lwptid,
+#endif
   t->freebats.nfreebats,
   lk ? "lock " : sm ? "semaphore " : cn ? 
"condvar " : jn ? "thread " : "",
   lk ? lk->name : sm ? sm->name : cn ? 
cn->name : jn ? jn->threadname : "nothing",
@@ -329,6 +348,9 @@ MT_thread_init(void)
 {
if (thread_initialized)
return true;
+#ifdef HAVE_GETTID
+   mainthread.lwptid = gettid();
+#endif
 #ifdef HAVE_PTHREAD_H
int ret;
 
@@ -356,7 +378,6 @@ MT_thread_init(void)
}
InitializeCriticalSection(_cs);
 #endif
-   mainthread.tid = (MT_Id) 
mainthread.next = NULL;
mtthreads = 
thread_initialized = true;
@@ -365,8 +386,6 @@ MT_thread_init(void)
 bool
 MT_thread_register(void)
 {
-   MT_Id mtid;
-
assert(thread_initialized);
if (!thread_initialized)
return false;
@@ -386,7 +405,6 @@ MT_thread_register(void)
if (self == NULL)
return false;
 
-   mtid = (MT_Id) self;
*self = (struct mtthread) {
.detached = false,
 #ifdef HAVE_PTHREAD_H
@@ -395,7 +413,7 @@ MT_thread_register(void)
.wtid = GetCurrentThreadId(),
 #endif
.refs = 1,
-   .tid = mtid,
+   .tid = (MT_Id) ATOMIC_INC(),
.exited = ATOMIC_VAR_INIT(0),
};
snprintf(self->threadname, sizeof(self->threadname), "foreign %zu", 
self->tid);
@@ -735,6 +753,9 @@ thread_starter(void *arg)
struct mtthread *self = (struct mtthread *) arg;
void *data = self->data;
 
+#ifdef HAVE_GETTID
+   self->lwptid = gettid();
+#endif
 #ifdef HAVE_PTHREAD_H
 #ifdef HAVE_PTHREAD_SETNAME_NP
/* name can be at most 16 chars including \0 */
@@ -848,7 +869,6 @@ int
 MT_create_thread(MT_Id *t, void (*f) (void *), void *arg, enum MT_thr_detach 
d, const char *threadname)
 {
struct mtthread *self;
-   MT_Id mtid;
 
assert(thread_initialized);
join_threads();
@@ -882,7 +902,6 @@ MT_create_thread(MT_Id *t, void (*f) (vo
 #endif
return -1;
}
-   mtid = (MT_Id) self;
 
*self = (struct mtthread) {
.func = f,
@@ -890,7 +909,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
.waiting = false,
.detached = (d == MT_THR_DETACHED),
.refs = 1,
-   .tid = mtid,
+   .tid = (MT_Id) ATOMIC_INC(),
.exited = ATOMIC_VAR_INIT(0),
};

MonetDB: default - Merge with Dec2023 branch.

2024-04-23 Thread Sjoerd Mullender via checkin-list
Changeset: d03ca7aa07a0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d03ca7aa07a0
Modified Files:
gdk/gdk_bbp.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (163 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4875,9 +4875,14 @@ BBPprintinfo(void)
ATOMIC_BASE_TYPE status = BBP_status(i);
struct counters *bt = [r > 0][BATdirty(b)][(status 
& BBPPERSISTENT) != 0][(status & BBPLOADED) != 0][(status & BBPHOT) != 0];
bt->nr++;
-   bt->sz += HEAPmemsize(b->theap) + 
HEAPmemsize(b->tvheap);
-   bt->vmsz += HEAPvmsize(b->theap) + 
HEAPvmsize(b->tvheap);
-   MT_lock_unset(>theaplock);
+   if (b->theap && b->batCacheid == b->theap->parentid) {
+   bt->sz += HEAPmemsize(b->theap);
+   bt->vmsz += HEAPvmsize(b->theap);
+   }
+   if (b->tvheap && b->batCacheid == b->tvheap->parentid) {
+   bt->sz += HEAPmemsize(b->tvheap);
+   bt->vmsz += HEAPvmsize(b->tvheap);
+   }
MT_lock_unset(>theaplock);
}
MT_lock_unset((i));
diff --git a/misc/python/fixlicense.py b/misc/python/fixlicense.py
--- a/misc/python/fixlicense.py
+++ b/misc/python/fixlicense.py
@@ -141,7 +141,7 @@ def getcomments(file, pre=None, post=Non
 f = open(file)  # can raise IOError
 line = f.readline()
 f.close()
-if line[:2] == '#!':
+if line.startswith('#!'):
 if 'bash' in line or '/sh' in line:
 ext = '.sh'
 elif 'python' in line or 'PYTHON' in line:
@@ -236,7 +236,7 @@ def addlicense(file, pre=None, post=None
 if pre:
 g.write(pre + '\n')
 for l in license:
-if l[:1] == '\t' or (not l and (not end or end[:1] == '\t')):
+if l.startswith('\t') or (not l and (not end or 
end.startswith('\t'))):
 # if text after start begins with tab, remove spaces from start
 g.write(start.rstrip() + l + end + '\n')
 else:
diff --git 
a/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py 
b/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
--- a/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
+++ b/sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
@@ -36,7 +36,8 @@ class Client(threading.Thread):
 
 def output(self):
 if self.error == 0 and self.result != [(1,), (2,), (3,), (4,), (5,), 
(6,), (7,), (8,), (9,), (0,)]:
-sys.stderr.write('[(1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), 
(9,), (0,)] expected')
+print(f'received: {self.result}', file=sys.stderr)
+print('expected: [(1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), 
(9,), (0,)]', file=sys.stderr)
 
 def main():
 C = []
diff --git a/sql/test/mapi/Tests/python3_dec38.SQL.bat 
b/sql/test/mapi/Tests/python3_dec38.SQL.bat
deleted file mode 100755
--- a/sql/test/mapi/Tests/python3_dec38.SQL.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@echo off
-
-rem must be aligned with the installation directory chosen in
-rem clients/python/test/Makefile.ag
-set testpath=%TSTSRCDIR%
-
-prompt # $t $g  
-
-"%PYTHON%" "%testpath%/python_dec38.py %MAPIPORT% %TSTDB% %MAPIHOST%"
diff --git a/sql/test/mapi/Tests/python_dec38.py 
b/sql/test/mapi/Tests/python3_dec38.SQL.py
rename from sql/test/mapi/Tests/python_dec38.py
rename to sql/test/mapi/Tests/python3_dec38.SQL.py
--- a/sql/test/mapi/Tests/python_dec38.py
+++ b/sql/test/mapi/Tests/python3_dec38.SQL.py
@@ -11,10 +11,10 @@
 # Copyright 1997 - July 2008 CWI.
 
 import pymonetdb
-import sys
+import sys, os
 from decimal import Decimal
 
-dbh = 
pymonetdb.connect(port=int(sys.argv[1]),database=sys.argv[2],hostname=sys.argv[3],autocommit=True)
+dbh = 
pymonetdb.connect(port=int(os.getenv('MAPIPORT')),database=os.getenv('TSTDB'),hostname=os.getenv('MAPIHOST'),autocommit=True)
 
 cursor = dbh.cursor()
 
diff --git a/sql/test/mapi/Tests/python3_dec38.SQL.sh 
b/sql/test/mapi/Tests/python3_dec38.SQL.sh
deleted file mode 100755
--- a/sql/test/mapi/Tests/python3_dec38.SQL.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# must be aligned with the installation directory chosen in
-# clients/python/test/Makefile.ag
-testpath="$TSTSRCDIR"
-
-${PYTHON} $testpath/python_dec38.py $MAPIPORT $TSTDB $MAPIHOST
diff --git a/sql/test/mapi/Tests/python3_int128.SQL.bat 
b/sql/test/mapi/Tests/python3_int128.SQL.bat
deleted file mode 100755
--- a/sql/test/mapi/Tests/python3_int128.SQL.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-@echo off
-
-rem must be aligned with the installation directory chosen in
-rem 

MonetDB: default - Merge with Dec2023 branch.

2024-04-19 Thread Sjoerd Mullender via checkin-list
Changeset: 4e23fd3ed5c7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4e23fd3ed5c7
Modified Files:
gdk/gdk_batop.c
gdk/gdk_bbp.c
sql/test/BugTracker-2024/Tests/All
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (264 lines):

diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -92,10 +92,10 @@ SQLhelp sqlhelp1[] = {
 "ident",
 "See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/privileges/"},
{"ANALYZE",
-"Collect column/table/schema data statistics for analysis and 
optimizer usage",
-"ANALYZE ident [ . ident [ column_list ] ] [SAMPLE size] [MINMAX]",
+"Analyze and update column data statistics of column(s) of one or all 
tables in a schema",
+"ANALYZE ident [ . ident [ column_list ] ]",
 "ident,column_list",
-"See also 
https://www.monetdb.org/documentation/admin-guide/monitoring/table-statistics/"},
+"See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-manipulation/analyze-statement/"},
{"CALL",
 "Call a stored procedure",
 "CALL qname '(' [ scalar_expression [',' ...] ] ')' | CALL ident '.' 
ident",
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1312,6 +1312,7 @@ BATappend_or_update(BAT *b, BAT *p, cons
 
bool isnil = atomcmp(new, nil) == 0;
anynil |= isnil;
+   MT_lock_set(>theaplock);
if (old == NULL ||
(b->tnil &&
 !anynil &&
@@ -1324,6 +1325,7 @@ BATappend_or_update(BAT *b, BAT *p, cons
}
b->tnonil &= !isnil;
b->tnil |= isnil;
+   MT_lock_unset(>theaplock);
if (bi.maxpos != BUN_NONE) {
if (!isnil &&
atomcmp(BUNtvar(bi, bi.maxpos), new) < 0) {
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1763,8 +1763,13 @@ BBPtrim(bool aggressive, bat nbat)
MT_lock_set(>theaplock);
if (!BATshared(b) &&
!isVIEW(b) &&
-   (!BATdirty(b) || (aggressive && b->theap->storage 
== STORE_MMAP && (b->tvheap == NULL || b->tvheap->storage == STORE_MMAP))) &&
-   (b->batRole == PERSISTENT && BBP_lrefs(bid) <= 2)) {
+   (!BATdirty(b) ||
+(aggressive &&
+ b->theap->storage == STORE_MMAP &&
+ (b->tvheap == NULL ||
+  b->tvheap->storage == STORE_MMAP)) ||
+(b->batRole == PERSISTENT &&
+ BBP_lrefs(bid) <= 2))) {
BBP_status_on(bid, BBPUNLOADING);
swap = true;
waitctr += BATdirty(b) ? 9 : 1;
@@ -4850,51 +4855,100 @@ BBPtmunlock(void)
 void
 BBPprintinfo(void)
 {
-   size_t tmem = 0, tvm = 0;
-   size_t pmem = 0, pvm = 0;
-   int tn = 0;
-   int pn = 0;
-   int nh = 0;
+   /* 32 categories for the bats, not all are expected to be filled */
+   struct counters {
+   size_t sz;
+   size_t vmsz;
+   int nr;
+   } bats[2][2][2][2][2] = {0};
+   int nbats = 0;
 
BBPtmlock();
bat sz = (bat) ATOMIC_GET();
for (bat i = 1; i < sz; i++) {
MT_lock_set((i));
-   if (BBP_refs(i) > 0 || BBP_lrefs(i) > 0) {
+   int r;
+   if ((r = BBP_refs(i)) > 0 || BBP_lrefs(i) > 0) {
BAT *b = BBP_desc(i);
-   ATOMIC_BASE_TYPE status = BBP_status(i);
-   nh += (status & BBPHOT) != 0;
+   nbats++;
MT_lock_set(>theaplock);
-   if (status & BBPPERSISTENT) {
-   pn++;
-   pmem += HEAPmemsize(b->theap);
-   pvm += HEAPvmsize(b->theap);
-   pmem += HEAPmemsize(b->tvheap);
-   pvm += HEAPvmsize(b->tvheap);
-   } else {
-   tn++;
-   if (b->theap &&
-   b->theap->parentid == b->batCacheid) {
-   tmem += HEAPmemsize(b->theap);
-   tvm += HEAPvmsize(b->theap);
-   }
-   if (b->tvheap &&
-   

MonetDB: default - Merge with Dec2023 branch.

2024-04-17 Thread Sjoerd Mullender via checkin-list
Changeset: dde2d19c63d0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dde2d19c63d0
Modified Files:
MonetDB.spec
cmake/monetdb-defines.cmake
gdk/gdk_bat.c
gdk/gdk_bbp.c
monetdb_config.h.in
sql/storage/store.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 432 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -151,7 +151,6 @@ BuildRequires: pkgconfig(libR)
 # BuildRequires: pkgconfig(gdal)# -DSHP=ON
 # BuildRequires: pkgconfig(netcdf)  # -DNETCDF=ON
 # BuildRequires: pkgconfig(proj)# -DWITH_PROJ=ON
-# BuildRequires: pkgconfig(snappy)  # -DWITH_SNAPPY=ON
 # BuildRequires: pkgconfig(valgrind)# -DWITH_VALGRIND=ON
 
 %if (0%{?fedora} >= 22)
@@ -868,7 +867,6 @@ sed -i 's/1\.2/1.1/' misc/selinux/monetd
 -DWITH_PCRE=ON \
 -DWITH_PROJ=OFF \
 -DWITH_READLINE=ON \
--DWITH_SNAPPY=OFF \
 -DWITH_VALGRIND=OFF \
 -DWITH_XML2=ON \
 -DWITH_ZLIB=ON
@@ -895,9 +893,6 @@ install -d -m 0775 %{buildroot}%{_locals
 install -d -m 0775 %{buildroot}%{_rundir}/monetdb
 
 # remove unwanted stuff
-# .la files
-rm -f %{buildroot}%{_libdir}/*.la
-rm -f %{buildroot}%{_libdir}/monetdb5/*.la
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_opt_sql_append.so
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_microbenchmark*.so
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_udf*.so
diff --git a/README.rst b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -69,8 +69,8 @@ CINTEGRATIONEnable support for C
 CMAKE_SUMMARY   Show a summary of the cmake configuration (for debug 
purposes, default=OFF)
 CMAKE_UNITTESTS Build and run the unittest for the build system 
(default=OFF)
 FITSEnable support for FITS
-GEOMEnable support for geom module
-INT128  Enable support for 128-bit integers
+GEOMEnable support for geom module (using libgeos library)
+INT128  Enable support for 128-bit integers (if compiler supports 
them)
 NETCDF  Enable support for netcdf
 ODBCCompile the MonetDB ODBC driver
 PY3INTEGRATION  Enable support for Python 3 integration into MonetDB
@@ -82,7 +82,9 @@ TESTING Enable support for t
 WITH_BZ2Include bz2 support
 WITH_CMOCKA Include cmocka support (default=OFF)
 WITH_CURL   Include curl support
+WITH_LZ4Include lz4 support
 WITH_LZMA   Include lzma support
+WITH_OPENSSLInclude TLS support (secure client/server connection)
 WITH_PCRE   Include pcre support
 WITH_PROJ   Include proj support
 WITH_READLINE   Include readline support
@@ -98,27 +100,27 @@ On Fedora, the following packages are re
 ``bison``, ``cmake``, ``gcc``, ``pkgconf``, ``python3``.
 
 The following packages are optional but recommended:
-``bzip2-devel``, ``pcre-devel``, ``readline-devel``,
-``xz-devel``, ``zlib-devel``.
+``bzip2-devel``, ``lz4-devel``, ``openssl-devel``, ``pcre-devel``,
+``readline-devel``, ``xz-devel``, ``zlib-devel``.
 
 The following packages are optional:
 ``cfitsio-devel``, ``gdal-devel``, ``geos-devel``, ``libasan``,
-``libcurl-devel``, ``libxml2-devel``, ``netcdf-devel``, ``proj-devel``,
-``python3-devel``, ``python3-numpy``, ``R-core-devel``,
-``unixODBC-devel``, ``valgrind-devel``.
+``libcmocka-devel``, ``libcurl-devel``, ``libxml2-devel``,
+``netcdf-devel``, ``proj-devel``, ``python3-devel``, ``python3-numpy``,
+``R-core-devel``, ``unixODBC-devel``, ``valgrind-devel``.
 
 On Ubuntu and Debian the following packages are required:
 ``bison``, ``cmake``, ``gcc``, ``pkg-config``, ``python3``.
 
 The following packages are optional but recommended:
-``libbz2-dev``, ``libpcre3-dev``, ``libreadline-dev``,
-``liblzma-dev``, ``zlib1g-dev``.
+``libbz2-dev``, ``liblz4-dev``, ``libpcre3-dev``, ``libreadline-dev``,
+``liblzma-dev``, ``libssl-dev``, ``zlib1g-dev``.
 
 The following packages are optional:
-``libasan5``, ``libcfitsio-dev``, ``libcurl4-gnutls-dev``,
-``libgdal-dev``, ``libgeos-dev``, ``libnetcdf-dev``, ``libproj-dev``,
-``libxml2-dev``, ``python3-dev``, ``python3-numpy``, ``r-base-dev``,
-``unixodbc-dev``, ``valgrind``.
+``libasan5``, ``libcfitsio-dev``, ``libcmocka-dev``,
+``libcurl4-gnutls-dev``, ``libgdal-dev``, ``libgeos-dev``,
+``libnetcdf-dev``, ``libproj-dev``, ``libxml2-dev``, ``python3-dev``,
+``python3-numpy``, ``r-base-dev``, ``unixodbc-dev``, ``valgrind``.
 
 ``cmake`` must be at least version 3.12, ``python`` must be at least
 version 3.5.
diff --git a/cmake/Modules/FindSnappy.cmake b/cmake/Modules/FindSnappy.cmake
deleted file mode 100644
--- a/cmake/Modules/FindSnappy.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-# - Find snappy
-# Find the native snappy headers and libraries.
-#
-# SNAPPY_INCLUDE_DIR   - where to find snappy.h, etc.
-# SNAPPY_LIBRARIES - List of libraries when using snappy.
-# SNAPPY_FOUND - True if 

MonetDB: default - Merge with Dec2023 branch.

2024-04-15 Thread Sjoerd Mullender via checkin-list
Changeset: 7c893aa53210 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7c893aa53210
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (20 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -824,3 +824,4 @@ 95d8feaa1167b5ba87bd99253c3f4e62ebf528a1
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_5
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release
 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7
+d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -4271,7 +4271,7 @@ VALUES (%s, '%s', '%s', '%s',
 for f in Failure[x]:
 what += "%s\n" % f
 print(file=sys.stderr, end='', flush=True)
-if verbosity == 0 or verbosity == 1:
+if not testweb and (verbosity == 0 or verbosity == 1):
 if Failed or errseen:
 prred('ERROR')
 else:
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-12 Thread Sjoerd Mullender via checkin-list
Changeset: 6f5d8d9396f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6f5d8d9396f8
Modified Files:
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (12 lines):

diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -784,7 +784,7 @@ class SQLLogic:
 if hashge:
 skipping = True
 elif words[1] == 'knownfail':
-if self.alltests:
+if not self.alltests:
 skipping = True
 elif words[0] == 'onlyif':
 skipping = True
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-12 Thread Sjoerd Mullender via checkin-list
Changeset: e00d391be073 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e00d391be073
Modified Files:
gdk/gdk.h
gdk/gdk_batop.c
gdk/gdk_hash.c
gdk/gdk_heap.c
gdk/gdk_private.h
gdk/gdk_utils.c
sql/test/BugTracker-2024/Tests/All
sql/test/information-schema/Tests/columns.test
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 481 to 300 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -887,9 +887,6 @@ mskGetVal(BAT *b, BUN p)
  * @item int
  * @tab
  *  HEAPcopy (Heap *dst,*src);
- * @item int
- * @tab
- *  HEAPwarm (Heap *h);
  * @end multitable
  *
  *
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -665,7 +665,7 @@ append_msk_bat(BAT *b, BATiter *ni, stru
 /* Append the contents of BAT n (subject to the optional candidate
  * list s) to BAT b.  If b is empty, b will get the seqbase of s if it
  * was passed in, and else the seqbase of n. */
-gdk_return
+static gdk_return
 BATappend2(BAT *b, BAT *n, BAT *s, bool force, bool mayshare)
 {
struct canditer ci;
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -1381,32 +1381,3 @@ HASHfree(BAT *b)
MT_rwlock_wrunlock(>thashlock);
}
 }
-
-bool
-HASHgonebad(BAT *b, const void *v)
-{
-   Hash *h = b->thash;
-   BUN cnt, hit;
-
-   if (h == NULL)
-   return true;/* no hash is bad hash? */
-
-   BATiter bi = bat_iterator(b);
-   if (h->nbucket * 2 < BATcount(b)) {
-   int (*cmp) (const void *, const void *) = ATOMcompare(bi.type);
-   BUN i = HASHget(h, (BUN) HASHprobe(h, v));
-   for (cnt = hit = 1; i != BUN_NONE; i = HASHgetlink(h, i), cnt++)
-   hit += ((*cmp) (v, BUNtail(bi, (BUN) i)) == 0);
-
-   if (cnt / hit > 4) {
-   bat_iterator_end();
-   return true;/* linked list too long */
-   }
-
-   /* in this case, linked lists are long but contain the
-* desired values such hash tables may be useful for
-* locating all duplicates */
-   }
-   bat_iterator_end();
-   return false;   /* a-ok */
-}
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -439,57 +439,6 @@ HEAPextend(Heap *h, size_t size, bool ma
return GDK_FAIL;
 }
 
-gdk_return
-HEAPshrink(Heap *h, size_t size)
-{
-   char *p = NULL;
-
-   assert(size >= h->free);
-   assert(size <= h->size);
-   if (h->storage == STORE_MEM) {
-   p = GDKrealloc(h->base, size);
-   TRC_DEBUG(HEAP, "Shrinking malloced heap %s %zu %zu %p %p\n",
- h->filename, h->size, size, h->base, p);
-   } else {
-   char *path;
-
-   assert(h->hasfile);
-   /* shrink memory mapped file */
-   /* round up to multiple of GDK_mmap_pagesize with
-* minimum of one */
-   size = (size + GDK_mmap_pagesize - 1) & ~(GDK_mmap_pagesize - 
1);
-   if (size == 0)
-   size = GDK_mmap_pagesize;
-   if (size >= h->size) {
-   /* don't grow */
-   return GDK_SUCCEED;
-   }
-   if ((path = GDKfilepath(h->farmid, BATDIR, h->filename, NULL)) 
== NULL)
-   return GDK_FAIL;
-   p = GDKmremap(path,
- h->storage == STORE_PRIV ?
-   MMAP_COPY | MMAP_READ | MMAP_WRITE :
-   MMAP_READ | MMAP_WRITE,
- h->base, h->size, );
-   GDKfree(path);
-   TRC_DEBUG(HEAP, "Shrinking %s mmapped "
- "heap (%s) %zu %zu %p %p\n",
- h->storage == STORE_MMAP ? "shared" : "privately",
- h->filename, h->size, size, h->base, p);
-   }
-   if (p) {
-   if (h->farmid == 1) {
-   QryCtx *qc = MT_thread_get_qry_ctx();
-   if (qc)
-   ATOMIC_SUB(>datasize, h->size - size);
-   }
-   h->size = size;
-   h->base = p;
-   return GDK_SUCCEED;
-   }
-   return GDK_FAIL;
-}
-
 /* grow the string offset heap so that the value v fits (i.e. wide
  * enough to fit the value), and it has space for at least cap elements;
  * copy ncopy BUNs, or up to the heap size, whichever is smaller */
@@ -962,22 +911,6 @@ HEAPsave(Heap *h, const char *nme, const
return rc;
 }
 
-int
-HEAPwarm(Heap *h)
-{
-   int bogus_result = 0;
-
-   if (h->storage != STORE_MEM) {
-   /* touch the heap sequentially */
-   int 

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-04-09 Thread Sjoerd Mullender via checkin-list
Changeset: 2e7629191708 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2e7629191708
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files..

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-09 Thread Sjoerd Mullender via checkin-list
Changeset: 4603f1681efc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4603f1681efc
Modified Files:
MonetDB.spec
cmake/monetdb-versions.cmake
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -823,3 +823,4 @@ 1230526af30f40eeea30fb87c47c3e414920561f
 95d8feaa1167b5ba87bd99253c3f4e62ebf528a1 Dec2023_3
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_5
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release
+d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -91,7 +91,7 @@ Group: Applications/Databases
 License: MPL-2.0
 URL: https://www.monetdb.org/
 BugURL: https://github.com/MonetDB/MonetDB/issues
-Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP1/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP2/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -921,6 +921,31 @@ fi
 %endif
 
 %changelog
+* Tue Apr 09 2024 Sjoerd Mullender  - 11.49.7-20240409
+- Rebuilt.
+- GH#7469: Crash when using `CONTAINS`
+- GH#7479: MonetDB server crashes in `exp_ref`
+- GH#7490: commonTerms optimizer no longer works
+- GH#7495: Crash when simultaneously querying and updating a string column.
+
+* Thu Mar 28 2024 Sjoerd Mullender  - 11.49.7-20240409
+- gdk: Threads have their own list of free bats.  The list was not returned
+  to the system when a thread exited, meaning that the free bats that
+  were in the list would not be reused by any thread.  This has been
+  fixed.
+
+* Tue Mar 19 2024 Sjoerd Mullender  - 11.49.7-20240409
+- monetdb5: Fixed interaction between mserver5 and remote mserver5 when only 
one
+  of the two has 128 bit integer support.
+
+* Tue Mar 19 2024 Sjoerd Mullender  - 11.49.7-20240409
+- sql: Fixed issue where equal column aliases were created. When those
+  aliases were parsed on the remote side it could give crashes.
+
+* Mon Mar 18 2024 Sjoerd Mullender  - 11.49.7-20240409
+- gdk: Fixed a couple of deadlock situations, one actually observed, one
+  never observed.
+
 * Tue Mar 12 2024 Sjoerd Mullender  - 11.49.5-20240312
 - Rebuilt.
 - GH#7390: Some MonetDB Server crashes found
diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -44,7 +44,7 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M
 # common/options and common/utils)
 set(GDK_VERSION_MAJOR "28")
 set(GDK_VERSION_MINOR "1")
-set(GDK_VERSION_PATCH "1")
+set(GDK_VERSION_PATCH "2")
 set(GDK_VERSION 
"${GDK_VERSION_MAJOR}.${GDK_VERSION_MINOR}.${GDK_VERSION_PATCH}")
 
 # version of the MAPI library (subdirectory clients/mapilib)
@@ -56,13 +56,13 @@ set(MAPI_VERSION "${MAPI_VERSION_MAJOR}.
 # version of the MONETDB5 library (subdirectory monetdb5, not including extras 
or sql)
 set(MONETDB5_VERSION_MAJOR "35")
 set(MONETDB5_VERSION_MINOR "0")
-set(MONETDB5_VERSION_PATCH "2")
+set(MONETDB5_VERSION_PATCH "3")
 set(MONETDB5_VERSION 
"${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_MINOR}.${MONETDB5_VERSION_PATCH}")
 
 # version of the MONETDBE library (subdirectory tools/monetdbe)
 set(MONETDBE_VERSION_MAJOR "26")
 set(MONETDBE_VERSION_MINOR "0")
-set(MONETDBE_VERSION_PATCH "5")
+set(MONETDBE_VERSION_PATCH "6")
 set(MONETDBE_VERSION 
"${MONETDBE_VERSION_MAJOR}.${MONETDBE_VERSION_MINOR}.${MONETDBE_VERSION_PATCH}")
 
 # version of the STREAM library (subdirectory common/stream)
@@ -74,5 +74,5 @@ set(STREAM_VERSION "${STREAM_VERSION_MAJ
 # version of the SQL library (subdirectory sql)
 set(SQL_VERSION_MAJOR "14")
 set(SQL_VERSION_MINOR "1")
-set(SQL_VERSION_PATCH "2")
+set(SQL_VERSION_PATCH "3")
 set(SQL_VERSION 
"${SQL_VERSION_MAJOR}.${SQL_VERSION_MINOR}.${SQL_VERSION_PATCH}")
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,43 @@
+monetdb (11.49.7) unstable; urgency=low
+
+  * Rebuilt.
+  * GH#7469: Crash when using `CONTAINS`
+  * GH#7479: MonetDB server crashes in `exp_ref`
+  * GH#7490: commonTerms optimizer no longer works
+  * GH#7495: Crash when simultaneously querying and updating a string column.
+
+ -- Sjoerd Mullender   Tue, 09 Apr 2024 10:43:09 +0200
+
+monetdb (11.49.7) unstable; urgency=low
+
+  * gdk: Threads have their own list of free bats.  The list was not returned
+to the system when a thread exited, meaning that the free bats that
+were in the list would not be reused by any thread.  This has been
+fixed.
+
+ -- Sjoerd Mullender   Thu, 28 Mar 2024 10:43:09 +0200
+
+monetdb (11.49.7) unstable; urgency=low
+
+  * monetdb5: Fixed interaction between mserver5 and remote mserver5 when only 
one
+of the two has 128 bit integer support.
+
+ -- Sjoerd Mullender   Tue, 19 Mar 2024 10:43:09 +0200
+
+monetdb (11.49.7) 

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-04-09 Thread Sjoerd Mullender via checkin-list
Changeset: 4756b4c1ab1c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4756b4c1ab1c
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-09 Thread Sjoerd Mullender via checkin-list
Changeset: 80c7640f97da for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/80c7640f97da
Modified Files:
gdk/gdk_bat.c
gdk/gdk_bbp.c
gdk/gdk_utils.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (130 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -905,8 +905,8 @@ COLcopy(BAT *b, int tt, bool writable, r
memcpy(bn->tvheap->base, bi.vh->base, 
bi.vhfree);
bn->tvheap->free = bi.vhfree;
bn->tvheap->dirty = true;
-   if (ATOMstorage(b->ttype) == TYPE_str && 
b->tvheap->free >= GDK_STRHASHSIZE)
-   memcpy(b->tvheap->base, strhash, 
GDK_STRHASHSIZE);
+   if (ATOMstorage(b->ttype) == TYPE_str && 
bi.vhfree >= GDK_STRHASHSIZE)
+   memcpy(bn->tvheap->base, strhash, 
GDK_STRHASHSIZE);
}
 
/* make sure we use the correct capacity */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4866,7 +4866,8 @@ BBPprintinfo(void)
int nh = 0;
 
BBPtmlock();
-   for (bat i = 1, sz = (bat) ATOMIC_GET(); i < sz; i++) {
+   bat sz = (bat) ATOMIC_GET();
+   for (bat i = 1; i < sz; i++) {
MT_lock_set((i));
if (BBP_refs(i) > 0 || BBP_lrefs(i) > 0) {
BAT *b = BBP_desc(i);
@@ -4896,9 +4897,13 @@ BBPprintinfo(void)
}
MT_lock_unset((i));
}
+   uint32_t nfree = BBP_nfree;
BBPtmunlock();
-   printf("%d persistent bats using %zu virtual memory (%zu malloced)\n", 
pn, pvm, pmem);
-   printf("%d transient bats using %zu virtual memory (%zu malloced)\n", 
tn, tvm, tmem);
+   printf("%d persistent bats using %zu virtual memory (%zu malloced)\n",
+  pn, pvm, pmem);
+   printf("%d transient bats using %zu virtual memory (%zu malloced)\n",
+  tn, tvm, tmem);
printf("%d bats are \"hot\" (i.e. currently or recently used)\n", nh);
-   printf("%"PRIu32" bats are in global free list\n", BBP_nfree);
+   printf("%d bats total, %"PRIu32" free bats in common shared list\n",
+  sz - 1, nfree);
 }
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2060,6 +2060,7 @@ GDKprintinfo(void)
size_t allocated = (size_t) ATOMIC_GET(_mallocedbytes_estimate);
size_t vmallocated = (size_t) ATOMIC_GET(_vm_cursize);
 
+   printf("SIGUSR1 info start\n");
printf("Virtual memory allocated: %zu, of which %zu with malloc\n",
   vmallocated + allocated, allocated);
printf("gdk_vm_maxsize: %zu, gdk_mem_maxsize: %zu\n",
@@ -2093,6 +2094,7 @@ GDKprintinfo(void)
dump_threads();
for (struct prinfocb *p = prinfocb; p; p = p->next)
(*p->func)();
+   printf("SIGUSR1 info end\n");
 }
 
 exception_buffer *
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -64,6 +64,11 @@ mapiportre = re.compile(r'mapi:monetdb:/
 
 geos_version = '@GEOS_VERSION@'.split('.')
 
+# free bats, used bats, total bats
+fbre = re.compile(r' (?P\d+) free bats')
+ubre = re.compile(r'^(?P\d+) (persistent|transient) bats')
+tbre = re.compile(r'^(?P\d+) bats total')
+
 # default is no color (these three functions may get redefined)
 def prred(str):
 print(str, end='')
@@ -1468,9 +1473,7 @@ def PerformDir(env, testdir, testlist, t
 nbats, maxid = crs.fetchall()[0]
 crs.close()
 dbh.close()
-if maxid > nbats and maxid - nbats > 1:
-pSrvr.outfile.write(f'Too many free bats.  Max ID = 
{maxid}, # used = {nbats}, diff = {maxid - nbats}.\n')
-pSrvr.sendusr1()
+pSrvr.sendusr1()
 pSrvr.terminate()
 pSrvr = None
 if produce_html:
@@ -1480,10 +1483,31 @@ def PerformDir(env, testdir, testlist, t
 o.write('{} standard 
{}\n'.format(TSTDIR, 'output' if ext == 'out' else 'error'))
 o.write('\n')
 empty = True
+sigusr1 = False
+nfree = 0
+nused = 0
+ntotal = 0
 for line in openutf8(os.path.join(TSTTRGDIR, 
f'SingleServer.{ext}')):
 if empty:
 o.write('\n')
 empty = False
+if 'SIGUSR1 info start' in line:
+sigusr1 = True
+line = '#' + line
+elif 'SIGUSR1 info end' 

MonetDB: default - Merge with Dec2023 branch.

2024-04-08 Thread Sjoerd Mullender via checkin-list
Changeset: 44ee8948ade0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/44ee8948ade0
Modified Files:
gdk/gdk_bat.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (58 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -798,6 +798,7 @@ COLcopy(BAT *b, int tt, bool writable, r
bool slowcopy = false;
BAT *bn = NULL;
BATiter bi;
+   char strhash[GDK_STRHASHSIZE];
 
BATcheck(b, NULL);
 
@@ -810,7 +811,24 @@ COLcopy(BAT *b, int tt, bool writable, r
return NULL;
}
 
-   bi = bat_iterator(b);
+   /* in case of a string bat, we save the string heap hash table
+* while we have the lock so that we can restore it in the copy;
+* this is because during our operation, a parallel thread could
+* be adding strings to the vheap which would modify the hash
+* table and that would result in buckets containing values
+* beyond the original vheap that we're copying */
+   MT_lock_set(>theaplock);
+   bi = bat_iterator_nolock(b);
+   if (ATOMstorage(b->ttype) == TYPE_str && b->tvheap->free >= 
GDK_STRHASHSIZE)
+   memcpy(strhash, b->tvheap->base, GDK_STRHASHSIZE);
+
+#ifndef NDEBUG
+   bi.locked = true;
+#endif
+   HEAPincref(bi.h);
+   if (bi.vh)
+   HEAPincref(bi.vh);
+   MT_lock_unset(>theaplock);
 
/* first try case (1); create a view, possibly with different
 * atom-types */
@@ -887,6 +905,8 @@ COLcopy(BAT *b, int tt, bool writable, r
memcpy(bn->tvheap->base, bi.vh->base, 
bi.vhfree);
bn->tvheap->free = bi.vhfree;
bn->tvheap->dirty = true;
+   if (ATOMstorage(b->ttype) == TYPE_str && 
b->tvheap->free >= GDK_STRHASHSIZE)
+   memcpy(b->tvheap->base, strhash, 
GDK_STRHASHSIZE);
}
 
/* make sure we use the correct capacity */
diff --git a/sql/ChangeLog.Dec2023 b/sql/ChangeLog.Dec2023
--- a/sql/ChangeLog.Dec2023
+++ b/sql/ChangeLog.Dec2023
@@ -2,6 +2,6 @@
 # This file is updated with Maddlog
 
 * Tue Mar 19 2024 Sjoerd Mullender 
-- Fixed issue where equal column aliases where created. When those
-  aliases where parsed on the remote side it could give crashes.
+- Fixed issue where equal column aliases were created. When those
+  aliases were parsed on the remote side it could give crashes.
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-08 Thread Sjoerd Mullender via checkin-list
Changeset: 2752bc2cf798 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2752bc2cf798
Modified Files:
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (15 lines):

diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -58,9 +58,9 @@ import difflib
 # this stuff is for geos pre 3.12: 3.12 introduced an extra set of
 # parentheses in MULTIPOINT values
 geosre = re.compile(r'MULTIPOINT *\((?P[^()]*)\)')
-ptsre = re.compile(r'-?\d+ -?\d+')
+ptsre = re.compile(r'-?\d+(?:\.\d+)? -?\d+(?:\.\d+)?')
 geoszre = re.compile(r'MULTIPOINT *Z *\((?P[^()]*)\)')
-ptszre = re.compile(r'-?\d+ -?\d+ -?\d+')
+ptszre = re.compile(r'-?\d+(?:\.\d+)? -?\d+(?:\.\d+)? -?\d+(?:\.\d+)?')
 
 architecture = platform.machine()
 if architecture == 'AMD64': # Windows :-(
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-04-08 Thread Sjoerd Mullender via checkin-list
Changeset: 90066d9863df for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/90066d9863df
Modified Files:
sql/test/BugTracker-2022/Tests/incomplete-sql-script.Bug-7298.SQL.py
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 2912 to 300 lines):

diff --git a/documentation/monetdbe/manual_pages/monetdbe_options.rst 
b/documentation/monetdbe/manual_pages/monetdbe_options.rst
--- a/documentation/monetdbe/manual_pages/monetdbe_options.rst
+++ b/documentation/monetdbe/manual_pages/monetdbe_options.rst
@@ -31,9 +31,9 @@ MonetDBe options struct. Object can be p
 (2) int querytimeout. Gracefully terminate query after a few seconds.
 (3) int sessiontimeout. Graceful terminate the session after a few seconds.
 (4) int nr_threads. Maximum number of worker treads, limits level of 
parallelism.
-(5) monetdbe_remote* remote. Pointer to a monetdbe_remote object.
-(6) monetdbe_mapi_server* mapi_server. Pointer to a monetdbe_mapi_server 
object.
-(7) const char *trace_file. File to which log output should be written.
+(5) monetdbe_remote\* remote. Pointer to a monetdbe_remote object.
+(6) monetdbe_mapi_server\* mapi_server. Pointer to a monetdbe_mapi_server 
object.
+(7) const char \*trace_file. File to which log output should be written.
 
 EXAMPLES
 
diff --git a/geom/sql/functions/Tests/All b/geom/sql/functions/Tests/All
--- a/geom/sql/functions/Tests/All
+++ b/geom/sql/functions/Tests/All
@@ -3,18 +3,15 @@ HAVE_GEOM?loadTestWKT
 HAVE_GEOM?ST_PointFromText
 HAVE_GEOM?ST_LineFromText
 HAVE_GEOM?ST_PolygonFromText
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_MPointFromText
-HAVE_GEOM_VERSION>=3.12.0?ST_MPointFromText-3.12
+HAVE_GEOM?ST_MPointFromText
 HAVE_GEOM?ST_MLineFromText
 HAVE_GEOM?ST_MPolygonFromText
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_GeomFromText
-HAVE_GEOM_VERSION>=3.12.0?ST_GeomFromText-3.12
+HAVE_GEOM?ST_GeomFromText
 
 HAVE_GEOM?dropTestWKT
 
 HAVE_GEOM?ST_MakePoint
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_Collect
-HAVE_GEOM_VERSION>=3.12.0?ST_Collect-3.12
+HAVE_GEOM?ST_Collect
 HAVE_GEOM?ST_MakeLine
 HAVE_GEOM?loadTestPolygons
 HAVE_GEOM?ST_Intersects
@@ -27,50 +24,38 @@ HAVE_GEOM?ST_DWithinRTree
 HAVE_GEOM?loadTestGeometries
 
 
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_GeometryType
-HAVE_GEOM_VERSION>=3.12.0?ST_GeometryType-3.12
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_AsText
-HAVE_GEOM_VERSION>=3.12.0?ST_AsText-3.12
+HAVE_GEOM?ST_GeometryType
+HAVE_GEOM?ST_AsText
 
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_IsClosed
-HAVE_GEOM_VERSION>=3.12.0?ST_IsClosed-3.12
+HAVE_GEOM?ST_IsClosed
 HAVE_GEOM?ST_IsEmpty
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_IsSimple
-HAVE_GEOM_VERSION>=3.12.0?ST_IsSimple-3.12
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_IsValid
-HAVE_GEOM_VERSION>=3.12.0?ST_IsValid-3.12
+HAVE_GEOM?ST_IsSimple
+HAVE_GEOM?ST_IsValid
 HAVE_GEOM?ST_IsRing
 
 HAVE_GEOM?XYZ
 HAVE_GEOM?XYZMinMax
 #HAVE_GEOM?srid
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_GeometryN
-HAVE_GEOM_VERSION>=3.12.0?ST_GeometryN-3.12
+HAVE_GEOM?ST_GeometryN
 HAVE_GEOM?ST_NumGeometries
 HAVE_GEOM?ST_NumPoints
 HAVE_GEOM?ST_NPoints
 
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_NumInteriorRings
-HAVE_GEOM_VERSION>=3.12.0?ST_NumInteriorRings-3.12
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_NRings
-HAVE_GEOM_VERSION>=3.12.0?ST_NRings-3.12
+HAVE_GEOM?ST_NumInteriorRings
+HAVE_GEOM?ST_NRings
 
 #HAVE_GEOM?transform
 
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_Contains
-HAVE_GEOM_VERSION>=3.12.0?ST_Contains-3.12
+HAVE_GEOM?ST_Contains
 
 #HAVE_GEOM?equals
 
-HAVE_GEOM_VERSION>=3.11.1&!GEOS_VERSION>=3.12.0?ST_Boundary
-HAVE_GEOM_VERSION>=3.11.1_VERSION>=3.12.0?ST_Boundary-3.12
+HAVE_GEOM_VERSION>=3.11.1?ST_Boundary
 
 HAVE_GEOM?ST_Dimension
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_CoordDim
-HAVE_GEOM_VERSION>=3.12.0?ST_CoordDim-3.12
+HAVE_GEOM?ST_CoordDim
 
-HAVE_GEOM&!GEOS_VERSION>=3.12.0?ST_AsEWKT
-HAVE_GEOM_VERSION>=3.12.0?ST_AsEWKT-3.12
+HAVE_GEOM?ST_AsEWKT
 
 #HAVE_GEOM?ST_Covers #Look at ST_Covers.sql for more details on the problem
 #HAVE_GEOM?ST_CoveredBy #Look at ST_CoveredBy.sql for more details on the 
problem
@@ -92,7 +77,6 @@ HAVE_GEOM?ST_MakeBox2D
 
 HAVE_GEOM?dropTestGeometries
 HAVE_GEOM?ST_DWithin2
-HAVE_GEOM&!GEOS_VERSION>=3.12.0_PROJ?ST_Transform
-HAVE_GEOM_VERSION>=3.12.0_PROJ?ST_Transform-3.12
+HAVE_GEOM_PROJ?ST_Transform
 
 HAVE_GEOM?geomcasts
diff --git a/geom/sql/functions/Tests/ST_AsEWKT-3.12.reqtests 
b/geom/sql/functions/Tests/ST_AsEWKT-3.12.reqtests
deleted file mode 100644
--- a/geom/sql/functions/Tests/ST_AsEWKT-3.12.reqtests
+++ /dev/null
@@ -1,1 +0,0 @@
-loadTestGeometries
diff --git a/geom/sql/functions/Tests/ST_AsEWKT-3.12.test 
b/geom/sql/functions/Tests/ST_AsEWKT-3.12.test
deleted file mode 100644
--- a/geom/sql/functions/Tests/ST_AsEWKT-3.12.test
+++ /dev/null
@@ -1,219 +0,0 @@
-query T rowsort
-select st_asEWKT(st_pointfromtext('point(10 10)'))
-
-SRID:0;POINT (10 10)
-
-query T rowsort
-select st_asEWKT(st_pointfromtext('point(20 20)', 4326))
-
-SRID:4326;POINT (20 20)
-
-query T rowsort

MonetDB: default - Merge with Dec2023 branch.

2024-04-03 Thread Sjoerd Mullender via checkin-list
Changeset: 8d38ce3d6879 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8d38ce3d6879
Modified Files:
gdk/gdk_bbp.c
sql/common/sql_types.c
sql/include/sql_catalog.h
sql/server/rel_select.c
sql/storage/bat/bat_storage.c
sql/storage/objectset.c
sql/storage/store.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 844 to 300 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2940,7 +2940,7 @@ BBPclear(bat i)
 }
 
 void
-BBPrelinquish(void)
+BBPrelinquishbats(void)
 {
struct freebats *t = MT_thread_getfreebats();
if (t == NULL || t->nfreebats == 0)
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -769,7 +769,7 @@ thread_starter(void *arg)

(*self->thread_funcs[i].destroy)(self->thread_funcs[i].data);
}
free(self->thread_funcs);
-   BBPrelinquish();
+   BBPrelinquishbats();
ATOMIC_SET(>exited, 1);
TRC_DEBUG(THRD, "Exit thread \"%s\"\n", self->threadname);
return 0;   /* NULL for pthreads, 0 for Windows */
diff --git a/gdk/gdk_system_private.h b/gdk/gdk_system_private.h
--- a/gdk/gdk_system_private.h
+++ b/gdk/gdk_system_private.h
@@ -45,5 +45,5 @@ struct freebats {
 };
 struct freebats *MT_thread_getfreebats(void)
__attribute__((__visibility__("hidden")));
-void BBPrelinquish(void)
+void BBPrelinquishbats(void)
__attribute__((__visibility__("hidden")));
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -210,9 +210,9 @@ base_init(sql_allocator *sa, sql_base * 
*b = (sql_base) {
.id = id,
.new = isnew,
-   .refcnt = 1,
.name = (name) ? SA_STRDUP(sa, name) : NULL,
};
+   ATOMIC_INIT(>refcnt, 1);
 }
 
 void
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
@@ -195,8 +195,8 @@ typedef void *sql_store;
 typedef struct sql_base {
unsigned int
new:1,
-   deleted:1,
-   refcnt:30;
+   deleted:1;
+   ATOMIC_TYPE refcnt;
sqlid id;
char *name;
 } sql_base;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -1306,7 +1306,7 @@ rel_column_ref(sql_query *query, sql_rel
sql_rel *gp = inner;
while (gp && is_select(gp->op))
gp = gp->l;
-   if (gp && gp->l && !(exp = rel_bind_column(sql, gp->l, 
name, f, 0)) && sql->session->status == -ERR_AMBIGUOUS)
+   if (gp && !is_basetable(gp->op) && gp->l && !(exp = 
rel_bind_column(sql, gp->l, name, f, 0)) && sql->session->status == 
-ERR_AMBIGUOUS)
return NULL;
}
if (!exp && query && query_has_outer(query)) {
@@ -1402,7 +1402,7 @@ rel_column_ref(sql_query *query, sql_rel
sql_rel *gp = inner;
while (gp && is_select(gp->op))
gp = gp->l;
-   if (gp && gp->l && !(exp = rel_bind_column3(sql, gp->l, 
sname, tname, cname, f)) && sql->session->status == -ERR_AMBIGUOUS)
+   if (gp && !is_basetable(gp->op) && gp->l && !(exp = 
rel_bind_column3(sql, gp->l, sname, tname, cname, f)) && sql->session->status 
== -ERR_AMBIGUOUS)
return NULL;
}
if (!exp && query && query_has_outer(query)) {
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -36,8 +36,8 @@ static int commit_create_del(sql_trans *
 static int tc_gc_col( sql_store Store, sql_change *c, ulng oldest);
 static int tc_gc_idx( sql_store Store, sql_change *c, ulng oldest);
 static int tc_gc_del( sql_store Store, sql_change *c, ulng oldest);
-static int tc_gc_drop_col( sql_store Store, sql_change *c, ulng oldest);
-static int tc_gc_drop_idx( sql_store Store, sql_change *c, ulng oldest);
+static int tc_gc_upd_col( sql_store Store, sql_change *c, ulng oldest);
+static int tc_gc_upd_idx( sql_store Store, sql_change *c, ulng oldest);
 
 static void merge_delta( sql_delta *obat);
 
@@ -120,11 +120,24 @@ unlock_column(sqlstore *store, sqlid id)
MT_lock_unset(>column_locks[id&(NR_COLUMN_LOCKS-1)]);
 }
 
+static void
+trans_add_obj(sql_trans *tr, sql_base *b, void *data, tc_cleanup_fptr cleanup, 
tc_commit_fptr commit, tc_log_fptr log)
+{
+   assert(cleanup);
+   trans_add(tr, dup_base(b), data, cleanup, commit, log);
+}
+
+static void
+trans_add_table(sql_trans *tr, sql_base *b, sql_table *t, void 

MonetDB: default - Merge with Dec2023 branch.

2024-04-02 Thread Sjoerd Mullender via checkin-list
Changeset: 97f68c376894 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/97f68c376894
Modified Files:
gdk/gdk_bbp.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (209 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -120,6 +120,7 @@ static MT_Lock BBPnameLock = MT_LOCK_INI
 static bat BBP_hash[BBP_mask+1];   /* BBP logical name hash buckets */
 static MT_Lock GDKcacheLock = MT_LOCK_INITIALIZER(GDKcacheLock);
 static bat BBP_free;
+static uint32_t BBP_nfree;
 #define BBP_FREE_LOWATER   10
 #define BBP_FREE_HIWATER   50
 
@@ -2003,6 +2004,7 @@ BBPinit(bool allow_hge_upgrade)
if (BBP_desc(i)->batCacheid == 0) {
BBP_next(i) = BBP_free;
BBP_free = i;
+   BBP_nfree++;
}
}
 
@@ -2693,6 +2695,7 @@ maybeextend(void)
BBP_next(sz) = ++size;
}
BBP_next(size) = 0;
+   BBP_nfree += BBP_FREE_LOWATER;
return GDK_SUCCEED;
 }
 
@@ -2731,6 +2734,7 @@ BBPallocbat(int tt)
for (int x = 0; x < BBP_FREE_LOWATER && i; x++) {
assert(BBP_next(i) == 0 || BBP_next(i) > i);
t->nfreebats++;
+   BBP_nfree--;
l = i;
i = BBP_next(i);
}
@@ -2845,6 +2849,7 @@ BBPhandover(struct freebats *t, uint32_t
if (n >= t->nfreebats) {
bid = t->freebats;
t->freebats = 0;
+   BBP_nfree += t->nfreebats;
t->nfreebats = 0;
} else {
p = >freebats;
@@ -2852,6 +2857,7 @@ BBPhandover(struct freebats *t, uint32_t
p = _next(*p);
bid = *p;
*p = 0;
+   BBP_nfree += n;
t->nfreebats -= n;
}
p = _free;
@@ -2934,9 +2940,10 @@ BBPclear(bat i)
 }
 
 void
-BBPrelinquish(struct freebats *t)
+BBPrelinquish(void)
 {
-   if (t->nfreebats == 0)
+   struct freebats *t = MT_thread_getfreebats();
+   if (t == NULL || t->nfreebats == 0)
return;
MT_lock_set();
while (t->nfreebats > 0) {
@@ -4672,6 +4679,7 @@ gdk_bbp_reset(void)
int i;
 
BBP_free = 0;
+   BBP_nfree = 0;
while (BBPlimit > BBPINIT) {
BBPlimit -= BBPINIT;
assert(BBPlimit >= 0);
@@ -4905,4 +4913,5 @@ BBPprintinfo(void)
printf("%d persistent bats using %zu virtual memory (%zu malloced)\n", 
pn, pvm, pmem);
printf("%d transient bats using %zu virtual memory (%zu malloced)\n", 
tn, tvm, tmem);
printf("%d bats are \"hot\" (i.e. currently or recently used)\n", nh);
+   printf("%"PRIu32" bats are in global free list\n", BBP_nfree);
 }
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -315,7 +315,6 @@ rm_mtthread(struct mtthread *t)
struct mtthread **pt;
 
assert(t != );
-   BBPrelinquish(>freebats);
thread_lock();
for (pt =  *pt && *pt != t; pt = &(*pt)->next)
;
@@ -770,6 +769,7 @@ thread_starter(void *arg)

(*self->thread_funcs[i].destroy)(self->thread_funcs[i].data);
}
free(self->thread_funcs);
+   BBPrelinquish();
ATOMIC_SET(>exited, 1);
TRC_DEBUG(THRD, "Exit thread \"%s\"\n", self->threadname);
return 0;   /* NULL for pthreads, 0 for Windows */
diff --git a/gdk/gdk_system_private.h b/gdk/gdk_system_private.h
--- a/gdk/gdk_system_private.h
+++ b/gdk/gdk_system_private.h
@@ -45,5 +45,5 @@ struct freebats {
 };
 struct freebats *MT_thread_getfreebats(void)
__attribute__((__visibility__("hidden")));
-void BBPrelinquish(struct freebats *t)
+void BBPrelinquish(void)
__attribute__((__visibility__("hidden")));
diff --git a/sql/test/transactions/Tests/All b/sql/test/transactions/Tests/All
--- a/sql/test/transactions/Tests/All
+++ b/sql/test/transactions/Tests/All
@@ -8,3 +8,5 @@ view-deps
 chaining
 truncate-insert-restart
 update_drop_crash
+KNOWNFAIL?update_drop_crash2
+KNOWNFAIL?insert_drop_crash
diff --git a/sql/test/transactions/Tests/insert_drop_crash.test 
b/sql/test/transactions/Tests/insert_drop_crash.test
new file mode 100644
--- /dev/null
+++ b/sql/test/transactions/Tests/insert_drop_crash.test
@@ -0,0 +1,29 @@
+statement ok
+create table t1 (i int)
+
+statement ok
+insert into t1 values (1), (2), (3), (9)
+
+@connection(id=drop)
+statement ok
+start transaction
+
+@connection(id=insert)
+statement ok
+start transaction
+
+@connection(id=insert)
+statement ok
+insert into t1 values (1), (2), (3), (9)
+
+@connection(id=drop)
+statement ok
+drop table t1
+
+@connection(id=drop)
+statement ok
+commit
+
+@connection(id=insert)
+statement ok
+commit
diff --git a/sql/test/transactions/Tests/update_drop_crash2.test 

MonetDB: default - Merge with Dec2023 branch.

2024-03-29 Thread Sjoerd Mullender via checkin-list
Changeset: a5153b2f902c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a5153b2f902c
Modified Files:
MonetDB.spec
gdk/gdk_bbp.c
gdk/gdk_private.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_interpreter.c
sql/server/rel_optimize_proj.c
sql/server/rel_optimize_sel.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (272 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -808,9 +808,7 @@ do
   /usr/sbin/semodule -s ${selinuxvariant} -i \
 %{_datadir}/selinux/${selinuxvariant}/monetdb.pp &> /dev/null || :
 done
-# use /var/run/monetdb since that's what it says in the monetdb.fc file
-# it says that because /run/monetdb for some reason doesn't work
-/sbin/restorecon -R %{_localstatedir}/monetdb5 %{_localstatedir}/log/monetdb 
/var/run/monetdb %{_bindir}/monetdbd %{_bindir}/mserver5 
%{_unitdir}/monetdbd.service &> /dev/null || :
+/sbin/restorecon -R %{_localstatedir}/monetdb5 %{_localstatedir}/log/monetdb 
%{_rundir}/monetdb %{_bindir}/monetdbd %{_bindir}/mserver5 
%{_unitdir}/monetdbd.service &> /dev/null || :
 /usr/bin/systemctl try-restart monetdbd.service
 
 %postun selinux
@@ -839,6 +837,13 @@ fi
 %setup -q
 
 %build
+# from Fedora 40, selinux uses /run where before it used /var/run
+# the code is now for Fedora 40 but needs a patch for older versions
+%if (0%{?fedora} < 40)
+sed -i 
's;@CMAKE_INSTALL_FULL_RUNSTATEDIR@/monetdb;@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/run/monetdb;'
 misc/selinux/monetdb.fc.in
+sed -i 's/1\.2/1.1/' misc/selinux/monetdb.te
+%endif
+
 %cmake3 \
 -DCMAKE_INSTALL_RUNSTATEDIR=/run \
 -DRELEASE_VERSION=ON \
diff --git a/gdk/ChangeLog.Dec2023 b/gdk/ChangeLog.Dec2023
--- a/gdk/ChangeLog.Dec2023
+++ b/gdk/ChangeLog.Dec2023
@@ -1,6 +1,12 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Thu Mar 28 2024 Sjoerd Mullender 
+- Threads have their own list of free bats.  The list was not returned
+  to the system when a thread exited, meaning that the free bats that
+  were in the list would not be reused by any thread.  This has been
+  fixed.
+
 * Mon Mar 18 2024 Sjoerd Mullender 
 - Fixed a couple of deadlock situations, one actually observed, one
   never observed.
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1746,6 +1746,10 @@ BBPtrim(bool aggressive, bat nbat)
flag |= BBPHOT;
lng t0 = GDKusec();
for (bat bid = 1; bid < nbat && !GDKexiting(); bid++) {
+   /* quick check to see if we might possibly have to do
+* work (includes free bats) */
+   if ((BBP_status(bid) & BBPLOADED) == 0)
+   continue;
/* don't do this during a (sub)commit */
BBPtmlock();
MT_lock_set((bid));
@@ -2930,10 +2934,8 @@ BBPclear(bat i)
 }
 
 void
-BBPrelinquish(void)
+BBPrelinquish(struct freebats *t)
 {
-   struct freebats *t = MT_thread_getfreebats();
-
if (t->nfreebats == 0)
return;
MT_lock_set();
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -112,8 +112,6 @@ bat BBPallocbat(int tt)
__attribute__((__visibility__("hidden")));
 void BBPprintinfo(void)
__attribute__((__visibility__("hidden")));
-void BBPrelinquish(void)
-   __attribute__((__visibility__("hidden")));
 int BBPselectfarm(role_t role, int type, enum heaptype hptype)
__attribute__((__visibility__("hidden")));
 gdk_return BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng 
logno)
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -285,9 +285,10 @@ dump_threads(void)
MT_Cond *cn = t->condwait;
struct mtthread *jn = t->joinwait;
int pos = snprintf(buf, sizeof(buf),
-  "%s, tid %zu, waiting for %s%s, working on 
%.200s",
+  "%s, tid %zu, %"PRIu32" free bats, waiting 
for %s%s, working on %.200s",
   t->threadname,
   t->tid,
+  t->freebats.nfreebats,
   lk ? "lock " : sm ? "semaphore " : cn ? 
"condvar " : jn ? "thread " : "",
   lk ? lk->name : sm ? sm->name : cn ? 
cn->name : jn ? jn->threadname : "nothing",
   ATOMIC_GET(>exited) ? "exiting" :
@@ -314,6 +315,7 @@ rm_mtthread(struct mtthread *t)
struct mtthread **pt;
 
assert(t != );
+   BBPrelinquish(>freebats);
thread_lock();
for (pt =  *pt && *pt != t; pt = &(*pt)->next)
;
diff --git a/gdk/gdk_system_private.h b/gdk/gdk_system_private.h
--- a/gdk/gdk_system_private.h
+++ b/gdk/gdk_system_private.h
@@ -45,3 +45,5 @@ struct freebats {
 };
 

MonetDB: default - Merge with Dec2023 branch.

2024-03-27 Thread Sjoerd Mullender via checkin-list
Changeset: 9b5649554a35 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9b5649554a35
Modified Files:
sql/test/miscellaneous/Tests/simple_plans.test
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (92 lines):

diff --git a/sql/test/miscellaneous/Tests/simple_plans.test 
b/sql/test/miscellaneous/Tests/simple_plans.test
--- a/sql/test/miscellaneous/Tests/simple_plans.test
+++ b/sql/test/miscellaneous/Tests/simple_plans.test
@@ -208,7 +208,7 @@ EXPLAIN SELECT 1 FROM another_t t1 INNER
 algebra.project
 1
 algebra.projection
-3
+2
 algebra.rangejoin
 1
 bat.pack
@@ -216,7 +216,7 @@ 5
 querylog.define
 1
 sql.bind
-2
+1
 sql.mvc
 1
 sql.resultSet
@@ -232,7 +232,7 @@ EXPLAIN SELECT 1 FROM another_t t1 INNER
 algebra.project
 1
 algebra.projection
-3
+2
 algebra.rangejoin
 1
 bat.pack
@@ -240,7 +240,7 @@ 5
 querylog.define
 1
 sql.bind
-2
+1
 sql.mvc
 1
 sql.resultSet
@@ -256,7 +256,7 @@ EXPLAIN SELECT 1 FROM another_t t1 INNER
 algebra.project
 2
 algebra.projection
-3
+2
 algebra.rangejoin
 1
 bat.pack
@@ -264,7 +264,7 @@ 5
 querylog.define
 1
 sql.bind
-2
+1
 sql.mvc
 1
 sql.resultSet
@@ -282,7 +282,7 @@ 1
 algebra.project
 1
 algebra.projection
-3
+2
 bat.pack
 5
 bat.single
@@ -290,7 +290,7 @@ 2
 querylog.define
 1
 sql.bind
-2
+1
 sql.mvc
 1
 sql.resultSet
diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -545,8 +545,12 @@ class SQLLogic:
 m.update(b'\n')
 result.append(col)
 if err and expected is not None:
+recv = []
+for row in ndata:
+for col in row:
+recv.append(col)
 print('Differences:', file=self.out)
-self.out.writelines(list(difflib.ndiff([x + '\n' for x in 
expected], [x + '\n' for x in ndata])))
+self.out.writelines(list(difflib.ndiff([x + '\n' for x in 
expected], [x + '\n' for x in recv])))
 if resdata is not None:
 result = []
 for row in resdata:
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-27 Thread Sjoerd Mullender via checkin-list
Changeset: 93c85de06b98 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/93c85de06b98
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (20 lines):

diff --git a/monetdb5/optimizer/opt_commonTerms.c 
b/monetdb5/optimizer/opt_commonTerms.c
--- a/monetdb5/optimizer/opt_commonTerms.c
+++ b/monetdb5/optimizer/opt_commonTerms.c
@@ -139,7 +139,7 @@ OPTcommonTermsImplementation(Client cntx
}
/* simple SQL bind operations need not be merged, they are cheap
 * and/or can be duplicated eliminated elsewhere cheaper */
-   if (getModuleId(p) == sqlRef && getFunctionId(p) != tidRef) {
+   if (getModuleId(p) == sqlRef && (getFunctionId(p) != tidRef && 
getFunctionId(p) != bindRef)) {
pushInstruction(mb, p);
old[i] = NULL;
continue;
diff --git a/sql/test/transactions/Tests/All b/sql/test/transactions/Tests/All
--- a/sql/test/transactions/Tests/All
+++ b/sql/test/transactions/Tests/All
@@ -7,3 +7,4 @@ mergetable-deps-crash
 view-deps
 chaining
 truncate-insert-restart
+update_drop_crash
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-25 Thread Sjoerd Mullender via checkin-list
Changeset: e820748f2614 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e820748f2614
Modified Files:
gdk/gdk_logger.c
sql/backends/monet5/sql.c
sql/server/rel_optimize_proj.c
sql/server/rel_optimize_sel.c
sql/server/rel_unnest.c
sql/server/sql_mvc.c
sql/storage/bat/bat_storage.c
sql/storage/store.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 879 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1303,8 +1303,9 @@ log_read_transaction(logger *lg, uint32_
 * return GDK_FAIL */
switch (l.flag) {
case LOG_START:
-   if (l.id > lg->tid) /* TODO: check that this can 
only happen during initialisation */
-   lg->tid = l.id;
+   assert(!lg->flushing || l.id <= lg->tid);
+   if (!lg->flushing && l.id > lg->tid)
+   lg->tid = l.id; /* should only happen during 
initialization */
if ((tr = tr_create(tr, l.id)) == NULL) {
TRC_CRITICAL(GDK, "memory allocation failed\n");
err = LOG_ERR;
@@ -1751,9 +1752,11 @@ cleanup_and_swap(logger *lg, int *r, con
strconcat_len(bak, sizeof(bak), lg->fn, "_catalog_lid", NULL);
if (BBPrename(lg->catalog_lid, bak) < 0)
GDKclrerr();
+   rotation_lock(lg);
for (logged_range *p = lg->pending; p; p = p->next) {
p->cnt -= cleanup;
}
+   rotation_unlock(lg);
return rcnt;
 }
 
@@ -2549,9 +2552,11 @@ log_next_logfile(logger *lg, ulng ts)
int m = (ATOMIC_GET() & FORCEMITOMASK) ? 1000 : 100;
if (!lg->pending || !lg->pending->next)
return NULL;
+   rotation_lock(lg);
if (ATOMIC_GET(>pending->refcount) == 0 && lg->pending != 
lg->current && lg->pending != lg->flush_ranges &&
(ulng) ATOMIC_GET(>pending->last_ts) == (ulng) 
ATOMIC_GET(>pending->flushed_ts) &&
(ulng) ATOMIC_GET(>pending->flushed_ts) <= ts) {
+   rotation_unlock(lg);
logged_range *p = lg->pending;
for (int i = 1;
 i < m && ATOMIC_GET(>refcount) == 0 && p->next && 
p->next != lg->current &&
@@ -2560,6 +2565,7 @@ log_next_logfile(logger *lg, ulng ts)
p = p->next;
return p;
}
+   rotation_unlock(lg);
return NULL;
 }
 
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
@@ -339,7 +339,7 @@ create_table_or_view(mvc *sql, char *sna
break;
}
osa = sql->sa;
-   sql->sa = sql->ta;
+   sql_allocator *nsa = sql->sa = sa_create(NULL);
/* first check default values */
for (n = ol_first_node(t->columns); n; n = n->next) {
sql_column *c = n->data;
@@ -349,13 +349,14 @@ create_table_or_view(mvc *sql, char *sna
const char *next_value_for = "next value for 
\"sys\".\"seq_";
sql_rel *r = NULL;
 
-   sql->sa = sql->ta;
+   sa_reset(nsa);
+   sql->sa = nsa;
r = rel_parse(sql, s, sa_message(sql->ta, "select %s;", 
c->def), m_deps);
if (!r || !is_project(r->op) || !r->exps || 
list_length(r->exps) != 1 ||
exp_check_type(sql, >type, r, 
r->exps->h->data, type_equal) == NULL) {
if (r)
rel_destroy(r);
-   sa_reset(sql->ta);
+   sa_destroy(nsa);
sql->sa = osa;
if (strlen(sql->errstr) > 6 && sql->errstr[5] 
== '!')
throw(SQL, "sql.catalog", "%s", 
sql->errstr);
@@ -367,12 +368,11 @@ create_table_or_view(mvc *sql, char *sna
if (strncmp(c->def, next_value_for, 
strlen(next_value_for)) != 0) {
list *blist = rel_dependencies(sql, r);
if (mvc_create_dependencies(sql, blist, 
nt->base.id, FUNC_DEPENDENCY)) {
-   rel_destroy(r);
-   sa_reset(sql->sa);
+   sa_destroy(nsa);
+   sql->sa = osa;
throw(SQL, "sql.catalog", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
}
}
-   rel_destroy(r);
sa_reset(sql->sa);
}
}
@@ -382,12 +382,12 @@ 

MonetDB: default - Merge with Dec2023 branch.

2024-03-21 Thread Sjoerd Mullender via checkin-list
Changeset: 69cf9a438678 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/69cf9a438678
Modified Files:
gdk/gdk_system.h
sql/storage/store.c
sql/test/BugTracker-2024/Tests/All
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 580 to 300 lines):

diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -280,15 +280,16 @@ dump_threads(void)
char buf[1024];
thread_lock();
for (struct mtthread *t = mtthreads; t; t = t->next) {
+   MT_Lock *lk = t->lockwait;
+   MT_Sema *sm = t->semawait;
+   MT_Cond *cn = t->condwait;
+   struct mtthread *jn = t->joinwait;
int pos = snprintf(buf, sizeof(buf),
-  "%s, tid %zu, waiting for %s, working on 
%.200s",
+  "%s, tid %zu, waiting for %s%s, working on 
%.200s",
   t->threadname,
   t->tid,
-  t->lockwait ? t->lockwait->name :
-  t->semawait ? t->semawait->name :
-  t->condwait ? t->condwait->name :
-  t->joinwait ? t->joinwait->threadname :
-  "nothing",
+  lk ? "lock " : sm ? "semaphore " : cn ? 
"condvar " : jn ? "thread " : "",
+  lk ? lk->name : sm ? sm->name : cn ? 
cn->name : jn ? jn->threadname : "nothing",
   ATOMIC_GET(>exited) ? "exiting" :
   t->working ? t->working : "nothing");
 #ifdef LOCK_OWNER
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -498,7 +498,6 @@ typedef struct MT_Lock {
 
 #define MT_lock_try(l) (pthread_mutex_trylock(&(l)->lock) == 0 && 
(_DBG_LOCK_LOCKER(l), true))
 
-#ifdef LOCK_STATS
 #define MT_lock_set(l) \
do {\
_DBG_LOCK_COUNT_0(l);   \
@@ -511,14 +510,6 @@ typedef struct MT_Lock {
_DBG_LOCK_LOCKER(l);\
_DBG_LOCK_COUNT_2(l);   \
} while (0)
-#else
-#define MT_lock_set(l) \
-   do {\
-   pthread_mutex_lock(&(l)->lock); \
-   _DBG_LOCK_LOCKER(l);\
-   } while (0)
-#endif
-
 #define MT_lock_unset(l)   \
do {\
_DBG_LOCK_UNLOCKER(l);  \
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -57,10 +57,10 @@ ulng
 store_oldest(sqlstore *store, sql_trans *tr)
 {
if (tr && tr->ts == (ulng) ATOMIC_GET(>oldest)) {
-   sql_session *s = store->active->h->data;
-   if (s->tr == tr && store->active->h->next) {
-   s = store->active->h->next->data;
-   return s->tr->ts;
+   sql_trans *otr = store->active->h->data;
+   if (otr == tr && store->active->h->next) {
+   otr = store->active->h->next->data;
+   return otr->ts;
}
}
return (ulng) ATOMIC_GET(>oldest);
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
@@ -34,3 +34,20 @@ between-true-and-null-Bug-7465
 inner-join-contains-7466
 contains-or-7469
 conversion-string-to-bte-failed-7470
+groupby-select1-Bug-7472
+SQLunionfunc-Bug-7473
+VLTgenerator_table-Bug-7474
+exp_equal-Bug-7475
+rel2bin_join-Bug-7476
+atom_cmp-Bug-7477
+exp_equal-Bug-7478
+exp_ref-Bug-7479
+get_rel_count-Bug-7480
+mvc_row_result_wrap-Bug-7481
+bin_find_smallest_column-Bug-7482
+rel_setop_get_statistics-Bug-7483
+rel_groupby_cse-Bug-7484
+rel_groupby_cse-Bug-7485
+CMDgen_group-Bug-7486
+sql_init_subtype-Bug-7487
+orderby-max-over-rows-Bug-7488
diff --git a/sql/test/BugTracker-2024/Tests/CMDgen_group-Bug-7486.test 
b/sql/test/BugTracker-2024/Tests/CMDgen_group-Bug-7486.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/CMDgen_group-Bug-7486.test
@@ -0,0 +1,20 @@
+query I nosort
+WITH x AS ( SELECT * FROM generate_series ( 32989 , 8100 ) EXCEPT SELECT * 
FROM generate_series ( 44 , 3 ) ) SELECT CASE WHEN NULL IN ( 69 ) THEN 41 END 
FROM x LIMIT 3
+
+NULL
+NULL
+NULL
+
+skipif knownfail
+query I nosort
+WITH x AS ( SELECT * FROM generate_series ( 32989 , 8100 ) EXCEPT SELECT * 
FROM generate_series ( 44 , 3 ) ) SELECT CASE WHEN NULL IN ( 69 , MAX ( CASE 
WHEN 97 THEN 66 END ) 

MonetDB: default - Merge with Dec2023 branch.

2024-03-20 Thread Sjoerd Mullender via checkin-list
Changeset: 07bd1d9ae3b8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/07bd1d9ae3b8
Modified Files:
gdk/gdk_select.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (126 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1206,6 +1206,9 @@ BATrange(BATiter *bi, const void *tl, co
if (tl == NULL && th == NULL)
return range_contains; /* looking for everything */
 
+   if (VIEWtparent(bi->b))
+   pb = BATdescriptor(VIEWtparent(bi->b));
+
/* keep locked while we look at the property values */
MT_lock_set(>b->theaplock);
if (bi->minpos != BUN_NONE)
@@ -1221,8 +1224,7 @@ BATrange(BATiter *bi, const void *tl, co
}
bool keep = false;  /* keep lock on parent bat? */
if (minprop == NULL || maxprop == NULL) {
-   if (VIEWtparent(bi->b) &&
-   (pb = BATdescriptor(VIEWtparent(bi->b))) != NULL) {
+   if (pb != NULL) {
MT_lock_set(>theaplock);
if (minprop == NULL && (minprop = BATgetprop_nolock(pb, 
GDK_MIN_BOUND)) != NULL) {
keep = true;
diff --git a/monetdb5/modules/atoms/Tests/All b/monetdb5/modules/atoms/Tests/All
--- a/monetdb5/modules/atoms/Tests/All
+++ b/monetdb5/modules/atoms/Tests/All
@@ -33,13 +33,3 @@ jsonrender
 
 uuid00
 strappend
-
-startswith
-endswith
-contains
-HAVE_ICONV?asciify
-startswith_join
-endswith_join
-contains_join
-
-ts_and_tstz_to_str_bug
diff --git a/monetdb5/modules/kernel/Tests/All 
b/monetdb5/modules/kernel/Tests/All
--- a/monetdb5/modules/kernel/Tests/All
+++ b/monetdb5/modules/kernel/Tests/All
@@ -3,8 +3,3 @@ TriBool
 batstr
 math
 select
-
-HAVE_ICONV?batstr_asciify
-batstr_startswith
-batstr_endswith
-batstr_contains
diff --git a/monetdb5/modules/mal/Tests/All b/monetdb5/modules/mal/Tests/All
--- a/monetdb5/modules/mal/Tests/All
+++ b/monetdb5/modules/mal/Tests/All
@@ -52,6 +52,3 @@ orderidx00
 orderidx01
 orderidx02
 orderidx04
-
-txtsim_levenshtein
-txtsim_jarowinkler
diff --git a/sql/test/strings/Tests/All b/sql/test/strings/Tests/All
new file mode 100644
--- /dev/null
+++ b/sql/test/strings/Tests/All
@@ -0,0 +1,17 @@
+startswith
+endswith
+contains
+HAVE_ICONV?asciify
+startswith_join
+endswith_join
+contains_join
+
+ts_and_tstz_to_str_bug
+
+HAVE_ICONV?batstr_asciify
+batstr_startswith
+batstr_endswith
+batstr_contains
+
+txtsim_levenshtein
+txtsim_jarowinkler
diff --git a/monetdb5/modules/atoms/Tests/asciify.test 
b/sql/test/strings/Tests/asciify.test
rename from monetdb5/modules/atoms/Tests/asciify.test
rename to sql/test/strings/Tests/asciify.test
diff --git a/monetdb5/modules/kernel/Tests/batstr_asciify.test 
b/sql/test/strings/Tests/batstr_asciify.test
rename from monetdb5/modules/kernel/Tests/batstr_asciify.test
rename to sql/test/strings/Tests/batstr_asciify.test
diff --git a/monetdb5/modules/kernel/Tests/batstr_contains.test 
b/sql/test/strings/Tests/batstr_contains.test
rename from monetdb5/modules/kernel/Tests/batstr_contains.test
rename to sql/test/strings/Tests/batstr_contains.test
diff --git a/monetdb5/modules/kernel/Tests/batstr_endswith.test 
b/sql/test/strings/Tests/batstr_endswith.test
rename from monetdb5/modules/kernel/Tests/batstr_endswith.test
rename to sql/test/strings/Tests/batstr_endswith.test
diff --git a/monetdb5/modules/kernel/Tests/batstr_startswith.test 
b/sql/test/strings/Tests/batstr_startswith.test
rename from monetdb5/modules/kernel/Tests/batstr_startswith.test
rename to sql/test/strings/Tests/batstr_startswith.test
diff --git a/monetdb5/modules/atoms/Tests/contains.test 
b/sql/test/strings/Tests/contains.test
rename from monetdb5/modules/atoms/Tests/contains.test
rename to sql/test/strings/Tests/contains.test
diff --git a/monetdb5/modules/atoms/Tests/contains_join.test 
b/sql/test/strings/Tests/contains_join.test
rename from monetdb5/modules/atoms/Tests/contains_join.test
rename to sql/test/strings/Tests/contains_join.test
diff --git a/monetdb5/modules/atoms/Tests/endswith.test 
b/sql/test/strings/Tests/endswith.test
rename from monetdb5/modules/atoms/Tests/endswith.test
rename to sql/test/strings/Tests/endswith.test
diff --git a/monetdb5/modules/atoms/Tests/endswith_join.test 
b/sql/test/strings/Tests/endswith_join.test
rename from monetdb5/modules/atoms/Tests/endswith_join.test
rename to sql/test/strings/Tests/endswith_join.test
diff --git a/monetdb5/modules/atoms/Tests/startswith.test 
b/sql/test/strings/Tests/startswith.test
rename from monetdb5/modules/atoms/Tests/startswith.test
rename to sql/test/strings/Tests/startswith.test
diff --git a/monetdb5/modules/atoms/Tests/startswith_join.test 
b/sql/test/strings/Tests/startswith_join.test
rename from monetdb5/modules/atoms/Tests/startswith_join.test
rename to sql/test/strings/Tests/startswith_join.test
diff --git a/monetdb5/modules/atoms/Tests/ts_and_tstz_to_str_bug.test 

MonetDB: default - Merge with Dec2023 branch.

2024-03-19 Thread Sjoerd Mullender via checkin-list
Changeset: fc3b9784a0bc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fc3b9784a0bc
Modified Files:
sql/server/rel_distribute.c
sql/server/rel_exp.c
sql/storage/store.c
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-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 Dec2023 branch.


diffs (truncated from 631 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -822,3 +822,4 @@ 1230526af30f40eeea30fb87c47c3e414920561f
 1230526af30f40eeea30fb87c47c3e414920561f Dec2023_release
 95d8feaa1167b5ba87bd99253c3f4e62ebf528a1 Dec2023_3
 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_5
+dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release
diff --git a/monetdb5/ChangeLog.Dec2023 b/monetdb5/ChangeLog.Dec2023
--- a/monetdb5/ChangeLog.Dec2023
+++ b/monetdb5/ChangeLog.Dec2023
@@ -1,3 +1,7 @@
 # ChangeLog file for MonetDB5
 # This file is updated with Maddlog
 
+* Tue Mar 19 2024 Sjoerd Mullender 
+- Fixed interaction between mserver5 and remote mserver5 when only one
+  of the two has 128 bit integer support.
+
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -86,12 +86,14 @@
 #define RMTT_64_BITS(1<<2)
 #define RMTT_32_OIDS(0<<3)
 #define RMTT_64_OIDS(1<<3)
+#define RMTT_HGE   (1<<4)
 
 typedef struct _connection {
MT_Lock lock;   /* lock to avoid interference */
str name;   /* the handle for this 
connection */
Mapi mconn; /* the Mapi handle for 
the connection */
unsigned char type; /* binary profile of the 
connection target */
+   bool int128;/* has int128 support */
size_t nextid;  /* id counter */
struct _connection *next;   /* the next connection in the list */
 } *connection;
@@ -106,6 +108,7 @@ static MT_Lock mal_remoteLock = MT_LOCK_
 
 static connection conns = NULL;
 static unsigned char localtype = 0177;
+static bool int128 = false;
 
 static inline str RMTquery(MapiHdl *ret, const char *func, Mapi conn,
   const char *query);
@@ -297,7 +300,19 @@ RMTconnectScen(str *ret,
 #ifdef _DEBUG_MAPI_
mapi_trace(c->mconn, true);
 #endif
-
+   if (c->type != localtype && (c->type | RMTT_HGE) == localtype) {
+   /* we support hge, and for remote, we don't know */
+   msg = RMTquery(, "remote.connect", m, "x := 0:hge;");
+   if (msg) {
+   c->int128 = false;
+   } else {
+   mapi_close_handle(hdl);
+   c->int128 = true;
+   c->type |= RMTT_HGE;
+   }
+   } else if (c->type == localtype) {
+   c->int128 = int128;
+   }
MT_lock_unset(_remoteLock);
 
*ret = GDKstrdup(conn);
@@ -502,6 +517,10 @@ RMTprelude(void)
 #else
type |= RMTT_32_OIDS;
 #endif
+#ifdef HAVE_HGE
+   type |= RMTT_HGE;
+   int128 = true;
+#endif
localtype = (unsigned char) type;
 
return (MAL_SUCCEED);
@@ -570,7 +589,7 @@ typedef struct _binbat_v1 {
 } binbat;
 
 static str
-RMTinternalcopyfrom(BAT **ret, char *hdr, stream *in, bool must_flush)
+RMTinternalcopyfrom(BAT **ret, char *hdr, stream *in, bool must_flush, bool 
cint128)
 {
binbat bb = { 0, 0, 0, false, false, false, false, false, 0, 0, 0 };
char *nme = NULL;
@@ -581,6 +600,7 @@ RMTinternalcopyfrom(BAT **ret, char *hdr
 
BAT *b;
 
+   (void) cint128;
/* hdr is a JSON structure that looks like
 * {"version":1,"ttype":6,"tseqbase":0,"tailsize":4,"theapsize":0}
 * we take the binary data directly from the stream */
@@ -684,6 +704,12 @@ RMTinternalcopyfrom(BAT **ret, char *hdr
}
hdr++;
}
+#ifdef HAVE_HGE
+   if (int128 && !cint128 && bb.Ttype >= TYPE_hge)
+   bb.Ttype++;
+#else
+   (void) cint128;
+#endif
 
b = COLnew2(bb.Hseqbase, bb.Ttype, bb.size, TRANSIENT,

MonetDB: default - Merge with Dec2023 branch.

2024-03-18 Thread Sjoerd Mullender via checkin-list
Changeset: a86c2ee305f2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a86c2ee305f2
Modified Files:
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_group.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (175 lines):

diff --git a/gdk/ChangeLog.Dec2023 b/gdk/ChangeLog.Dec2023
--- a/gdk/ChangeLog.Dec2023
+++ b/gdk/ChangeLog.Dec2023
@@ -1,3 +1,7 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Mon Mar 18 2024 Sjoerd Mullender 
+- Fixed a couple of deadlock situations, one actually observed, one
+  never observed.
+
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -814,8 +814,7 @@ COLcopy(BAT *b, int tt, bool writable, r
return NULL;
}
 
-   MT_lock_set(>theaplock);
-   bi = bat_iterator_nolock(b);
+   bi = bat_iterator(b);
 
/* first try case (1); create a view, possibly with different
 * atom-types */
@@ -823,12 +822,12 @@ COLcopy(BAT *b, int tt, bool writable, r
role == TRANSIENT &&
bi.restricted == BAT_READ &&
ATOMstorage(b->ttype) != TYPE_msk && /* no view on TYPE_msk */
-   (!VIEWtparent(b) ||
-BBP_desc(VIEWtparent(b))->batRestricted == BAT_READ)) {
-   MT_lock_unset(>theaplock);
+   (bi.h == NULL ||
+bi.h->parentid == b->batCacheid ||
+BBP_desc(bi.h->parentid)->batRestricted == BAT_READ)) {
bn = VIEWcreate(b->hseqbase, b);
if (bn == NULL) {
-   return NULL;
+   goto bunins_failed;
}
if (tt != bn->ttype) {
bn->ttype = tt;
@@ -840,6 +839,7 @@ COLcopy(BAT *b, int tt, bool writable, r
}
bn->tseqbase = ATOMtype(tt) == TYPE_oid ? bi.tseq : 
oid_nil;
}
+   bat_iterator_end();
return bn;
} else {
/* check whether we need case (4); BUN-by-BUN copy (by
@@ -867,8 +867,7 @@ COLcopy(BAT *b, int tt, bool writable, r
 
bn = COLnew2(b->hseqbase, tt, bi.count, role, bi.width);
if (bn == NULL) {
-   MT_lock_unset(>theaplock);
-   return NULL;
+   goto bunins_failed;
}
if (bn->tvheap != NULL && bn->tvheap->base == NULL) {
/* this combination can happen since the last
@@ -906,15 +905,17 @@ COLcopy(BAT *b, int tt, bool writable, r
bn->batCapacity = 0;
} else if (BATatoms[tt].atomFix || tt != TYPE_void || 
ATOMextern(tt)) {
/* case (4): one-by-one BUN insert (really slow) */
-   BUN p, q;
+   QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+   qry_ctx = qry_ctx ? qry_ctx : &(QryCtx) {.endtime = 0};
 
-   BATloop(b, p, q) {
+   TIMEOUT_LOOP_IDX_DECL(p, bi.count, qry_ctx) {
const void *t = BUNtail(bi, p);
 
if (bunfastapp_nocheck(bn, t) != GDK_SUCCEED) {
goto bunins_failed;
}
}
+   TIMEOUT_CHECK(qry_ctx, 
GOTO_LABEL_TIMEOUT_HANDLER(bunins_failed, qry_ctx));
bn->theap->dirty |= bi.count > 0;
} else if (tt != TYPE_void && bi.type == TYPE_void) {
/* case (4): optimized for unary void
@@ -951,7 +952,7 @@ COLcopy(BAT *b, int tt, bool writable, r
} else {
BATtseqbase(bn, oid_nil);
}
-   BATkey(bn, BATtkey(b));
+   BATkey(bn, bi.key);
bn->tsorted = bi.sorted;
bn->trevsorted = bi.revsorted;
bn->tnorevsorted = bi.norevsorted;
@@ -969,7 +970,7 @@ COLcopy(BAT *b, int tt, bool writable, r
bn->tunique_est = bi.unique_est;
} else if (ATOMstorage(tt) == ATOMstorage(b->ttype) &&
   ATOMcompare(tt) == ATOMcompare(b->ttype)) {
-   BUN h = BATcount(b);
+   BUN h = bi.count;
bn->tsorted = bi.sorted;
bn->trevsorted = bi.revsorted;
BATkey(bn, bi.key);
@@ -1006,14 +1007,14 @@ COLcopy(BAT *b, int tt, bool writable, r
bn->trevsorted = ATOMlinear(b->ttype);
bn->tkey = true;
}
+   bat_iterator_end();
if (!writable)
bn->batRestricted = BAT_READ;
TRC_DEBUG(ALGO, ALGOBATFMT " -> " ALGOBATFMT "\n",
  ALGOBATPAR(b), ALGOBATPAR(bn));
-   MT_lock_unset(>theaplock);
return bn;
   bunins_failed:
-   MT_lock_unset(>theaplock);
+   bat_iterator_end();
BBPreclaim(bn);
 

MonetDB: default - Merge with Dec2023 branch.

2024-03-15 Thread Sjoerd Mullender via checkin-list
Changeset: 2f3f28c1a20d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2f3f28c1a20d
Modified Files:
gdk/gdk_select.c
monetdb5/modules/atoms/str.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (55 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1223,10 +1223,10 @@ BATrange(BATiter *bi, const void *tl, co
maxval = VALptr(maxprop);
maxincl = false;
}
+   bool keep = false;  /* keep lock on parent bat? */
if (minprop == NULL || maxprop == NULL) {
if (VIEWtparent(bi->b) &&
(pb = BATdescriptor(VIEWtparent(bi->b))) != NULL) {
-   bool keep = false;
MT_lock_set(>theaplock);
if (minprop == NULL && (minprop = BATgetprop_nolock(pb, 
GDK_MIN_BOUND)) != NULL) {
keep = true;
@@ -1239,8 +1239,6 @@ BATrange(BATiter *bi, const void *tl, co
}
if (!keep) {
MT_lock_unset(>theaplock);
-   BBPreclaim(pb);
-   pb = NULL;
}
}
}
@@ -1328,12 +1326,13 @@ BATrange(BATiter *bi, const void *tl, co
}
}
 
+   MT_lock_unset(>b->theaplock);
if (pb) {
-   MT_lock_unset(>theaplock);
+   if (keep)
+   MT_lock_unset(>theaplock);
BBPreclaim(pb);
}
 
-   MT_lock_unset(>b->theaplock);
return range;
 }
 
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
@@ -5336,9 +5336,9 @@ STRselect(bat *r_id, const bat *b_id, co
 
if (!msg) {
BATsetcount(r, rcnt);
-   r->tsorted = r->batCount <= 1;
+   r->tsorted = true;
r->trevsorted = r->batCount <= 1;
-   r->tkey = false;
+   r->tkey = true;
r->tnil = false;
r->tnonil = true;
r->tseqbase = rcnt == 0 ?
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-03-12 Thread Sjoerd Mullender via checkin-list
Changeset: b492ab0d8ac1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b492ab0d8ac1
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files..

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-12 Thread Sjoerd Mullender via checkin-list
Changeset: 2a5696b839c2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2a5696b839c2
Modified Files:
MonetDB.spec
cmake/monetdb-versions.cmake
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (257 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -821,3 +821,4 @@ c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe
 1230526af30f40eeea30fb87c47c3e414920561f Dec2023_1
 1230526af30f40eeea30fb87c47c3e414920561f Dec2023_release
 95d8feaa1167b5ba87bd99253c3f4e62ebf528a1 Dec2023_3
+dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_5
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -917,6 +917,26 @@ fi
 %endif
 
 %changelog
+* Tue Mar 12 2024 Sjoerd Mullender  - 11.49.5-20240312
+- Rebuilt.
+- GH#7390: Some MonetDB Server crashes found
+- GH#7465: Unexpected result when using `NULL` in `BETWEEN`
+
+* Fri Mar  8 2024 Sjoerd Mullender  - 11.49.5-20240312
+- gdk: The internal hash function for floating point types has been changed.
+  It is now no longer based on the bit representation, but on the value,
+  meaning that +0 and -0 (yes, they both exist in floating point) now
+  hash to the same value.
+
+* Thu Mar  7 2024 Lucas Pereira  - 
11.49.5-20240312
+- sql: performance improvement of 'startswith' and 'endswith' filter functions
+  for join operators
+
+* Wed Mar  6 2024 Sjoerd Mullender  - 11.49.5-20240312
+- clients: Fixed an issue where mclient wouldn't exit if the server it had
+  connected to exited for whatever reason while the client was waiting
+  for a query result.
+
 * Mon Mar 04 2024 Sjoerd Mullender  - 11.49.3-20240304
 - Rebuilt.
 - GH#6800: Please add information_schema (ANSI SQL norm)
diff --git a/clients/ChangeLog-Archive b/clients/ChangeLog-Archive
--- a/clients/ChangeLog-Archive
+++ b/clients/ChangeLog-Archive
@@ -1,6 +1,11 @@
 # DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY
 # This file contains past ChangeLog entries
 
+* Wed Mar  6 2024 Sjoerd Mullender  - 11.49.5-20240312
+- Fixed an issue where mclient wouldn't exit if the server it had
+  connected to exited for whatever reason while the client was waiting
+  for a query result.
+
 * Tue Jun 20 2023 Sjoerd Mullender  - 11.47.3-20230622
 - The COPY INTO from file ON CLIENT was extended to also look for a
   relative path name relative to the file from which the query was read.
diff --git a/clients/ChangeLog.Dec2023 b/clients/ChangeLog.Dec2023
--- a/clients/ChangeLog.Dec2023
+++ b/clients/ChangeLog.Dec2023
@@ -1,8 +1,3 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
-* Wed Mar  6 2024 Sjoerd Mullender 
-- Fixed an issue where mclient wouldn't exit if the server it had
-  connected to exited for whatever reason while the client was waiting
-  for a query result.
-
diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -44,19 +44,19 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M
 # common/options and common/utils)
 set(GDK_VERSION_MAJOR "28")
 set(GDK_VERSION_MINOR "1")
-set(GDK_VERSION_PATCH "0")
+set(GDK_VERSION_PATCH "1")
 set(GDK_VERSION 
"${GDK_VERSION_MAJOR}.${GDK_VERSION_MINOR}.${GDK_VERSION_PATCH}")
 
 # version of the MAPI library (subdirectory clients/mapilib)
 set(MAPI_VERSION_MAJOR "26")
 set(MAPI_VERSION_MINOR "2")
-set(MAPI_VERSION_PATCH "0")
+set(MAPI_VERSION_PATCH "1")
 set(MAPI_VERSION 
"${MAPI_VERSION_MAJOR}.${MAPI_VERSION_MINOR}.${MAPI_VERSION_PATCH}")
 
 # version of the MONETDB5 library (subdirectory monetdb5, not including extras 
or sql)
 set(MONETDB5_VERSION_MAJOR "35")
 set(MONETDB5_VERSION_MINOR "0")
-set(MONETDB5_VERSION_PATCH "1")
+set(MONETDB5_VERSION_PATCH "2")
 set(MONETDB5_VERSION 
"${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_MINOR}.${MONETDB5_VERSION_PATCH}")
 
 # version of the MONETDBE library (subdirectory tools/monetdbe)
@@ -74,5 +74,5 @@ set(STREAM_VERSION "${STREAM_VERSION_MAJ
 # version of the SQL library (subdirectory sql)
 set(SQL_VERSION_MAJOR "14")
 set(SQL_VERSION_MINOR "1")
-set(SQL_VERSION_PATCH "1")
+set(SQL_VERSION_PATCH "2")
 set(SQL_VERSION 
"${SQL_VERSION_MAJOR}.${SQL_VERSION_MINOR}.${SQL_VERSION_PATCH}")
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,35 @@
+monetdb (11.49.5) unstable; urgency=low
+
+  * Rebuilt.
+  * GH#7390: Some MonetDB Server crashes found
+  * GH#7465: Unexpected result when using `NULL` in `BETWEEN`
+
+ -- Sjoerd Mullender   Tue, 12 Mar 2024 10:20:32 +0100
+
+monetdb (11.49.5) unstable; urgency=low
+
+  * gdk: The internal hash function for floating point types has been changed.
+It is now no longer based on the bit representation, but on the value,
+meaning that +0 and -0 (yes, they both exist in floating point) now
+hash to the same value.
+
+ -- Sjoerd Mullender   Fri, 8 Mar 2024 10:20:32 +0100
+
+monetdb (11.49.5) unstable; urgency=low
+
+  * sql: performance improvement of 'startswith' and 

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-03-12 Thread Sjoerd Mullender via checkin-list
Changeset: 2da2ec7b790f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2da2ec7b790f
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-12 Thread Sjoerd Mullender via checkin-list
Changeset: d4c98f13d0ae for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d4c98f13d0ae
Modified Files:
sql/backends/monet5/sql_gencode.c
sql/server/rel_dump.c
sql/server/rel_statistics.c
sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 386 to 300 lines):

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
@@ -1706,7 +1706,7 @@ void
 
 void
 _exp_print(mvc *sql, sql_exp *e) {
-   exp_print(sql, GDKstdout, e, 0, NULL, 1, 0);
+   exp_print(sql, GDKstdout, e, 0, NULL, 1, 0, 1);
mnstr_printf(GDKstdout, "\n");
 }
 
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -110,12 +110,12 @@ dump_sql_subtype(sql_allocator *sa, sql_
return sa_strdup(sa, buf);
 }
 
-static void exps_print(mvc *sql, stream *fout, list *exps, int depth, list 
*refs, int alias, int brackets);
+static void exps_print(mvc *sql, stream *fout, list *exps, int depth, list 
*refs, int alias, int brackets, int decorate);
 
 static void rel_print_rel(mvc *sql, stream  *fout, sql_rel *rel, int depth, 
list *refs, int decorate);
 
 void
-exp_print(mvc *sql, stream *fout, sql_exp *e, int depth, list *refs, int 
comma, int alias)
+exp_print(mvc *sql, stream *fout, sql_exp *e, int depth, list *refs, int 
comma, int alias, int decorate)
 {
(void)sql;
if (!e)
@@ -129,7 +129,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
if (rname)
mnstr_printf(fout, "\"%s\".", 
dump_escape_ident(sql->ta, rname));
mnstr_printf(fout, "\"%s\" = ",  
dump_escape_ident(sql->ta, exp_name(e)));
-   exp_print(sql, fout, e->l, depth, refs, 0, 0);
+   exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
mnstr_printf(fout, " FRAME %d ", level);
alias = 0;
} else if (e->flag & PSM_VAR) {
@@ -145,26 +145,26 @@ exp_print(mvc *sql, stream *fout, sql_ex
} else if (e->flag & PSM_RETURN) {
int level = GET_PSM_LEVEL(e->flag);
mnstr_printf(fout, "return ");
-   exp_print(sql, fout, e->l, depth, refs, 0, 0);
+   exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
mnstr_printf(fout, " FRAME %d ", level);
alias = 0;
} else if (e->flag & PSM_WHILE) {
mnstr_printf(fout, "while ");
-   exp_print(sql, fout, e->l, depth, refs, 0, 0);
-   exps_print(sql, fout, e->r, depth, refs, 0, 0);
+   exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
+   exps_print(sql, fout, e->r, depth, refs, 0, 0, 
decorate);
alias = 0;
} else if (e->flag & PSM_IF) {
mnstr_printf(fout, "if ");
-   exp_print(sql, fout, e->l, depth, refs, 0, 0);
-   exps_print(sql, fout, e->r, depth, refs, 0, 0);
+   exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
+   exps_print(sql, fout, e->r, depth, refs, 0, 0, 
decorate);
if (e->f)
-   exps_print(sql, fout, e->f, depth, refs, 0, 0);
+   exps_print(sql, fout, e->f, depth, refs, 0, 0, 
decorate);
alias = 0;
} else if (e->flag & PSM_REL) {
rel_print_rel(sql, fout, e->l, depth+10, refs, 1);
} else if (e->flag & PSM_EXCEPTION) {
mnstr_printf(fout, "except ");
-   exp_print(sql, fout, e->l, depth, refs, 0, 0);
+   exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
mnstr_printf(fout, " error %s", (const char *) e->r);
alias = 0;
}
@@ -173,7 +173,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
case e_convert: {
char *to_type = dump_sql_subtype(sql->ta, exp_subtype(e));
mnstr_printf(fout, "%s[", to_type);
-   exp_print(sql, fout, e->l, depth, refs, 0, 0);
+   exp_print(sql, fout, e->l, depth, refs, 0, 0, decorate);
mnstr_printf(fout, "]");
break;
}
@@ -207,7 +207,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
mnstr_printf(fout, "\"%s\"", 
dump_escape_ident(sql->ta, vname->name));
} else if (e->f) {  /* values list */
list *l = e->f;
-   

MonetDB: default - Merge with Dec2023 branch.

2024-03-08 Thread Sjoerd Mullender via checkin-list
Changeset: c53196ba9bbc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c53196ba9bbc
Modified Files:
monetdb5/modules/atoms/str.c
Branch: default
Log Message:

Merge with Dec2023 branch.


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
@@ -3851,6 +3851,8 @@ str_is_isuffix(const char *s, const char
;
}
}
+   while ((*sf & 0xC0) == 0x80)
+   sf++;
return *sf != 0 || utf8casecmp(e, suffix) != 0;
 }
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-08 Thread Sjoerd Mullender via checkin-list
Changeset: 13c81f68c45d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/13c81f68c45d
Modified Files:
monetdb5/modules/atoms/str.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (207 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
@@ -3835,41 +3835,45 @@ str_is_suffix(const char *s, const char 
return strcmp(s + sl - sul, suffix);
 }
 
+/* case insensitive endswith check */
 int
 str_is_isuffix(const char *s, const char *suffix, int sul)
 {
-   int sl = str_strlen(s);
-
-   if (sl < sul)
-   return -1;
-   else
-   return utf8casecmp(s + sl - sul, suffix);
+   const char *e = s + strlen(s);
+   const char *sf;
+
+   (void) sul;
+   /* note that the uppercase and lowercase forms of a character aren't
+* necessarily the same length in their UTF-8 encodings */
+   for (sf = suffix; *sf && e > s; sf++) {
+   if ((*sf & 0xC0) != 0x80) {
+   while ((*--e & 0xC0) == 0x80)
+   ;
+   }
+   }
+   return *sf != 0 || utf8casecmp(e, suffix) != 0;
 }
 
 int
 str_contains(const char *h, const char *n, int nlen)
 {
(void) nlen;
-   /* 64bit: should return lng */
-   return strstr(h, n) ? 0 : 1;
+   return strstr(h, n) == NULL;
 }
 
 int
 str_icontains(const char *h, const char *n, int nlen)
 {
(void) nlen;
-   /* 64bit: should return lng */
-   return utf8casestr(h, n) ? 0 : 1;
+   return utf8casestr(h, n) == NULL;
 }
 
-#define STR_MAPARGS(STK, PCI, R, S1, S2, ICASE)
\
-   do{ 
\
-   R = getArgReference(STK, PCI, 0);   
\
-   S1 = *getArgReference_str(STK, PCI, 1); 
\
-   S2 = *getArgReference_str(STK, PCI, 2); 
\
-   icase = PCI->argc == 4 &&   
\
-   *getArgReference_bit(STK, PCI, 3) ? true : false;   
\
-   
\
+#define STR_MAPARGS(STK, PCI, R, S1, S2, ICASE)
\
+   do{ 
\
+   R = getArgReference(STK, PCI, 0);   
\
+   S1 = *getArgReference_str(STK, PCI, 1); 
\
+   S2 = *getArgReference_str(STK, PCI, 2); 
\
+   icase = PCI->argc == 4 && *getArgReference_bit(STK, PCI, 3);
\
} while(0)
 
 static str
@@ -3970,8 +3974,7 @@ STRstr_search(Client cntxt, MalBlkPtr mb
bit *res = getArgReference(stk, pci, 0);
const str *haystack = getArgReference(stk, pci, 1),
*needle = getArgReference(stk, pci, 2);
-   bit icase = pci->argc == 4
-   && *getArgReference_bit(stk, pci, 3) ? true : false;
+   bit icase = pci->argc == 4 && *getArgReference_bit(stk, pci, 3);
str s = *haystack, h = *needle, msg = MAL_SUCCEED;
if (strNil(s) || strNil(h)) {
*res = bit_nil;
@@ -4032,8 +4035,7 @@ STRrevstr_search(Client cntxt, MalBlkPtr
bit *res = getArgReference(stk, pci, 0);
const str *haystack = getArgReference(stk, pci, 1);
const str *needle = getArgReference(stk, pci, 2);
-   bit icase = pci->argc == 4
-   && *getArgReference_bit(stk, pci, 3) ? true : false;
+   bit icase = pci->argc == 4 && *getArgReference_bit(stk, pci, 3);
str s = *haystack, h = *needle, msg = MAL_SUCCEED;
if (strNil(s) || strNil(h)) {
*res = bit_nil;
@@ -5251,9 +5253,9 @@ str_select(BAT *bn, BAT *b, BAT *s, stru
qry_ctx = qry_ctx ? qry_ctx : &(QryCtx) {.endtime = 0};
 
if (anti)   /* keep nulls ? (use 
false for now) */
-   scanloop_anti(v && *v != '\200' && str_cmp(v, key, klen) != 0, 
keep_nulls);
+   scanloop_anti(!strNil(v) && str_cmp(v, key, klen) != 0, 
keep_nulls);
else
-   scanloop(v && *v != '\200' && str_cmp(v, key, klen) == 0, 
keep_nulls);
+   scanloop(!strNil(v) && str_cmp(v, key, klen) == 0, keep_nulls);
 
   bailout:
bat_iterator_end();
@@ -5380,8 +5382,8 @@ STRselect(bat *r_id, const bat *b_id, co
B_ID = getArgReference(STK, PCI, 1); 

MonetDB: default - Merge with Dec2023 branch.

2024-03-08 Thread Sjoerd Mullender via checkin-list
Changeset: be41c8cdf35d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/be41c8cdf35d
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
monetdb5/modules/atoms/str.c
sql/server/sql_atom.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 676 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
@@ -50692,7 +50692,7 @@ str
 contains
 pattern str.contains(X_0:str, X_1:str, X_2:bit):bit 
 STRcontains;
-Check if string chaystack contains string needle, icase flag.
+Check if string haystack contains string needle, icase flag.
 str
 containsjoin
 pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], 
X_9:bat[:oid]) 
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
@@ -39017,7 +39017,7 @@ str
 contains
 pattern str.contains(X_0:str, X_1:str, X_2:bit):bit 
 STRcontains;
-Check if string chaystack contains string needle, icase flag.
+Check if string haystack contains string needle, icase flag.
 str
 containsjoin
 pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], 
X_9:bat[:oid]) 
diff --git a/monetdb5/mal/Tests/All b/monetdb5/mal/Tests/All
--- a/monetdb5/mal/Tests/All
+++ b/monetdb5/mal/Tests/All
@@ -7,7 +7,6 @@ tst005
 tst006
 tst007
 tst008
-tst009
 tst010
 tst011
 tst012
diff --git a/monetdb5/modules/atoms/Tests/startswith_join.test 
b/monetdb5/modules/atoms/Tests/startswith_join.test
--- a/monetdb5/modules/atoms/Tests/startswith_join.test
+++ b/monetdb5/modules/atoms/Tests/startswith_join.test
@@ -99,3 +99,333 @@ drop table foo
 
 statement ok
 drop table bar
+
+statement ok
+CREATE TABLE fal(x STRING)
+
+statement ok
+CREATE TABLE f(y STRING)
+
+statement ok
+COPY 100 RECORDS INTO fal FROM STDIN
+
+Mary Garcia
+James Ballard
+Alexandria Harris
+Dakota Howell
+Tracy Glover
+Mark Cook
+James Woodard
+Sophia Stone
+Jeffrey Ramirez
+Ryan Knight
+Taylor Lane
+Christopher Russell
+Daniel Sims
+Tony Watts
+Dwayne Johnson
+Jason Dunlap
+Abigail Burton
+Maria Lewis
+Ashley Taylor
+Emma Abbott
+James Whitney
+Philip Maldonado
+Rachel Taylor
+Tina Singleton
+Ricky Johnson
+Anthony Peterson
+Eugene Mata
+Tyler Terry
+Thomas Morales
+Kathy Moore
+William Franco
+Christopher Williams
+David Carter
+Andrew Alvarado
+John Jenkins
+Anthony Charles
+Jose Tran
+Amy Stafford
+Vincent Malone
+Ashley Waters
+Cindy Huffman
+Anthony Hernandez
+Brett Hardy
+Lisa Matthews
+Jeffrey Ingram
+Jessica Miller
+Karen Jones
+Terry Sanders
+Aaron Rodriguez
+Kyle Ortega
+David Clark
+Brent Garrett
+Scott Young
+Shannon Edwards
+Tiffany Macias
+Ricky Gonzalez
+Devin Logan
+Russell Walker
+Michael Nguyen
+Heather Robinson
+April Lawrence
+Christopher Williams
+Laura Gonzalez
+Patrick Ortiz
+Sylvia Phillips
+Cynthia Kemp
+Stephanie Gillespie
+Elizabeth Joseph
+Jay Collins
+Johnny Gibson
+Dr. Audrey Sellers MD
+Desiree Li
+Heather Brown
+Shelly Bauer
+Donna Anderson
+Amy Sharp
+Olivia Howell
+Margaret Tran
+Alexandra Jarvis
+Glen Ray
+Michael Mendoza
+Sarah Hall
+Dennis Moss
+Wanda Brooks
+Debra Powers
+Shannon Nguyen
+Daisy Mcdonald
+Donna Rivera
+Samuel Jackson
+Wendy Howe
+Connor Howell
+Jeffrey Newman
+Daniel Sullivan
+Megan Dunn
+Laura Holland
+Brendan Bates
+Mary Miller
+Thomas Ramirez
+Leah Holland
+Megan Warren
+
+statement ok
+COPY 100 RECORDS INTO f FROM STDIN
+
+Noah
+Ronald
+Mary
+Jennifer
+Tanya
+Ivan
+Randy
+Erin
+Ryan
+Scott
+Kathryn
+Brandi
+Rebecca
+Katie
+Diane
+Stephen
+Michael
+Jeremiah
+Timothy
+James
+Mark
+Thomas
+Leslie
+Robert
+Joel
+James
+Anna
+Alan
+Janet
+Samuel
+Tanya
+Russell
+Alexis
+Scott
+Jenna
+Eric
+Andrew
+Sandra
+Stephanie
+Jeremy
+Don
+Lisa
+Jacqueline
+Melissa
+Patricia
+Ana
+Danielle
+Cheryl
+Justin
+Karen
+Pamela
+Beverly
+Becky
+Caitlin
+Michael
+Emma
+Darlene
+Darrell
+David
+Wanda
+Sydney
+Susan
+Louis
+Brittany
+William
+Daniel
+Laura
+Kevin
+Jonathon
+James
+Robert
+Denise
+Cassandra
+Stephanie
+Samuel
+Kaitlyn
+David
+Katrina
+Nathan
+Jessica
+Michelle
+Veronica
+Rachel
+Andrew
+Jennifer
+William
+Melanie
+Larry
+Ronald
+Sally
+Joshua
+Chelsea
+Ashley
+Johnny
+Chad
+Nicole
+Joshua
+Michele
+Joseph
+Carolyn
+
+query TT rowsort
+SELECT * FROM fal,f WHERE [fal.x] startswith [f.y]
+
+Andrew Alvarado
+Andrew
+Andrew Alvarado
+Andrew
+Ashley Taylor
+Ashley
+Ashley Waters
+Ashley
+Daniel Sims
+Daniel
+Daniel Sullivan
+Daniel
+David Carter
+David
+David Carter
+David
+David Clark
+David
+David Clark
+David
+Donna Anderson
+Don
+Donna Rivera
+Don
+Emma Abbott
+Emma
+James Ballard
+James
+James Ballard
+James
+James Ballard
+James
+James Whitney
+James
+James Whitney

MonetDB: default - Merge with Dec2023 branch.

2024-03-08 Thread Sjoerd Mullender via checkin-list
Changeset: e703616b2ba5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e703616b2ba5
Removed Files:
sql/test/strimps/Tests/strimps_stable_counts2.test
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
clients/odbc/tests/ODBCmetadata.c
gdk/gdk_hash.c
monetdb5/modules/atoms/str.c
monetdb5/modules/atoms/str.h
monetdb5/modules/kernel/batstr.c
sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 5202 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
@@ -50695,25 +50695,25 @@ STRcontains;
 Check if string chaystack contains string needle, icase flag.
 str
 containsjoin
-pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] 
-STRcontainsjoin1;
-The same as STRcontainsjoin, but only produce one output + icase.
-str
-containsjoin
-pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] 
-STRcontainsjoin1;
-The same as STRcontainsjoin, but only produce one output.
-str
-containsjoin
 pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], 
X_9:bat[:oid]) 
 STRcontainsjoin;
 Join the string bat L with the bat R if L contains the string of R@with 
optional candidate lists SL and SR@The result is two aligned bats with oids of 
matching rows + icase.
 str
 containsjoin
+pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] 
+STRcontainsjoin;
+The same as STRcontainsjoin, but only produce one output + icase.
+str
+containsjoin
 pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) 
 STRcontainsjoin;
 Join the string bat L with the bat R if L contains the string of R@with 
optional candidate lists SL and SR@The result is two aligned bats with oids of 
matching rows.
 str
+containsjoin
+pattern str.containsjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] 
+STRcontainsjoin;
+The same as STRcontainsjoin, but only produce one output.
+str
 containsselect
 pattern str.containsselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, 
X_3:bit):bat[:oid] 
 STRcontainsselect;
@@ -50735,25 +50735,25 @@ STRendswith;
 Check if string ends with substring, icase flag.
 str
 endswithjoin
-pattern str.endswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] 
-STRendswithjoin1;
-The same as STRendswithjoin, but only produce one output + icase.
-str
-endswithjoin
-pattern str.endswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] 
-STRendswithjoin1;
-The same as STRendswithjoin, but only produce one output.
-str
-endswithjoin
 pattern str.endswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit) (X_8:bat[:oid], 
X_9:bat[:oid]) 
 STRendswithjoin;
 Join the string bat L with the suffix bat R@with optional candidate lists SL 
and SR@The result is two aligned bats with oids of matching rows + icase.
 str
 endswithjoin
+pattern str.endswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] 
+STRendswithjoin;
+The same as STRendswithjoin, but only produce one output + icase.
+str
+endswithjoin
 pattern str.endswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit) (X_7:bat[:oid], X_8:bat[:oid]) 
 STRendswithjoin;
 Join the string bat L with the suffix bat R@with optional candidate lists SL 
and SR@The result is two aligned bats with oids of matching rows.
 str
+endswithjoin
+pattern str.endswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, X_6:bit):bat[:oid] 
+STRendswithjoin;
+The same as STRendswithjoin, but only produce one output.
+str
 endswithselect
 pattern str.endswithselect(X_0:bat[:str], X_1:bat[:oid], X_2:str, 
X_3:bit):bat[:oid] 
 STRendswithselect;
@@ -50905,25 +50905,25 @@ STRstartswith;
 Check if string starts with substring, icase flag.
 str
 startswithjoin
-pattern str.startswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:bit], 
X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, X_7:bit):bat[:oid] 
-STRstartswithjoin1;
-The same as STRstartswithjoin, but only produce one output + icase.
-str
-startswithjoin
-pattern str.startswithjoin(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng, 

MonetDB: default - Merge with Dec2023 branch.

2024-03-06 Thread Sjoerd Mullender via checkin-list
Changeset: 74363423a95a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/74363423a95a
Modified Files:
clients/mapilib/mapi.c
sql/server/sql_mvc.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (174 lines):

diff --git a/clients/ChangeLog.Dec2023 b/clients/ChangeLog.Dec2023
--- a/clients/ChangeLog.Dec2023
+++ b/clients/ChangeLog.Dec2023
@@ -1,3 +1,8 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
+* Wed Mar  6 2024 Sjoerd Mullender 
+- Fixed an issue where mclient wouldn't exit if the server it had
+  connected to exited for whatever reason while the client was waiting
+  for a query result.
+
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -1673,7 +1673,7 @@ finish_handle(MapiHdl hdl)
if (hdl == NULL)
return MERROR;
mid = hdl->mid;
-   if (mid->active == hdl && !hdl->needmore &&
+   if (mid->active == hdl && !hdl->needmore && !mnstr_eof(mid->from) &&
read_into_cache(hdl, 0) != MOK)
return MERROR;
if (mid->to) {
@@ -3421,7 +3421,7 @@ read_into_cache(MapiHdl hdl, int lookahe
line = read_line(mid);
if (line == NULL) {
if (mid->from && mnstr_eof(mid->from)) {
-   return mapi_setError(mid, "unexpected end of 
file", __func__, MERROR);
+   return mapi_setError(mid, "unexpected end of 
file", __func__, MTIMEOUT);
}
 
return mid->error;
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -838,10 +838,10 @@ BATsetstrimps(BAT *b)
  * in the BAT.
  */
 #define STRIMP_COMPLETE(b) \
-   (b)->tstrimps != NULL &&\
-   (b)->tstrimps != (Strimps *)1 &&\
-   (b)->tstrimps != (Strimps *)2 &&\
-   (((b)->tstrimps->strimps.free - ((char 
*)(b)->tstrimps->bitstrings_base - (b)->tstrimps->strimps.base)) == 
(b)->batCount*sizeof(uint64_t))
+   ((b)->tstrimps != NULL &&   \
+(b)->tstrimps != (Strimps *)1 &&   \
+(b)->tstrimps != (Strimps *)2 &&   \
+(((b)->tstrimps->strimps.free - ((char 
*)(b)->tstrimps->bitstrings_base - (b)->tstrimps->strimps.base)) == 
(b)->batCount*sizeof(uint64_t)))
 
 
 /* Strimp creation.
@@ -886,16 +886,17 @@ STRMPcreate(BAT *b, BAT *s)
pb = b;
}
 
+   /* First thread to take the lock will read the strimp from disk
+* or construct the strimp header.
+*/
+   MT_lock_set(>batIdxLock);
+
/* Strimp creation was requested. There are three cases:
 *  - The strimp is on disk (pb->tstrimps == 1)
 *  - The strimp needs to be created (pb->tstrimps == 2)
 *  - Finally the pointer might have been changed to NULL in another 
thread.
 */
if (pb->tstrimps == NULL || pb->tstrimps == (Strimps*)1 || pb->tstrimps 
== (Strimps*)2) {
-   /* First thread to take the lock will read the strimp
-* from disk or construct the strimp header.
-*/
-   MT_lock_set(>batIdxLock);
/* The strimp needs to be created. The rest of the
 * creation code assumes that the pointer to the strimps
 * is NULL. Make it so.
@@ -933,10 +934,10 @@ STRMPcreate(BAT *b, BAT *s)
}
pb->tstrimps = r;
}
-   MT_lock_unset(>batIdxLock);
}
 
if (STRIMP_COMPLETE(pb)) {
+   MT_lock_unset(>batIdxLock);
if (pb != b)
BBPunfix(pb->batCacheid);
return GDK_SUCCEED;
@@ -947,6 +948,10 @@ STRMPcreate(BAT *b, BAT *s)
MT_thread_setalgorithm("create strimp index");
r = pb->tstrimps;
STRMPincref(r);
+   if (pb != b) {
+   MT_lock_unset(>batIdxLock);
+   MT_lock_set(>batIdxLock);
+   }
dh = (uint64_t *)r->bitstrings_base + b->hseqbase;
canditer_init(, b, s);
 
@@ -961,13 +966,16 @@ STRMPcreate(BAT *b, BAT *s)
}
bat_iterator_end();
 
-   MT_lock_set(>batIdxLock);
+   if (pb != b) {
+   MT_lock_unset(>batIdxLock);
+   MT_lock_set(>batIdxLock);
+   }
r->strimps.free += b->batCount*sizeof(uint64_t);
/* The thread that reaches this point last needs to write the strimp to 
disk. */
if ((r->strimps.free - ((char *)r->bitstrings_base - r->strimps.base)) 
== b->batCount*sizeof(uint64_t)) {
persistStrimp(pb);
}
-   MT_lock_unset(>batIdxLock);
+   

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-03-04 Thread Sjoerd Mullender via checkin-list
Changeset: 2ea6edbe4b00 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2ea6edbe4b00
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files..

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-04 Thread Sjoerd Mullender via checkin-list
Changeset: 45e4fc24a2fa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/45e4fc24a2fa
Modified Files:
MonetDB.spec
cmake/monetdb-versions.cmake
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 468 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -820,3 +820,4 @@ c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe
 c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_SP3_release
 1230526af30f40eeea30fb87c47c3e414920561f Dec2023_1
 1230526af30f40eeea30fb87c47c3e414920561f Dec2023_release
+95d8feaa1167b5ba87bd99253c3f4e62ebf528a1 Dec2023_3
diff --git a/ChangeLog-Archive b/ChangeLog-Archive
--- a/ChangeLog-Archive
+++ b/ChangeLog-Archive
@@ -1,6 +1,12 @@
 # DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY
 # This file contains past ChangeLog entries
 
+* Thu Jan 11 2024 Sjoerd Mullender  - 11.49.3-20240304
+- The copyright for the MonetDB software has been transferred to the newly
+  established MonetDB Foundation, a not-for-profit foundation with the
+  express goal of furthering the MonetDB database system.  The license
+  for the software does not change: MonetDB remains fully open source.
+
 * Fri Dec  1 2023 Sjoerd Mullender  - 11.49.1-20231221
 - All binary packages are now signed with a new key with key fingerprint
   DBCE 5625 94D7 1959 7B54  CE85 3F1A D47F 5521 A603.
diff --git a/ChangeLog.Dec2023 b/ChangeLog.Dec2023
--- a/ChangeLog.Dec2023
+++ b/ChangeLog.Dec2023
@@ -1,9 +1,3 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
-* Thu Jan 11 2024 Sjoerd Mullender 
-- The copyright for the MonetDB software has been transferred to the newly
-  established MonetDB Foundation, a not-for-profit foundation with the
-  express goal of furthering the MonetDB database system.  The license
-  for the software does not change: MonetDB remains fully open source.
-
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -91,7 +91,7 @@ Group: Applications/Databases
 License: MPL-2.0
 URL: https://www.monetdb.org/
 BugURL: https://github.com/MonetDB/MonetDB/issues
-Source: 
https://www.monetdb.org/downloads/sources/Dec2023/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Dec2023-SP1/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -917,6 +917,69 @@ fi
 %endif
 
 %changelog
+* Mon Mar 04 2024 Sjoerd Mullender  - 11.49.3-20240304
+- Rebuilt.
+- GH#6800: Please add information_schema (ANSI SQL norm)
+- GH#7152: Occasional dbfarm corruption upon database restart
+- GH#7412: MonetDB server crashes in `vscanf`
+- GH#7415: MonetDB server crashes in `HEAP_malloc`
+- GH#7416: MonetDB server crashes in `atom_get_int`
+- GH#7417: MonetDB server crashes in `trimchars`.
+- GH#7418: MonetDB server crashes in `bind_col_exp`
+- GH#7420: Performance issue with lower(string)
+- GH#7425: The last statement, execution error, is a false positive?
+- GH#7426: Unexpected result for INNER JOIN with IS NOT NULL
+- GH#7428: Unexpected result when using BETWEEN operator
+- GH#7429: Unexpected result when using `CASE WHEN`
+- GH#7430: Unexpected result when using `AND` and `IS NOT NULL`
+- GH#7431: [bug] Error code found, please confirm
+- GH#7432: MonetDB server crashes in `dameraulevenshtein`
+- GH#7433: MonetDB server crashes in `exp_atom`
+- GH#7434: MonetDB server crashes in `exp_bin`
+- GH#7435: MonetDB server crashes in `exp_copy`
+- GH#7436: MonetDB server crashes in `exp_ref`
+- GH#7437: MonetDB server crashes in `exp_values_set_supertype`
+- GH#7438: MonetDB server crashes in `exps_bind_column`
+- GH#7439: MonetDB server crashes in `exps_card`
+- GH#7440: MonetDB server crashes in `gc_col`
+- GH#7441: MonetDB server crashes in `is_column_unique`
+- GH#7442: MonetDB server crashes in `mat_join2`
+- GH#7443: MonetDB server crashes in `merge_table_prune_and_unionize`
+- GH#7444: [bug] the table cannot be created because the reserved word is
+  incorrectly set
+- GH#7447: Unexpected result when using `BETWEEN` in `INNER JOIN`
+- GH#7448: Unexpected result when using `AND`/`OR` chain
+- GH#7450: Unexpected result when `CREATE VIEW` with `WHERE NULL`
+- GH#7451: Unexpected result when using `BETWEEN` and `CAST`
+- GH#7453: Cannot recover an msqldump
+- GH#7455: Unexpected result when using `BETWEEN` with `BOOLEAN` values
+- GH#7456: Crash when `INNER JOIN` with `VIEW`
+- GH#7457: Unexpected result when using `AND` with `INTEGER`
+- GH#7458: Unexpected result when using `SIGN`
+- GH#7461: Crash by potentially use of bad escape characters
+- GH#7462: Crash when using `BETWEEN AND`
+
+* Fri Mar  1 2024 Sjoerd Mullender  - 11.49.3-20240304
+- gdk: Fixed a regression where bats weren't always cleaned up when they
+  weren't needed anymore.  In particular, after a DELETE FROM table query
+  without a WHERE clause (which deletes all rows from the table), the
+  bats for the table get 

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2024-03-04 Thread Sjoerd Mullender via checkin-list
Changeset: 8b66789fb49c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8b66789fb49c
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-04 Thread Sjoerd Mullender via checkin-list
Changeset: 1dea523c402b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1dea523c402b
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (13 lines):

diff --git a/ChangeLog.Dec2023 b/ChangeLog.Dec2023
--- a/ChangeLog.Dec2023
+++ b/ChangeLog.Dec2023
@@ -1,3 +1,9 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Thu Jan 11 2024 Sjoerd Mullender 
+- The copyright for the MonetDB software has been transferred to the newly
+  established MonetDB Foundation, a not-for-profit foundation with the
+  express goal of furthering the MonetDB database system.  The license
+  for the software does not change: MonetDB remains fully open source.
+
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-03-01 Thread Sjoerd Mullender via checkin-list
Changeset: 0ca2fb7cf7c6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0ca2fb7cf7c6
Modified Files:
gdk/gdk_logger.c
sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (234 lines):

diff --git a/gdk/ChangeLog.Dec2023 b/gdk/ChangeLog.Dec2023
--- a/gdk/ChangeLog.Dec2023
+++ b/gdk/ChangeLog.Dec2023
@@ -1,3 +1,10 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Fri Mar  1 2024 Sjoerd Mullender 
+- Fixed a regression where bats weren't always cleaned up when they
+  weren't needed anymore.  In particular, after a DELETE FROM table query
+  without a WHERE clause (which deletes all rows from the table), the
+  bats for the table get replaced by new ones, and the old, now unused,
+  bats weren't removed from the database.
+
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1224,6 +1224,8 @@ log_read_transaction(logger *lg, uint32_
bool ok = true;
ATOMIC_BASE_TYPE dbg = ATOMIC_GET();
 
+   (void) maxupdated;  /* only used inside assert() */
+
if (!lg->flushing)
ATOMIC_AND(, ~CHECKMASK);
 
@@ -1251,16 +1253,40 @@ log_read_transaction(logger *lg, uint32_
if (updated && BAThash(lg->catalog_id) == GDK_SUCCEED) {
BATiter cni = bat_iterator(lg->catalog_id);
BUN p;
+   BUN posnew = BUN_NONE;
+   BUN posold = BUN_NONE;
MT_rwlock_rdlock(>thashlock);
HASHloop_int(cni, cni.b->thash, p, ) {
-   (void)maxupdated;
-   assert(p < maxupdated);
-   updated[p / 32] |= 1U << (p % 32);
-   /* there should only be one hit */
-   break;
+   lng lid = *(lng *) 
Tloc(lg->catalog_lid, p);
+   if (lid == lng_nil || lid > tr->tid)
+   posnew = p;
+   else if (lid == tr->tid)
+   posold = p;
}
MT_rwlock_rdunlock(>thashlock);
bat_iterator_end();
+   /* Normally at this point, posnew is the
+* location of the bat that this
+* transaction is working on, and posold
+* is the location of the previous
+* version of the bat.  If LOG_CREATE,
+* both are relevant, since the latter
+* is the new bat, and the former is the
+* to-be-destroyed bat.  For
+* LOG_DESTROY, only posnew should be
+* relevant, but for the other types, if
+* the table is destroyed later in the
+* same transaction, we need posold, and
+* else (the normal case) we need
+* posnew. */
+   if (posnew != BUN_NONE) {
+   assert(posnew < maxupdated);
+   updated[posnew / 32] |= 1U << (posnew % 
32);
+   }
+   if ((l.flag == LOG_CREATE || posnew == 
BUN_NONE) && posold != BUN_NONE) {
+   assert(posold < maxupdated);
+   updated[posold / 32] |= 1U << (posold % 
32);
+   }
}
break;
default:
@@ -2643,8 +2669,7 @@ log_flush(logger *lg, ulng ts)
TRC_CRITICAL(GDK, "log_id filename is too 
large\n");
return GDK_FAIL;
}
-   if ((filename =
-GDKfilepath(BBPselectfarm(PERSISTENT, 0, offheap), 
lg->dir, LOGFILE, id)) == NULL) {
+   if ((filename = GDKfilepath(BBPselectfarm(PERSISTENT, 
0, offheap), lg->dir, LOGFILE, id)) == NULL) {
GDKfree(updated);
return GDK_FAIL;
}
@@ -3386,8 +3411,9 @@ log_add_bat(logger *lg, BAT *b, log_id i
bid = b->batCacheid;
TRC_DEBUG(WAL, "create %d\n", id);
assert(log_find(lg->catalog_bid, lg->dcatalog, bid) == BUN_NONE);
-   if (BUNappend(lg->catalog_bid, , true) != GDK_SUCCEED 

MonetDB: default - Merge with Dec2023 branch.

2024-02-29 Thread Sjoerd Mullender via checkin-list
Changeset: 254b623822db for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/254b623822db
Modified Files:
sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 323 to 300 lines):

diff --git a/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test 
b/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
--- a/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
+++ b/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
@@ -247,16 +247,25 @@ UPDATE v0 SET v1 = (WITH v0 AS (SELECT 4
 statement ok
 DROP TABLE v0
 
--- -- 18.sql
--- statement ok
--- CREATE TABLE v0(v1 NUMERIC)
+-- 18.sql
+statement ok
+CREATE TABLE v0(v1 NUMERIC)
+
+query I nosort
+SELECT 38 ^ v1 FROM v0 AS v3 WINDOW v2 AS ( ), v4 AS (GROUPS BETWEEN -32768 
PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8
+
 
--- statement ok
--- UPDATE v0 SET v1 = (WITH v0 (v1) AS (SELECT 127 WHERE (v1 < 2147483647 OR 
v1 > -1) AND v1 / v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 FROM v0 AS v3 
WINDOW v2 AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) 
LIMIT 16 OFFSET 8) ^ v1
--- sql/server/rel_select.c:3102: rel_binop_: Assertion `t1 && t2' failed.
+query I nosort
+WITH v0 (v1) AS (SELECT 127 FROM v0 WHERE (v1 < 2147483647 OR v1 > -1) AND v1 
/ v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 ^ v1 FROM v0 AS v3 WINDOW v2 AS ( 
), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8
+
 
--- statement ok
--- DROP TABLE v0
+skipif knownfail
+statement ok
+UPDATE v0 SET v1 = (WITH v0 (v1) AS (SELECT 127 WHERE (v1 < 2147483647 OR v1 > 
-1) AND v1 / v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 FROM v0 AS v3 WINDOW v2 
AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 
OFFSET 8) ^ v1
+-- sql/server/rel_select.c:3104: rel_binop_: Assertion `t1 && t2' failed.
+
+statement ok
+DROP TABLE v0
 
 -- 19.sql
 statement ok
@@ -342,7 +351,7 @@ DROP TABLE v0
 -- statement ok
 -- WITH v0 AS (SELECT 14, * FROM v0) INSERT INTO v0 SELECT v1 * 0 FROM v0 
NATURAL JOIN v0, v0, v0 AS v2, v0, v0 AS v3 ORDER BY v1 * 0 / 77
 
--- query I
+-- query I nosort
 -- SELECT count(*) FROM v0
 -- 
 -- 131080
diff --git a/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test 
b/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test
--- a/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test
+++ b/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test
@@ -14,6 +14,7 @@ SELECT (((t1.c0 NOT IN (true)))=((t1.c0 
 
 NULL
 
+skipif knownfail
 query I
 SELECT * FROM t1 WHERE (((t1.c0 NOT IN (true)))=((t1.c0 BETWEEN true AND 
NULL)))
 
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -391,7 +391,7 @@ CONDITIONALS = {
 'SANITIZER': "@SANITIZER_FALSE@",
 # unknown at compile time;
 # hence, we set them only at runtime in main() below
-'KNOWNFAIL': False, # skip on release branch when not in 
testweb
+'KNOWNFAIL': False, # normally skip, but --alltests or explicit
 'HAVE_MONETDBJDBC_JAR' : False,
 'HAVE_JDBCCLIENT_JAR'  : False,
 'HAVE_JDBCTESTS_JAR'   : False,
@@ -1926,18 +1926,11 @@ def RunTest(env, TST, COND, oktests, len
 ('.py',   '.py', 'python', ''),
 ('.MAL.py',   '.MAL.py', 'python', 'MAL'),
 ('.SQL.py',   '.SQL.py', 'python', 'SQL'),
-('.malC', '.malC',   'mal','MAL'),
-('_s00.malC', '.malC',   'malXs',  'MAL'),
-('_p00.malC', '.malC',   'malXp',  'MAL'),
 ('.sql',  '.sql','sql','SQL'),
-('_s00.sql',  '.sql','sqlXs',  'SQL'),
-('_p00.sql',  '.sql','sqlXp',  'SQL'),
 ('.R','.R',  'R',  'SQL'),
 ('.rb',   '.rb', 'ruby',   'SQL'),
 #TODO:
 # ('.java', '.java',   'Java',   'SQL'),
-# ('_s00.java', '.java',   'JavaXs', 'SQL'),
-# ('_p00.java', '.java',   'JavaXp', 'SQL'),
 # ('.odmg', '.odmg',   'odmg',   'SQL'),
 )
 for tst, ext, cll, srv in tests:
@@ -1950,11 +1943,11 @@ def RunTest(env, TST, COND, oktests, len
 break
 else:
 if os.name == "nt":
-reason = "test missing: 
'"+os.path.join(TSTSRCDIR,TST)+".(exe|com|bat|cmd|py|malC|sql)`"
+reason = "test missing: 
'"+os.path.join(TSTSRCDIR,TST)+".(exe|com|bat|cmd|py|sql)`"
 #TODO:
 #elif os.name == "posix":
 else:
-reason = "test missing: 
'"+os.path.join(TSTSRCDIR,TST)+"[.py|.malC|.sql|.R|.rb]`"
+reason = "test missing: 
'"+os.path.join(TSTSRCDIR,TST)+"[.py|.sql|.R|.rb]`"
 if verbosity > 1:
 

MonetDB: default - Merge with Dec2023 branch.

2024-02-28 Thread Sjoerd Mullender via checkin-list
Changeset: 48bd655516c6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/48bd655516c6
Modified Files:
gdk/gdk_heap.c
sql/benchmarks/tpcds/Tests/one.test.in
sql/test/BugTracker-2023/Tests/date_time-7374.test
sql/test/BugTracker-2023/Tests/greatest-least-multi-arg-7391.test
sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
sql/test/BugTracker-2023/Tests/timestamp_to_str-7370.test
sql/test/BugTracker-2024/Tests/between-boolean-7451.test
sql/test/BugTracker-2024/Tests/concat_order-7455.test
sql/test/BugTracker-2024/Tests/constant-expression-issue-7457.test
sql/test/BugTracker-2024/Tests/contains-between-issue-7459.test
sql/test/BugTracker-2024/Tests/push_select_exp-issue-7460.test
sql/test/BugTracker-2024/Tests/sign-issue-7458.test
sql/test/BugTracker-2024/Tests/where_null-7450.test
sql/test/SQLancer/Tests/sqlancer10.test
sql/test/SQLancer/Tests/sqlancer19.test.in
sql/test/file_loader/Tests/file_loader_function.test
sql/test/group-concat/Tests/groupconcat05.test
sql/test/information-schema/Tests/columns.test
sql/test/snodgrass/Tests/date_parsing.test
sql/test/strimps/Tests/strimps_stable_counts2.test
sql/test/sys-schema/Tests/webExamplesStringFunctions.test
testing/sqllogictest.py
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 1615 to 300 lines):

diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -217,6 +217,7 @@ HEAPalloc(Heap *h, size_t nitems, size_t
return GDK_FAIL;
}
GDKfree(nme);
+   TRC_DEBUG(HEAP, "%s %zu %p (mmap)\n", h->filename, size, 
h->base);
}
h->newstorage = h->storage;
return GDK_SUCCEED;
diff --git a/geom/monetdb5/geom_atoms.c b/geom/monetdb5/geom_atoms.c
--- a/geom/monetdb5/geom_atoms.c
+++ b/geom/monetdb5/geom_atoms.c
@@ -272,8 +272,8 @@ wkbFROMSTR_withSRID(const char *geomWKT,
 {
GEOSGeom geosGeometry = NULL;   /* The geometry object that is parsed 
from the src string. */
GEOSWKTReader *WKT_reader;
-   const char *polyhedralSurface = "POLYHEDRALSURFACE";
-   const char *multiPolygon = "MULTIPOLYGON";
+   static const char polyhedralSurface[] = "POLYHEDRALSURFACE";
+   static const char multiPolygon[] = "MULTIPOLYGON";
char *geomWKT_new = NULL;
size_t parsedCharacters = 0;
 
diff --git a/monetdb5/modules/mal/Tests/qgram.maltest 
b/monetdb5/modules/mal/Tests/qgram.maltest
--- a/monetdb5/modules/mal/Tests/qgram.maltest
+++ b/monetdb5/modules/mal/Tests/qgram.maltest
@@ -36,27 +36,27 @@ query IT rowsort
 io.print(b)
 
 0
-##h@
+##hä
 1
-#h@l
+#häl
 10
-r@@$
+rłð$
 11
-@@$$
+łð$$
 2
-h@ll
+häll
 3
-@ll@
+ällö
 4
-ll@ 
+llö 
 5
-l@ w
+lö w
 6
-@ w@
+ö wø
 7
- w@r
+ wør
 8
-w@r@
+wørł
 9
-@r@@
+ørłð
 
diff --git a/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.test 
b/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.test
--- a/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.test
+++ b/sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.test
@@ -54,9 +54,6 @@ 33
 33.00
 42
 42.00
-@
-@
-@
 hello
 hello
 hello
@@ -64,6 +61,9 @@ hello
 hello
 hello
 hello
+Ö
+Ö
+Ö
 
 statement ok
 DROP TABLE pyloader05table
diff --git a/sql/benchmarks/tpcds/Tests/one.test.in 
b/sql/benchmarks/tpcds/Tests/one.test.in
--- a/sql/benchmarks/tpcds/Tests/one.test.in
+++ b/sql/benchmarks/tpcds/Tests/one.test.in
@@ -4616,7 +4616,7 @@ with customer_total_return as
   ,c_last_review_date,ctr_total_return
 limit 100
 
-1300 values hashing to 4b80e4995150e5b42229a363bb57dd07
+1300 values hashing to 46f76e63ac60a7b540f258c4ad0fbfdb
 
 query TI rowsort
 -- query 31
diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/accents_in_strings.SF-926709.test 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/accents_in_strings.SF-926709.test
--- a/sql/test/BugDay_2005-10-06_2.9.3/Tests/accents_in_strings.SF-926709.test
+++ b/sql/test/BugDay_2005-10-06_2.9.3/Tests/accents_in_strings.SF-926709.test
@@ -14,7 +14,7 @@ query IT rowsort
 SELECT * FROM bugtest
 
 1
-Andr@
+André
 1
 test
 
diff --git a/sql/test/BugTracker-2009/Tests/utf8_bug.SF-2822855.test 
b/sql/test/BugTracker-2009/Tests/utf8_bug.SF-2822855.test
--- a/sql/test/BugTracker-2009/Tests/utf8_bug.SF-2822855.test
+++ b/sql/test/BugTracker-2009/Tests/utf8_bug.SF-2822855.test
@@ -19,15 +19,15 @@ select a, length(a) AS len from utf8len
 
 0
 1
-@
+€
 1
-@
+€
 1
 
 query T rowsort
 select 'Liever €uro' as "Liever euro"
 
-Liever @uro
+Liever €uro
 
 statement ok
 drop table utf8len
diff --git a/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.test 
b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.test
--- a/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.test
+++ b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.test
@@ -6,5 

MonetDB: default - Merge with Dec2023 branch.

2024-02-21 Thread Sjoerd Mullender via checkin-list
Changeset: 20f8777d533f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/20f8777d533f
Modified Files:
monetdb5/modules/atoms/str.c
sql/server/sql_scan.c
sql/test/BugTracker-2024/Tests/All
sql/test/copy/Tests/nonutf8.test
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (242 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
@@ -985,6 +985,7 @@ const struct UTF8_lower_upper {
{0x2C5C, 0x2C2C,},
{0x2C5D, 0x2C2D,},
{0x2C5E, 0x2C2E,},
+   {0x2C5F, 0x2C2F,},
{0x2C61, 0x2C60,},
{0x2C65, 0x023A,},
{0x2C66, 0x023E,},
@@ -1188,9 +1189,13 @@ const struct UTF8_lower_upper {
{0xA7BB, 0xA7BA,},
{0xA7BD, 0xA7BC,},
{0xA7BF, 0xA7BE,},
+   {0xA7C1, 0xA7C0,},
{0xA7C3, 0xA7C2,},
{0xA7C8, 0xA7C7,},
{0xA7CA, 0xA7C9,},
+   {0xA7D1, 0xA7D0,},
+   {0xA7D7, 0xA7D6,},
+   {0xA7D9, 0xA7D8,},
{0xA7F6, 0xA7F5,},
{0xAB53, 0xA7B3,},
{0xAB70, 0x13A0,},
@@ -1375,6 +1380,41 @@ const struct UTF8_lower_upper {
{0x104F9, 0x104D1,},
{0x104FA, 0x104D2,},
{0x104FB, 0x104D3,},
+   {0x10597, 0x10570,},
+   {0x10598, 0x10571,},
+   {0x10599, 0x10572,},
+   {0x1059A, 0x10573,},
+   {0x1059B, 0x10574,},
+   {0x1059C, 0x10575,},
+   {0x1059D, 0x10576,},
+   {0x1059E, 0x10577,},
+   {0x1059F, 0x10578,},
+   {0x105A0, 0x10579,},
+   {0x105A1, 0x1057A,},
+   {0x105A3, 0x1057C,},
+   {0x105A4, 0x1057D,},
+   {0x105A5, 0x1057E,},
+   {0x105A6, 0x1057F,},
+   {0x105A7, 0x10580,},
+   {0x105A8, 0x10581,},
+   {0x105A9, 0x10582,},
+   {0x105AA, 0x10583,},
+   {0x105AB, 0x10584,},
+   {0x105AC, 0x10585,},
+   {0x105AD, 0x10586,},
+   {0x105AE, 0x10587,},
+   {0x105AF, 0x10588,},
+   {0x105B0, 0x10589,},
+   {0x105B1, 0x1058A,},
+   {0x105B3, 0x1058C,},
+   {0x105B4, 0x1058D,},
+   {0x105B5, 0x1058E,},
+   {0x105B6, 0x1058F,},
+   {0x105B7, 0x10590,},
+   {0x105B8, 0x10591,},
+   {0x105B9, 0x10592,},
+   {0x105BB, 0x10594,},
+   {0x105BC, 0x10595,},
{0x10CC0, 0x10C80,},
{0x10CC1, 0x10C81,},
{0x10CC2, 0x10C82,},
@@ -2480,6 +2520,7 @@ const struct UTF8_lower_upper {
{0x2C2C, 0x2C5C,},
{0x2C2D, 0x2C5D,},
{0x2C2E, 0x2C5E,},
+   {0x2C2F, 0x2C5F,},
{0x2C60, 0x2C61,},
{0x2C62, 0x026B,},
{0x2C63, 0x1D7D,},
@@ -2660,12 +2701,16 @@ const struct UTF8_lower_upper {
{0xA7BA, 0xA7BB,},
{0xA7BC, 0xA7BD,},
{0xA7BE, 0xA7BF,},
+   {0xA7C0, 0xA7C1,},
{0xA7C2, 0xA7C3,},
{0xA7C4, 0xA794,},
{0xA7C5, 0x0282,},
{0xA7C6, 0x1D8E,},
{0xA7C7, 0xA7C8,},
{0xA7C9, 0xA7CA,},
+   {0xA7D0, 0xA7D1,},
+   {0xA7D6, 0xA7D7,},
+   {0xA7D8, 0xA7D9,},
{0xA7F5, 0xA7F6,},
{0xFF21, 0xFF41,},
{0xFF22, 0xFF42,},
@@ -2769,6 +2814,41 @@ const struct UTF8_lower_upper {
{0x104D1, 0x104F9,},
{0x104D2, 0x104FA,},
{0x104D3, 0x104FB,},
+   {0x10570, 0x10597,},
+   {0x10571, 0x10598,},
+   {0x10572, 0x10599,},
+   {0x10573, 0x1059A,},
+   {0x10574, 0x1059B,},
+   {0x10575, 0x1059C,},
+   {0x10576, 0x1059D,},
+   {0x10577, 0x1059E,},
+   {0x10578, 0x1059F,},
+   {0x10579, 0x105A0,},
+   {0x1057A, 0x105A1,},
+   {0x1057C, 0x105A3,},
+   {0x1057D, 0x105A4,},
+   {0x1057E, 0x105A5,},
+   {0x1057F, 0x105A6,},
+   {0x10580, 0x105A7,},
+   {0x10581, 0x105A8,},
+   {0x10582, 0x105A9,},
+   {0x10583, 0x105AA,},
+   {0x10584, 0x105AB,},
+   {0x10585, 0x105AC,},
+   {0x10586, 0x105AD,},
+   {0x10587, 0x105AE,},
+   {0x10588, 0x105AF,},
+   {0x10589, 0x105B0,},
+   {0x1058A, 0x105B1,},
+   {0x1058C, 0x105B3,},
+   {0x1058D, 0x105B4,},
+   {0x1058E, 0x105B5,},
+   {0x1058F, 0x105B6,},
+   {0x10590, 0x105B7,},
+   {0x10591, 0x105B8,},
+   {0x10592, 0x105B9,},
+   {0x10594, 0x105BB,},
+   {0x10595, 0x105BC,},
{0x10C80, 0x10CC0,},
{0x10C81, 0x10CC1,},
{0x10C82, 0x10CC2,},
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -1504,9 +1504,12 @@ sql_get_next_token(YYSTYPE *yylval, void
case 'e':
case 'E':
assert(yylval->sval[1] == '\'');
-   GDKstrFromStr((unsigned char *) str,
- (unsigned char *) 
yylval->sval + 2,
- lc->yycur-lc->yysval - 2, 
'\'');
+   if (GDKstrFromStr((unsigned char *) str,
+ 

MonetDB: default - Merge with Dec2023 branch.

2024-02-09 Thread Sjoerd Mullender via checkin-list
Changeset: 0d6fe51df85e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0d6fe51df85e
Modified Files:
clients/mapiclient/mclient.c
sql/backends/monet5/rel_bin.c
sql/server/rel_exp.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (129 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3771,8 +3771,7 @@ main(int argc, char **argv)
if (mode == SQL)
dump_version(mid, toConsole, "Database:");
 
-   mnstr_printf(toConsole, "FOLLOW US on 
https://twitter.com/MonetDB "
-   "or 
https://github.com/MonetDB/MonetDB\n;
+   mnstr_printf(toConsole, "FOLLOW US on 
https://github.com/MonetDB/MonetDB\n;
"Type \\q to quit, \\? for a list of 
available commands\n");
if (mode == SQL)
mnstr_printf(toConsole, "auto commit mode: %s\n",
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
@@ -4441,6 +4441,8 @@ rel2bin_groupby(backend *be, sql_rel *re
cursub = stmt_list(be, l);
if (cursub == NULL)
return NULL;
+   if (aggrs && !aggrs->h && ext)
+   list_append(l, ext);
for (n = aggrs->h; n; n = n->next) {
sql_exp *aggrexp = n->data;
stmt *aggrstmt = NULL;
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -2406,7 +2406,7 @@ exp_has_func_or_cmp(sql_exp *e, bool cmp
return exps_have_func_or_cmp(e->f, true);
return 0;
case e_convert:
-   return exp_has_func(e->l);
+   return exp_has_func_or_cmp(e->l, cmp);
case e_func:
return 1;
case e_aggr:
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
@@ -19,3 +19,5 @@ greatest-as-colname-7444
 where-cond-issue-7447
 where-cond-issue-7448
 function_return_issue
+where_null-7450
+between-boolean-7451
diff --git 
a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64.int128 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64.int128
deleted file mode 100644
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64.int128
+++ /dev/null
@@ -1,78 +0,0 @@
-Running database upgrade commands to update system tables.
-
-Running database upgrade commands:
-create function sys.generate_series(first hugeint, "limit" hugeint)
-returns table (value hugeint)
-external name generator.series;
-create function sys.generate_series(first hugeint, "limit" hugeint, stepsize 
hugeint)
-returns table (value hugeint)
-external name generator.series;
-create aggregate stddev_samp(val HUGEINT) returns DOUBLE
- external name "aggr"."stdev";
-GRANT EXECUTE ON AGGREGATE stddev_samp(HUGEINT) TO PUBLIC;
-create window stddev_samp(val HUGEINT) returns DOUBLE
- external name "sql"."stdev";
-GRANT EXECUTE ON WINDOW stddev_samp(HUGEINT) TO PUBLIC;
-create aggregate stddev_pop(val HUGEINT) returns DOUBLE
- external name "aggr"."stdevp";
-GRANT EXECUTE ON AGGREGATE stddev_pop(HUGEINT) TO PUBLIC;
-create window stddev_pop(val HUGEINT) returns DOUBLE
- external name "sql"."stdevp";
-GRANT EXECUTE ON WINDOW stddev_pop(HUGEINT) TO PUBLIC;
-create aggregate var_samp(val HUGEINT) returns DOUBLE
- external name "aggr"."variance";
-GRANT EXECUTE ON AGGREGATE var_samp(HUGEINT) TO PUBLIC;
-create window var_samp(val HUGEINT) returns DOUBLE
- external name "sql"."variance";
-GRANT EXECUTE ON WINDOW var_samp(HUGEINT) TO PUBLIC;
-create aggregate covar_samp(e1 HUGEINT, e2 HUGEINT) returns DOUBLE
- external name "aggr"."covariance";
-GRANT EXECUTE ON AGGREGATE covar_samp(HUGEINT, HUGEINT) TO PUBLIC;
-create window covar_samp(e1 HUGEINT, e2 HUGEINT) returns DOUBLE
- external name "sql"."covariance";
-GRANT EXECUTE ON WINDOW covar_samp(HUGEINT, HUGEINT) TO PUBLIC;
-create aggregate var_pop(val HUGEINT) returns DOUBLE
- external name "aggr"."variancep";
-GRANT EXECUTE ON AGGREGATE var_pop(HUGEINT) TO PUBLIC;
-create window var_pop(val HUGEINT) returns DOUBLE
- external name "sql"."variancep";
-GRANT EXECUTE ON WINDOW var_pop(HUGEINT) TO PUBLIC;
-create aggregate covar_pop(e1 HUGEINT, e2 HUGEINT) returns DOUBLE
- external name "aggr"."covariancep";
-GRANT EXECUTE ON AGGREGATE covar_pop(HUGEINT, HUGEINT) TO PUBLIC;
-create window covar_pop(e1 HUGEINT, e2 HUGEINT) returns DOUBLE
- external name "sql"."covariancep";
-GRANT EXECUTE ON WINDOW covar_pop(HUGEINT, HUGEINT) TO PUBLIC;
-create aggregate median(val HUGEINT) returns HUGEINT
- external name "aggr"."median";
-GRANT EXECUTE ON AGGREGATE median(HUGEINT) TO PUBLIC;
-create aggregate 

MonetDB: default - Merge with Dec2023 branch.

2024-02-08 Thread Sjoerd Mullender via checkin-list
Changeset: b2c166f7bd87 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b2c166f7bd87
Modified Files:
clients/mapiclient/dump.c
gdk/gdk_bat.c
sql/test/testdb/Tests/dump-nogeom.stable.out
sql/test/testdb/Tests/dump.stable.out
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 755 to 300 lines):

diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -3203,6 +3203,123 @@ dump_database(Mapi mid, stream *sqlf, co
mapi_close_handle(hdl);
hdl = NULL;
 
+   /* dump views, functions and triggers */
+   if ((hdl = mapi_query(mid, views_functions_triggers)) == NULL ||
+   mapi_error(mid))
+   goto bailout;
+
+   while (rc == 0 &&
+  mnstr_errnr(sqlf) == MNSTR_NO__ERROR &&
+  mapi_fetch_row(hdl) != 0) {
+   char *id = strdup(mapi_fetch_field(hdl, 0));
+   char *schema = strdup(mapi_fetch_field(hdl, 1));
+   char *name = strdup(mapi_fetch_field(hdl, 2));
+   const char *query = mapi_fetch_field(hdl, 3);
+   const char *remark = mapi_fetch_field(hdl, 4);
+
+   if (mapi_error(mid) || id == NULL || schema == NULL || name == 
NULL) {
+   free(id);
+   free(schema);
+   free(name);
+   goto bailout;
+   }
+   if (sname != NULL && strcmp(schema, sname) != 0) {
+   free(id);
+   free(schema);
+   free(name);
+   continue;
+   }
+   if (curschema == NULL || strcmp(schema, curschema) != 0) {
+   if (curschema)
+   free(curschema);
+   curschema = strdup(schema);
+   if (curschema == NULL) {
+   free(id);
+   free(schema);
+   free(name);
+   goto bailout;
+   }
+   mnstr_printf(sqlf, "SET SCHEMA ");
+   dquoted_print(sqlf, curschema, ";\n");
+   }
+   if (query) {
+   /* view or trigger */
+   mnstr_printf(sqlf, "%s\n", query);
+   /* only views have comments due to query */
+   comment_on(sqlf, "VIEW", schema, name, NULL, remark);
+   } else {
+   /* procedure */
+   dump_functions(mid, sqlf, 0, schema, name, id);
+   }
+   free(id);
+   free(schema);
+   free(name);
+   }
+   mapi_close_handle(hdl);
+   hdl = NULL;
+
+   /* dump DEFAULT clauses for tables */
+   if (dump_table_defaults(mid, NULL, NULL, sqlf))
+   goto bailout2;
+
+   if (!describe) {
+   if (dump_foreign_keys(mid, NULL, NULL, NULL, sqlf))
+   goto bailout2;
+
+   /* dump sequences, part 2 */
+   if ((hdl = mapi_query(mid, sequences2)) == NULL ||
+   mapi_error(mid))
+   goto bailout;
+
+   while (mapi_fetch_row(hdl) != 0) {
+   const char *schema = mapi_fetch_field(hdl, 0);  
/* sch */
+   const char *name = mapi_fetch_field(hdl, 1);
/* seq */
+   const char *restart = mapi_fetch_field(hdl, 3); 
/* rs */
+   const char *minvalue;
+   const char *maxvalue;
+   const char *increment = mapi_fetch_field(hdl, 6);   
/* inc */
+   const char *cycle = mapi_fetch_field(hdl, 8);   
/* cycle */
+
+   if (mapi_get_field_count(hdl) > 9) {
+   /* new version (Jan2022) of 
sys.describe_sequences */
+   minvalue = mapi_fetch_field(hdl, 11);   
/* rmi */
+   maxvalue = mapi_fetch_field(hdl, 12);   
/* rma */
+   } else {
+   /* old version (pre Jan2022) of 
sys.describe_sequences */
+   minvalue = mapi_fetch_field(hdl, 4);
/* minvalue */
+   maxvalue = mapi_fetch_field(hdl, 5);
/* maxvalue */
+   if (strcmp(minvalue, "0") == 0)
+   minvalue = NULL;
+   if (strcmp(maxvalue, "0") == 0)
+   maxvalue = NULL;
+   }
+
+   if (sname != NULL && strcmp(schema, sname) != 0)
+  

MonetDB: default - Merge with Dec2023 branch.

2024-02-06 Thread Sjoerd Mullender via checkin-list
Changeset: 818910cbe519 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/818910cbe519
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (11 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2363,7 +2363,6 @@ log_new(int debug, const char *fn, const
.saved_id = getBBPlogno(),  /* get saved log numer from bbp 
*/
.saved_tid = (int) getBBPtransid(), /* get saved 
transaction id from bbp */
};
-   lg->tid = lg->saved_tid;
 
/* probably open file and check version first, then call call old 
logger code */
if (snprintf(filename, sizeof(filename), "%s%c%s%c", logdir, DIR_SEP, 
fn, DIR_SEP) >= FILENAME_MAX) {
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-02-02 Thread Sjoerd Mullender via checkin-list
Changeset: 70bdd7747f80 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/70bdd7747f80
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (12 lines):

diff --git a/sql/test/testdb/Tests/dump.stable.out 
b/sql/test/testdb/Tests/dump.stable.out
--- a/sql/test/testdb/Tests/dump.stable.out
+++ b/sql/test/testdb/Tests/dump.stable.out
@@ -101347,7 +101347,7 @@ CREATE TABLE "testschema"."geomtest" (
"m"   MBR
 );
 COPY 2 RECORDS INTO "testschema"."geomtest" FROM stdin USING DELIMITERS 
E'\t',E'\n','"';
-POINT (10.5 12.3)  LINESTRING (10 10, 20 20, 30 40)LINESTRING (10 
10, 20 20, 30 40)POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))   
POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))   MULTIPOINT (20 80, 110 160, 20 
160) MULTILINESTRING ((0 0, 0 80, 60 80, 60 0, 0 0)) MULTILINESTRING ((0 0, 
0 80, 60 80, 60 0, 0 0)) MULTIPOLYGON (((140 110, 260 110, 170 20, 50 20, 140 
110)), ((300 270, 420 270, 340 190, 220 190, 300 270)))MULTIPOLYGON (((140 
110, 260 110, 170 20, 50 20, 140 110)), ((300 270, 420 270, 340 190, 220 190, 
300 270)))POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))   
GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), LINESTRING (10 
10, 20 20, 30 40))  BOX (10.00 10.00, 20.00 20.00)
+POINT (10.5 12.3)  LINESTRING (10 10, 20 20, 30 40)LINESTRING (10 
10, 20 20, 30 40)POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))   
POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))   MULTIPOINT ((20 80), (110 160), 
(20 160))   MULTILINESTRING ((0 0, 0 80, 60 80, 60 0, 0 0)) MULTILINESTRING 
((0 0, 0 80, 60 80, 60 0, 0 0)) MULTIPOLYGON (((140 110, 260 110, 170 20, 50 
20, 140 110)), ((300 270, 420 270, 340 190, 220 190, 300 270)))MULTIPOLYGON 
(((140 110, 260 110, 170 20, 50 20, 140 110)), ((300 270, 420 270, 340 190, 220 
190, 300 270)))POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))   
GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), LINESTRING (10 
10, 20 20, 30 40))  BOX (10.00 10.00, 20.00 20.00)
 NULL   NULLNULLNULLNULLNULLNULLNULLNULLNULL
NULLNULLNULL
 ALTER TABLE "testschema"."testme" ADD TABLE "testschema"."subtable1" AS 
PARTITION FROM RANGE MINVALUE TO '11' WITH NULL VALUES;
 ALTER TABLE "testschema"."testme" ADD TABLE "testschema"."subtable2" AS 
PARTITION FROM '11' TO '20';
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-02-02 Thread Sjoerd Mullender via checkin-list
Changeset: c8828137676c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c8828137676c
Modified Files:
gdk/gdk_batop.c
gdk/gdk_calc_convert.c
monetdb5/modules/kernel/algebra.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 893 to 300 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1828,16 +1828,13 @@ BATslice(BAT *b, BUN l, BUN h)
 
BATcheck(b, NULL);
BATiter bi = bat_iterator(b);
+   if (l > bi.count)
+   l = bi.count;
if (h > bi.count)
h = bi.count;
if (h < l)
h = l;
 
-   if (l > BUN_MAX || h > BUN_MAX) {
-   GDKerror("boundary out of range\n");
-   goto doreturn;
-   }
-
if (complex_cand(b)) {
/* slicing a candidate list with exceptions */
struct canditer ci;
diff --git a/gdk/gdk_calc_convert.c b/gdk/gdk_calc_convert.c
--- a/gdk/gdk_calc_convert.c
+++ b/gdk/gdk_calc_convert.c
@@ -994,8 +994,8 @@ convert_typeswitchloop(const void *src, 
   oid candoff, bool *reduce,
   uint8_t scale1, uint8_t scale2, uint8_t precision)
 {
-   assert(scale1 < (uint8_t) (sizeof(scales) / sizeof(scales[0])));
-   assert(scale2 < (uint8_t) (sizeof(scales) / sizeof(scales[0])));
+   assert(stp == TYPE_flt || stp == TYPE_dbl || scale1 < (uint8_t) 
(sizeof(scales) / sizeof(scales[0])));
+   assert(dtp == TYPE_flt || dtp == TYPE_dbl || scale2 < (uint8_t) 
(sizeof(scales) / sizeof(scales[0])));
switch (ATOMbasetype(stp)) {
case TYPE_msk:
switch (ATOMbasetype(dtp)) {
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -75,9 +75,6 @@ HEAPcreatefile(int farmid, size_t *maxsz
return base;
 }
 
-static gdk_return HEAPload_intern(Heap *h, const char *nme, const char *ext, 
const char *suffix, bool trunc);
-static gdk_return HEAPsave_intern(Heap *h, const char *nme, const char *ext, 
const char *suffix, bool dosync, BUN free, MT_Lock *lock);
-
 static char *
 decompose_filename(str nme)
 {
diff --git a/monetdb5/modules/kernel/algebra.c 
b/monetdb5/modules/kernel/algebra.c
--- a/monetdb5/modules/kernel/algebra.c
+++ b/monetdb5/modules/kernel/algebra.c
@@ -120,10 +120,6 @@ slice(BAT **retval, BAT *b, lng start, l
}
if (is_lng_nil(end))
end = BATcount(b);
-   if (start > (lng) BUN_MAX || end >= (lng) BUN_MAX) {
-   GDKerror("argument out of range\n");
-   return GDK_FAIL;
-   }
 
return (*retval = BATslice(b, (BUN) start, (BUN) end + 1)) ? 
GDK_SUCCEED : GDK_FAIL;
 }
@@ -971,8 +967,10 @@ ALGfirstn(Client cntxt, MalBlkPtr mb, Ma
assert(pci->argc - pci->retc >= 5 && pci->argc - pci->retc <= 7);
 
n = *getArgReference_lng(stk, pci, pci->argc - 4);
-   if (n < 0 || (lng) n >= (lng) BUN_MAX)
+   if (n < 0)
throw(MAL, "algebra.firstn", ILLEGAL_ARGUMENT);
+   if (n > (lng) BUN_MAX)
+   n = BUN_MAX;
ret1 = getArgReference_bat(stk, pci, 0);
if (pci->retc == 2)
ret2 = getArgReference_bat(stk, pci, 1);
@@ -1433,8 +1431,7 @@ ALGsubslice_lng(bat *ret, const bat *bid
BAT *b, *bn;
BUN s, e;
 
-   if (*start < 0 || *start > (lng) BUN_MAX ||
-   (*end < 0 && !is_lng_nil(*end)) || *end >= (lng) BUN_MAX)
+   if (*start < 0 || (*end < 0 && !is_lng_nil(*end)))
throw(MAL, "algebra.subslice", ILLEGAL_ARGUMENT);
if ((b = BBPquickdesc(*bid)) == NULL)
throw(MAL, "algebra.subslice", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
diff --git a/sql/benchmarks/tpcds/Tests/All b/sql/benchmarks/tpcds/Tests/All
--- a/sql/benchmarks/tpcds/Tests/All
+++ b/sql/benchmarks/tpcds/Tests/All
@@ -1,1 +1,1 @@
-HAVE_DATA_PATH&!ARCH_BITS32?one
+HAVE_DATA_PATH?one
diff --git a/sql/benchmarks/tpcds/Tests/one.test.in 
b/sql/benchmarks/tpcds/Tests/one.test.in
--- a/sql/benchmarks/tpcds/Tests/one.test.in
+++ b/sql/benchmarks/tpcds/Tests/one.test.in
@@ -5973,6 +5973,7 @@ limit 100
 
 600 values hashing to f1cce2608f5e93697e23da9b25217519
 
+skipif bits=32bit
 query IT rowsort
 -- query 51a
 WITH web_tv as (
diff --git a/sql/server/rel_statistics.h b/sql/server/rel_statistics.h
--- a/sql/server/rel_statistics.h
+++ b/sql/server/rel_statistics.h
@@ -70,6 +70,9 @@ statistics_atom_min(mvc *sql, atom *v1, 
 static inline void
 set_minmax_property(mvc *sql, sql_exp *e, rel_prop kind, atom *val)
 {
+   if (val == NULL)
+   return;
+
sql_subtype *tpe = exp_subtype(e);
prop *found = find_prop(e->p, kind);
 
diff --git a/sql/test/BugTracker-2010/Tests/All 
b/sql/test/BugTracker-2010/Tests/All
--- a/sql/test/BugTracker-2010/Tests/All
+++ b/sql/test/BugTracker-2010/Tests/All
@@ -3,7 +3,6 @@ slow-query.Bug-2671
 

MonetDB: default - Merge with Dec2023 branch.

2024-01-23 Thread Sjoerd Mullender via checkin-list
Changeset: df53092f117f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/df53092f117f
Modified Files:
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
debian/control
gdk/libbat.rc
monetdb5/modules/atoms/str.c
monetdb5/modules/mal/txtsim.c
monetdb5/tools/libmonetdb5.rc
sql/storage/bat/bat_storage.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 1013 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -85,7 +85,7 @@ Name: %{name}
 Version: %{version}
 Release: %{release}
 Summary: Monet Database Management System
-Vendor: MonetDB BV 
+Vendor: MonetDB Foundation 
 
 Group: Applications/Databases
 License: MPL-2.0
diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -65,7 +65,7 @@ def main():
 print(r'')
 print(r'http://schemas.microsoft.com/wix/2006/wi;>')
 print(r'  '.format(upgradecode[arch], sys.argv[1]))
-print(r''.format(arch))
+print(r''.format(arch))
 print(r'')
 print(r'')
 print(r'')
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -76,7 +76,7 @@ def main():
 print(r'')
 print(r'http://schemas.microsoft.com/wix/2006/wi;>')
 print(r'  '.format(upgradecode[arch], 
sys.argv[1]))
-print(r''.format(arch))
+print(r''.format(arch))
 print(r''.format(geomupgradecode[arch]))
 # up to and including 11.29.3, the geom module can not be
 # uninstalled if MonetDB/SQL is not installed; this somehow also
diff --git a/clients/mapilib/mapi.rc b/clients/mapilib/mapi.rc
--- a/clients/mapilib/mapi.rc
+++ b/clients/mapilib/mapi.rc
@@ -19,7 +19,7 @@ BEGIN
 BLOCK "040904b0"   // US-English; Unicode
 BEGIN
   VALUE "Comments", "\0"
-  VALUE "CompanyName", "MonetDB B.V.\0"
+  VALUE "CompanyName", "MonetDB Foundation\0"
   VALUE "FileDescription", "MonetDB Application Interface DLL\0"
   VALUE "FileVersion", sversion(11,50,0)
   VALUE "InternalName", "Mapi\0"
diff --git a/clients/odbc/driver/driver.rc b/clients/odbc/driver/driver.rc
--- a/clients/odbc/driver/driver.rc
+++ b/clients/odbc/driver/driver.rc
@@ -19,7 +19,7 @@ BEGIN
 BLOCK "040904b0"   // US-English; Unicode
 BEGIN
   VALUE "Comments", "\0"
-  VALUE "CompanyName", "MonetDB B.V.\0"
+  VALUE "CompanyName", "MonetDB Foundation\0"
   VALUE "FileDescription", "MonetDB ODBC Driver DLL\0"
   VALUE "FileVersion", sversion(11,50,0)
   VALUE "InternalName", "MonetODBC\0"
diff --git a/clients/odbc/winsetup/setup.rc b/clients/odbc/winsetup/setup.rc
--- a/clients/odbc/winsetup/setup.rc
+++ b/clients/odbc/winsetup/setup.rc
@@ -81,7 +81,7 @@ BEGIN
 BEGIN
 BLOCK "040904e4"
 BEGIN
-VALUE "CompanyName", "MonetDB B.V."
+VALUE "CompanyName", "MonetDB Foundation"
 VALUE "FileDescription", "MonetDB ODBC Setup DLL"
 VALUE "FileVersion", sversion(11,50,0)
 VALUE "InternalName", "MonetODBCs.dll"
diff --git a/cmake/monetdb-deb-packages.cmake b/cmake/monetdb-deb-packages.cmake
--- a/cmake/monetdb-deb-packages.cmake
+++ b/cmake/monetdb-deb-packages.cmake
@@ -10,7 +10,7 @@
 # Copyright 1997 - July 2008 CWI.
 #]]
 
-set(CPACK_DEBIAN_PACKAGE_MAINTAINER "MonetDB BV ")
+set(CPACK_DEBIAN_PACKAGE_MAINTAINER "MonetDB Foundation ")
 set(CPACK_DEB_COMPONENT_INSTALL ON)
 set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS OFF)
 set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
diff --git a/cmake/monetdb-rpm-packages.cmake b/cmake/monetdb-rpm-packages.cmake
--- a/cmake/monetdb-rpm-packages.cmake
+++ b/cmake/monetdb-rpm-packages.cmake
@@ -19,7 +19,7 @@ endif()
 set(CPACK_RPM_COMPONENT_INSTALL ON)
 #set(CPACK_RPM_FILENAME RPM-DEFAULT)
 set(CPACK_RPM_PACKAGE_SUMMARY "MonetDB - Monet Database Management System")
-set(CPACK_RPM_PACKAGE_VENDOR "MonetDB BV ")
+set(CPACK_RPM_PACKAGE_VENDOR "MonetDB Foundation ")
 set(CPACK_RPM_PACKAGE_LICENSE "MPLv2.0")
 set(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
 set(CPACK_RPM_PACKAGE_URL "https://www.monetdb.org/;)
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
--- a/debian/compat
+++ /dev/null
@@ -1,1 +0,0 @@
-12
diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -1,18 +1,18 @@
 Source: monetdb
 Section: database
 Priority: optional
-Maintainer: MonetDB BV 
+Maintainer: MonetDB Foundation 
 Homepage: https://www.monetdb.org/
 Vcs-Browser: https://dev.monetdb.org/hg/MonetDB/
 Vcs-Hg: https://dev.monetdb.org/hg/MonetDB/ -b default
-Build-Depends: debhelper (>= 12), cmake (>= 3.12), bison,
+Build-Depends: debhelper-compat (= 12), cmake (>= 3.12), bison,
  libbz2-dev, libcurl4-gnutls-dev, libgeos-dev (>= 3.10.0),
  libpcre3-dev, libreadline-dev, liblzma-dev, liblz4-dev (>= 1.8.0),
  libxml2-dev, 

MonetDB: default - Merge with Dec2023 branch.

2024-01-16 Thread Sjoerd Mullender via checkin-list
Changeset: 9f76020d3d45 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9f76020d3d45
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
monetdb5/modules/atoms/mtime.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 533 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
@@ -31845,12 +31845,12 @@ MTIMEdate_sub_msec_interval_bulk_p2;
 (empty)
 batmtime
 date_to_str
-pattern batmtime.date_to_str(X_0:bat[:str], X_1:bat[:str]):bat[:str] 
+pattern batmtime.date_to_str(X_0:bat[:date], X_1:bat[:str]):bat[:str] 
 MTIMEdate_to_str_bulk;
 (empty)
 batmtime
 date_to_str
-pattern batmtime.date_to_str(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid]):bat[:str] 
+pattern batmtime.date_to_str(X_0:bat[:date], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid]):bat[:str] 
 MTIMEdate_to_str_bulk;
 (empty)
 batmtime
@@ -47967,7 +47967,7 @@ mtime
 epoch
 command mtime.epoch(X_0:lng):timestamp 
 MTIMEtimestamp_frommsec_epoch;
-convert milli seconds since epoch into a timestamp
+convert milliseconds since epoch into a timestamp
 mtime
 epoch
 command mtime.epoch(X_0:int):timestamp 
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
@@ -23040,12 +23040,12 @@ MTIMEdate_sub_msec_interval_bulk_p2;
 (empty)
 batmtime
 date_to_str
-pattern batmtime.date_to_str(X_0:bat[:str], X_1:bat[:str]):bat[:str] 
+pattern batmtime.date_to_str(X_0:bat[:date], X_1:bat[:str]):bat[:str] 
 MTIMEdate_to_str_bulk;
 (empty)
 batmtime
 date_to_str
-pattern batmtime.date_to_str(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid]):bat[:str] 
+pattern batmtime.date_to_str(X_0:bat[:date], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid]):bat[:str] 
 MTIMEdate_to_str_bulk;
 (empty)
 batmtime
@@ -36397,7 +36397,7 @@ mtime
 epoch
 command mtime.epoch(X_0:lng):timestamp 
 MTIMEtimestamp_frommsec_epoch;
-convert milli seconds since epoch into a timestamp
+convert milliseconds since epoch into a timestamp
 mtime
 epoch
 command mtime.epoch(X_0:int):timestamp 
diff --git a/geom/ChangeLog.Dec2023 b/geom/ChangeLog.Dec2023
--- a/geom/ChangeLog.Dec2023
+++ b/geom/ChangeLog.Dec2023
@@ -1,3 +1,7 @@
 # ChangeLog file for geom
 # This file is updated with Maddlog
 
+* Mon Jan 15 2024 Sjoerd Mullender 
+- We switched over to using the reentrant interface of the geos library.
+  This fixed a number of bugs that would occur sporadically.
+
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -511,17 +511,17 @@ func2(MTIMEtimestamp_add_msec_interval, 
  INIT_VARIN, INIT_VARIN, INIT_VAROUT,
  GET_NEXT_VAR, GET_NEXT_VAR, APPEND_VAR, FINISH_INT_SINGLE, 
CLEAR_NOTHING)
 func2(MTIMEodbc_timestamp_add_msec_interval_time,
- "odbc_timestamp_add_msec_interval_time", daytime, lng, timestamp,
+ "odbc_timestamp_add_msec_time", daytime, lng, timestamp,
  odbc_timestamp_add_msec_interval_time, func2_except, DEC_VAR_R, 
DEC_VAR_R,
  DEC_VAR_R, DEC_INT, INIT_VARIN, INIT_VARIN, INIT_VAROUT, GET_NEXT_VAR,
  GET_NEXT_VAR, APPEND_VAR, FINISH_INT_SINGLE, CLEAR_NOTHING)
 func2(MTIMEodbc_timestamp_add_month_interval_time,
- "odbc_timestamp_add_month_interval_time", daytime, int, timestamp,
+ "odbc_timestamp_add_month_time", daytime, int, timestamp,
  odbc_timestamp_add_month_interval_time, func2_except, DEC_VAR_R,
  DEC_VAR_R, DEC_VAR_R, DEC_INT, INIT_VARIN, INIT_VARIN, INIT_VAROUT,
  GET_NEXT_VAR, GET_NEXT_VAR, APPEND_VAR, FINISH_INT_SINGLE, 
CLEAR_NOTHING)
 func2(MTIMEodbc_timestamp_add_msec_interval_date,
- "odbc_timestamp_add_msec_interval_date", date, lng, timestamp,
+ "odbc_timestamp_add_msec_date", date, lng, timestamp,
  odbc_timestamp_add_msec_interval_date, func2_except, DEC_VAR_R, 
DEC_VAR_R,
  DEC_VAR_R, DEC_INT, INIT_VARIN, INIT_VARIN, INIT_VAROUT, GET_NEXT_VAR,
  GET_NEXT_VAR, APPEND_VAR, FINISH_INT_SINGLE, CLEAR_NOTHING)
@@ -543,54 +543,54 @@ func2(MTIMEtime_add_msec_interval, "time
  daytime, time_add_msec_interval, func2_noexcept, DEC_VAR_R, DEC_VAR_R,
  DEC_VAR_R, DEC_INT, INIT_VARIN, INIT_VARIN, INIT_VAROUT, GET_NEXT_VAR,
  GET_NEXT_VAR, APPEND_VAR, FINISH_INT_SINGLE, CLEAR_NOTHING)
-func2(MTIMEdate_submonths, "date_submonths", date, int, date, date_submonths,
+func2(MTIMEdate_submonths, "date_sub_month_interval", date, int, date, 
date_submonths,
  func2_except, DEC_VAR_R, DEC_VAR_R, DEC_VAR_R, DEC_INT, INIT_VARIN,
  INIT_VARIN, INIT_VAROUT, GET_NEXT_VAR, GET_NEXT_VAR, APPEND_VAR,
  FINISH_INT_SINGLE, CLEAR_NOTHING)

MonetDB: default - Merge with Dec2023 branch.

2024-01-15 Thread Sjoerd Mullender via checkin-list
Changeset: f1fa373baaf3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f1fa373baaf3
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (33 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2511,12 +2511,14 @@ log_activate(logger *lg)
bool flush_cleanup = false;
gdk_return res = GDK_SUCCEED;
 
+   rotation_lock(lg);
const lng current_file_size = LOG_DISABLED(lg) ? 0 : (lng) 
getfilepos(getFile(lg->current->output_log));
 
-   if (current_file_size == -1)
+   if (current_file_size == -1) {
+   rotation_unlock(lg);
return GDK_FAIL;
-
-   rotation_lock(lg);
+   }
+
if (!lg->flushnow &&
!lg->current->next &&
current_file_size > 2 &&
diff --git 
a/sql/test/BugTracker-2023/Tests/insert-delete-insert-crash-7415.test 
b/sql/test/BugTracker-2023/Tests/insert-delete-insert-crash-7415.test
--- a/sql/test/BugTracker-2023/Tests/insert-delete-insert-crash-7415.test
+++ b/sql/test/BugTracker-2023/Tests/insert-delete-insert-crash-7415.test
@@ -49,7 +49,7 @@ insert into t1 (select * from t1)
 query I
 select count(*) from t1
 
-56610
+63936
 
 statement ok
 DROP TABLE t1
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-01-15 Thread Sjoerd Mullender via checkin-list
Changeset: 15f365419546 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/15f365419546
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 613 to 300 lines):

diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -1247,6 +1247,13 @@ HEAP_malloc(BAT *b, size_t nbytes)
 void
 HEAP_free(Heap *heap, var_t mem)
 {
+/* we cannot free pieces of the heap because we may have used
+ * append_varsized_bat to create the heap; if we did, there may be
+ * multiple locations in the offset heap that refer to the same entry in
+ * the vheap, so we cannot free any until we free all */
+   (void) heap;
+   (void) mem;
+#if 0
HEADER *hheader = HEAP_index(heap, 0, HEADER);
CHUNK *beforep;
CHUNK *blockp;
@@ -1318,6 +1325,7 @@ HEAP_free(Heap *heap, var_t mem)
 */
hheader->head = block;
}
+#endif
 }
 
 void
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2335,7 +2335,6 @@ log_new(int debug, const char *fn, const
 static logged_range *
 do_flush_range_cleanup(logger *lg)
 {
-   rotation_lock(lg);
logged_range *frange = lg->flush_ranges;
logged_range *first = frange;
 
@@ -2345,7 +2344,6 @@ do_flush_range_cleanup(logger *lg)
frange = frange->next;
}
if (first == frange) {
-   rotation_unlock(lg);
return first;
}
 
@@ -2361,7 +2359,6 @@ do_flush_range_cleanup(logger *lg)
frange->output_log = NULL;
}
}
-   rotation_unlock(lg);
return flast;
 }
 
@@ -2535,9 +2532,9 @@ log_activate(logger *lg)
flush_cleanup = true;
do_rotate(lg);
}
-   rotation_unlock(lg);
if (flush_cleanup)
(void) do_flush_range_cleanup(lg);
+   rotation_unlock(lg);
return res;
 }
 
@@ -3162,15 +3159,16 @@ log_tflush(logger *lg, ulng file_id, uln
if (log_open_output(lg) != GDK_SUCCEED)
GDKfatal("Could not create new log file\n");/* 
TODO: does not have to be fatal (yet) */
do_rotate(lg);
-   rotation_unlock(lg);
(void) do_flush_range_cleanup(lg);
assert(lg->flush_ranges == lg->current);
+   rotation_unlock(lg);
return log_commit(lg, p, NULL, 0);
}
 
if (LOG_DISABLED(lg))
return GDK_SUCCEED;
 
+   rotation_lock(lg);
logged_range *frange = do_flush_range_cleanup(lg);
 
while (frange->next && frange->id < file_id) {
@@ -3192,22 +3190,20 @@ log_tflush(logger *lg, ulng file_id, uln
/* else somebody else has flushed our log file */
 
if (ATOMIC_DEC(>refcount) == 1 && !LOG_DISABLED(lg)) {
-   rotation_lock(lg);
if (frange != lg->current && frange->output_log) {
close_stream(frange->output_log);
frange->output_log = NULL;
}
-   rotation_unlock(lg);
}
 
if (ATOMIC_DEC(>nr_flushers) == 0) {
/* I am the last flusher
 * if present,
 * wake up the exclusive flusher in log_tstart */
-   rotation_lock(lg);
+   /* rotation_lock is still being held */
MT_cond_signal(>excl_flush_cv);
-   rotation_unlock(lg);
}
+   rotation_unlock(lg);
 
return GDK_SUCCEED;
 }
@@ -3381,8 +3377,8 @@ log_tstart(logger *lg, bool flushnow, ul
GDKfatal("Could not create new log file\n");
/* TODO: does not have to be fatal (yet) */
}
do_rotate(lg);
+   (void) do_flush_range_cleanup(lg);
rotation_unlock(lg);
-   (void) do_flush_range_cleanup(lg);
 
if (lg->saved_id + 1 < lg->id)
log_flush(lg, (1ULL << 63));
diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c
--- a/sql/server/sql_atom.c
+++ b/sql/server/sql_atom.c
@@ -113,7 +113,7 @@ atom_get_int(atom *a)
lng r = 0;
 #endif
 
-   if (!a->isnull) {
+   if (a && !a->isnull) {
switch (ATOMstorage(a->data.vtype)) {
case TYPE_bte:
r = a->data.val.btval;
diff --git a/sql/server/sql_datetime.c b/sql/server/sql_datetime.c
--- a/sql/server/sql_datetime.c
+++ b/sql/server/sql_datetime.c
@@ -139,25 +139,29 @@ parse_interval_(mvc *sql, lng sign, cons
switch (sk) {
case imonth:
if (val >= 12) {
-   snprintf(sql->errstr, ERRSIZE, _("Overflow detected in 
months (" LLFMT ")\n"), val);
+   if (sql)
+   snprintf(sql->errstr, ERRSIZE, _("Overflow 
detected in months (" LLFMT ")\n"), val);

MonetDB: default - Merge with Dec2023 branch.

2024-01-10 Thread Sjoerd Mullender via checkin-list
Changeset: d965f8f9b5b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d965f8f9b5b3
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (98 lines):

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
@@ -4333,7 +4333,7 @@ rel2bin_select(backend *be, sql_rel *rel
sql_exp *e = en->data;
prop *p;
 
-   if ((p=find_prop(e->p, PROP_HASHCOL)) != NULL) {
+   if ((p=find_prop(e->p, PROP_HASHCOL)) != NULL && !is_anti(e)) {
sql_idx *i = p->value.pval;
int oldvtop = be->mb->vtop, oldstop = be->mb->stop, 
oldvid = be->mb->vid;
 
@@ -5143,6 +5143,7 @@ update_check_ukey(backend *be, stmt **up
*/
if (!isNew(k)) {
stmt *nu_tids = stmt_tdiff(be, dels, u_tids, NULL); /* 
not updated ids */
+   nu_tids = stmt_project(be, nu_tids, dels);
list *lje = sa_list(sql->sa);
list *rje = sa_list(sql->sa);
 
@@ -5256,6 +5257,7 @@ update_check_ukey(backend *be, stmt **up
/* s should be empty */
if (!isNew(k)) {
stmt *nu_tids = stmt_tdiff(be, dels, u_tids, NULL); /* 
not updated ids */
+   nu_tids = stmt_project(be, nu_tids, dels);
assert (updates);
 
h = updates[c->c->colnr];
diff --git a/sql/test/BugTracker-2024/Tests/All 
b/sql/test/BugTracker-2024/Tests/All
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -0,0 +1,2 @@
+inequality-hash-issue-7426
+pkey-check-failed-7425
diff --git a/sql/test/BugTracker-2024/Tests/SingleServer 
b/sql/test/BugTracker-2024/Tests/SingleServer
new file mode 100644
diff --git a/sql/test/BugTracker-2024/Tests/inequality-hash-issue-7426.test 
b/sql/test/BugTracker-2024/Tests/inequality-hash-issue-7426.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/inequality-hash-issue-7426.test
@@ -0,0 +1,34 @@
+
+statement ok
+CREATE TABLE t1(c1 INTEGER)
+
+statement ok
+CREATE TABLE t0(c0 BOOL, c1 INTEGER)
+
+statement ok
+INSERT INTO t1 (c1) VALUES (0)
+
+statement ok
+CREATE UNIQUE INDEX i0 ON t0(c1 , c0 )
+
+statement ok
+INSERT INTO t0 (c0, c1) VALUES (true, 0)
+
+query III
+SELECT t0.c0, t0.c1, t1.c1 FROM t1 INNER JOIN t0 ON t0.c0
+
+1
+0
+0
+
+query I
+SELECT (t0.c1) IS NOT NULL FROM t1 INNER  JOIN t0 ON t0.c0
+
+1
+
+query III
+SELECT t0.c0, t0.c1, t1.c1 FROM t1 INNER  JOIN t0 ON t0.c0 WHERE (t0.c1) IS 
NOT NULL
+
+1
+0
+0
diff --git a/sql/test/BugTracker-2024/Tests/pkey-check-failed-7425.test 
b/sql/test/BugTracker-2024/Tests/pkey-check-failed-7425.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/pkey-check-failed-7425.test
@@ -0,0 +1,17 @@
+statement ok
+create table ttt(id int primary key,k int NOT NULL DEFAULT '0')
+
+statement ok
+insert into ttt values(1,3),(2,3),(3,3),(4,3),(5,3)
+
+statement ok
+update ttt set k=k+1 where id=3
+
+statement ok
+delete from ttt where id=2
+
+statement ok
+update ttt set id = 3 where id = 3
+
+statement ok
+drop table ttt
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-01-09 Thread Sjoerd Mullender via checkin-list
Changeset: a9c025ec7357 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a9c025ec7357
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 4088 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
@@ -385,6 +385,7 @@ const char *MT_thread_getalgorithm(void)
 void *MT_thread_getdata(void);
 const char *MT_thread_getname(void);
 bool MT_thread_init(void);
+gdk_return MT_thread_init_add_callback(void (*init)(void *), void 
(*destroy)(void *), void *data);
 bool MT_thread_register(void);
 void MT_thread_set_qry_ctx(QryCtx *ctx);
 void MT_thread_setalgorithm(const char *algo);
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -184,10 +184,18 @@ GDKlockstatistics(int what)
 
 #endif /* LOCK_STATS */
 
+struct thread_funcs {
+   void (*init)(void *);
+   void (*destroy)(void *);
+   void *data;
+};
+
 static struct mtthread {
struct mtthread *next;
void (*func) (void *);  /* function to be called */
void *data; /* and its data */
+   struct thread_funcs *thread_funcs; /* callback funcs */
+   int nthread_funcs;
MT_Lock *lockwait;  /* lock we're waiting for */
MT_Sema *semawait;  /* semaphore we're waiting for */
MT_Cond *condwait;  /* condition variable we're waiting for */
@@ -686,6 +694,36 @@ MT_thread_override_limits(void)
return self && self->limit_override;
 }
 
+static struct thread_init_cb {
+   struct thread_init_cb *next;
+   void (*init)(void *);
+   void (*destroy)(void *);
+   void *data;
+} *init_cb;
+static MT_Lock thread_init_lock = MT_LOCK_INITIALIZER(thread_init_lock);
+
+gdk_return
+MT_thread_init_add_callback(void (*init)(void *), void (*destroy)(void *), 
void *data)
+{
+   struct thread_init_cb *p = GDKmalloc(sizeof(struct thread_init_cb));
+
+   if (p == NULL)
+   return GDK_FAIL;
+   *p = (struct thread_init_cb) {
+   .init = init,
+   .destroy = destroy,
+   .next = NULL,
+   .data = data,
+   };
+   MT_lock_set(_init_lock);
+   struct thread_init_cb **pp = _cb;
+   while (*pp)
+   pp = &(*pp)->next;
+   *pp = p;
+   MT_lock_unset(_init_lock);
+   return GDK_SUCCEED;
+}
+
 #ifdef HAVE_PTHREAD_H
 static void *
 #else
@@ -719,7 +757,16 @@ thread_starter(void *arg)
self->data = NULL;
self->sp = THRsp();
thread_setself(self);
+   for (int i = 0; i < self->nthread_funcs; i++) {
+   if (self->thread_funcs[i].init)
+   
(*self->thread_funcs[i].init)(self->thread_funcs[i].data);
+   }
(*self->func)(data);
+   for (int i = 0; i < self->nthread_funcs; i++) {
+   if (self->thread_funcs[i].destroy)
+   
(*self->thread_funcs[i].destroy)(self->thread_funcs[i].data);
+   }
+   free(self->thread_funcs);
ATOMIC_SET(>exited, 1);
TRC_DEBUG(THRD, "Exit thread \"%s\"\n", self->threadname);
return 0;   /* NULL for pthreads, 0 for Windows */
@@ -843,6 +890,33 @@ MT_create_thread(MT_Id *t, void (*f) (vo
.refs = 1,
.tid = mtid,
};
+   MT_lock_set(_init_lock);
+   /* remember the list of callback functions we need to call for
+* this thread (i.e. anything registered so far) */
+   for (struct thread_init_cb *p = init_cb; p; p = p->next)
+   self->nthread_funcs++;
+   if (self->nthread_funcs > 0) {
+   self->thread_funcs = malloc(self->nthread_funcs * 
sizeof(*self->thread_funcs));
+   if (self->thread_funcs == NULL) {
+   GDKsyserror("Cannot allocate memory\n");
+   MT_lock_unset(_init_lock);
+   free(self);
+#ifdef HAVE_PTHREAD_H
+   pthread_attr_destroy();
+#endif
+   return -1;
+   }
+   int n = 0;
+   for (struct thread_init_cb *p = init_cb; p; p = p->next) {
+   self->thread_funcs[n++] = (struct thread_funcs) {
+   .init = p->init,
+   .destroy = p->destroy,
+   .data = p->data,
+   };
+   }
+   }
+   MT_lock_unset(_init_lock);
+
ATOMIC_INIT(>exited, 0);
strcpy_len(self->threadname, threadname, sizeof(self->threadname));
char *p;
@@ -869,6 +943,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
 #endif
if (ret != 0) {
GDKsyserr(ret, "Cannot start thread");
+   free(self->thread_funcs);

MonetDB: default - Merge with Dec2023 branch.

2024-01-05 Thread Sjoerd Mullender via checkin-list
Changeset: dfe6ec792bba for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dfe6ec792bba
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (11 lines):

diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -2024,6 +2024,7 @@ mapi_destroy(Mapi mid)
free(mid->server);
free(mid->uri);
free(mid->tracebuffer);
+   free(mid->noexplain);
if (mid->errorstr && mid->errorstr != mapi_nomem)
free(mid->errorstr);
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2024-01-05 Thread Sjoerd Mullender via checkin-list
Changeset: 64e4994fee8a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/64e4994fee8a
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 392 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
@@ -6561,6 +6561,39 @@ sql_update_dec2023(Client c, mvc *sql, s
return err;
 }
 
+static str
+sql_update_dec2023_sp1(Client c, mvc *sql, sql_schema *s)
+{
+   char *err;
+   res_table *output;
+   BAT *b;
+
+   (void) sql;
+   (void) s;
+
+   /* json.isvalid(json) has been fixed to return NULL on NULL input */
+   err = SQLstatementIntern(c, "SELECT f.id FROM sys.functions f WHERE 
f.name = 'isvalid' AND f.schema_id = (SELECT s.id FROM sys.schemas s WHERE 
s.name = 'json') AND EXISTS (SELECT * FROM sys.args a WHERE a.func_id = f.id 
AND a.number = 1 AND a.type = 'json') AND f.func LIKE '%begin return 
true%';\n", "update", true, false, );
+   if (err)
+   return err;
+   b = BATdescriptor(output->cols[0].b);
+   if (b) {
+   if (BATcount(b) > 0) {
+   const char *query = "drop function 
json.isvalid(json);\n"
+   "create function json.isvalid(js json)\n"
+   "returns bool begin return case when js is NULL 
then NULL else true end; end;\n"
+   "GRANT EXECUTE ON FUNCTION json.isvalid(json) 
TO PUBLIC;\n"
+   "update sys.functions set system = true where 
system <> true and name = 'isvalid' and schema_id = (select id from sys.schemas 
where name = 'json');\n";
+   assert(BATcount(b) == 1);
+   printf("Running database upgrade commands:\n%s\n", 
query);
+   fflush(stdout);
+   err = SQLstatementIntern(c, query, "update", true, 
false, NULL);
+   }
+   BBPunfix(b->batCacheid);
+   }
+   res_table_destroy(output);
+   return err;
+}
+
 int
 SQLupgrades(Client c, mvc *m)
 {
@@ -6739,15 +6772,19 @@ SQLupgrades(Client c, mvc *m)
goto handle_error;
}
 
+   if ((err = sql_update_jun2023_sp3(c, m, s)) != NULL) {
+   TRC_CRITICAL(SQL_PARSER, "%s\n", err);
+   goto handle_error;
+   }
+
if ((err = sql_update_dec2023(c, m, s)) != NULL) {
TRC_CRITICAL(SQL_PARSER, "%s\n", err);
goto handle_error;
}
 
-   if ((err = sql_update_jun2023_sp3(c, m, s)) != NULL) {
+   if ((err = sql_update_dec2023_sp1(c, m, s)) != NULL) {
TRC_CRITICAL(SQL_PARSER, "%s\n", err);
-   freeException(err);
-   return -1;
+   goto handle_error;
}
 
return 0;
diff --git 
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- 
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ 
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -603,3 +603,10 @@ GRANT EXECUTE ON FUNCTION sys.persist_un
 UPDATE sys.functions SET system = true WHERE system <> true AND
 name = 'persist_unlogged' AND schema_id = 2000 AND type = 5 AND language = 1;
 
+Running database upgrade commands:
+drop function json.isvalid(json);
+create function json.isvalid(js json)
+returns bool begin return case when js is NULL then NULL else true end; end;
+GRANT EXECUTE ON FUNCTION json.isvalid(json) TO PUBLIC;
+update sys.functions set system = true where system <> true and name = 
'isvalid' and schema_id = (select id from sys.schemas where name = 'json');
+
diff --git a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
@@ -603,3 +603,10 @@ GRANT EXECUTE ON FUNCTION sys.persist_un
 UPDATE sys.functions SET system = true WHERE system <> true AND
 name = 'persist_unlogged' AND schema_id = 2000 AND type = 5 AND language = 1;
 
+Running database upgrade commands:
+drop function json.isvalid(json);
+create function json.isvalid(js json)
+returns bool begin return case when js is NULL then NULL else true end; end;
+GRANT EXECUTE ON FUNCTION json.isvalid(json) TO PUBLIC;
+update sys.functions set system = true where system <> true and name = 
'isvalid' and schema_id = (select id from sys.schemas where name = 'json');
+
diff --git 
a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
+++ 

MonetDB: default - Merge with Dec2023 branch.

2023-12-29 Thread Sjoerd Mullender via checkin-list
Changeset: 37e0de6b403a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/37e0de6b403a
Modified Files:
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/gdk.h
gdk/gdk_bat.c
gdk/gdk_bbp.c
gdk/gdk_hash.c
gdk/gdk_private.h
gdk/gdk_project.c
gdk/libbat.rc
monetdb5/modules/atoms/batxml.c
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/str.c
monetdb5/modules/kernel/alarm.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/kernel/bat5.c
monetdb5/modules/kernel/batcolor.c
monetdb5/modules/mal/manifold.c
monetdb5/modules/mal/txtsim.c
monetdb5/tools/libmonetdb5.rc
sql/backends/monet5/UDF/pyapi3/emit3.c
sql/backends/monet5/sql_rank.c
sql/backends/monet5/vaults/fits/fits.c
sql/backends/monet5/vaults/netcdf/netcdf.c
sql/server/rel_distribute.c
sql/storage/bat/bat_storage.c
testing/Mz.py.in
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 15093 to 300 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,9 @@
 # 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.
+# Copyright 2024 MonetDB Foundation;
+# Copyright August 2008 - 2023 MonetDB B.V.;
+# Copyright 1997 - July 2008 CWI.
 #]]
 
 cmake_minimum_required(VERSION 3.12)
diff --git a/Config.cmake.in b/Config.cmake.in
--- a/Config.cmake.in
+++ b/Config.cmake.in
@@ -5,7 +5,9 @@
 # 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.
+# Copyright 2024 MonetDB Foundation;
+# Copyright August 2008 - 2023 MonetDB B.V.;
+# Copyright 1997 - July 2008 CWI.
 #]]
 
 @PACKAGE_INIT@
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -4,7 +4,9 @@
 # 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.
+# Copyright 2024 MonetDB Foundation;
+# Copyright August 2008 - 2023 MonetDB B.V.;
+# Copyright 1997 - July 2008 CWI.
 
 %global name MonetDB
 %global version 11.50.0
diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -4,7 +4,9 @@
 # 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.
+# Copyright 2024 MonetDB Foundation;
+# Copyright August 2008 - 2023 MonetDB B.V.;
+# Copyright 1997 - July 2008 CWI.
 
 # python mkodbcwxs.py VERSION BITS PREFIX > PREFIX/MonetDB-ODBC-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\candle.exe" -nologo -arch 
x64/x86 PREFIX/MonetDB-ODBC-Installer.wxs
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -4,7 +4,9 @@
 # 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.
+# Copyright 2024 MonetDB Foundation;
+# Copyright August 2008 - 2023 MonetDB B.V.;
+# Copyright 1997 - July 2008 CWI.
 
 # python mksqlwxs.py VERSION BITS PREFIX > PREFIX/MonetDB5-SQL-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\candle.exe" -nologo -arch 
x64/x86 PREFIX/MonetDB5-SQL-Installer.wxs
diff --git a/README.rst b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -147,4 +147,6 @@ This Source Code Form is subject to the 
 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.
+Copyright 2024 MonetDB Foundation;
+Copyright August 2008 - 2023 MonetDB B.V.;
+Copyright 1997 - July 2008 CWI.
diff --git a/buildtools/CMakeLists.txt b/buildtools/CMakeLists.txt
--- a/buildtools/CMakeLists.txt
+++ b/buildtools/CMakeLists.txt
@@ -5,7 +5,9 @@
 # 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.
+# Copyright 2024 MonetDB Foundation;
+# Copyright August 2008 - 2023 MonetDB B.V.;
+# Copyright 1997 - July 2008 CWI.
 #]]
 
 add_subdirectory(conf)
diff --git a/buildtools/conf/CMakeLists.txt b/buildtools/conf/CMakeLists.txt
--- a/buildtools/conf/CMakeLists.txt
+++ b/buildtools/conf/CMakeLists.txt
@@ -5,7 +5,9 @@
 # 

MonetDB: default - Merge with Dec2023 branch.

2023-12-28 Thread Sjoerd Mullender via checkin-list
Changeset: fd47d316bd86 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fd47d316bd86
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 12656 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -819,3 +819,4 @@ c5b17681b55e6ca155db28be59913699e561502a
 c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_17
 c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_SP3_release
 1230526af30f40eeea30fb87c47c3e414920561f Dec2023_1
+1230526af30f40eeea30fb87c47c3e414920561f Dec2023_release
diff --git 
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- 
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ 
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -1,369 +1,6 @@
 Running database upgrade commands to update system tables.
 
 Running database upgrade commands:
-drop procedure if exists wlc.master() cascade;
-drop procedure if exists wlc.master(string) cascade;
-drop procedure if exists wlc.stop() cascade;
-drop procedure if exists wlc.flush() cascade;
-drop procedure if exists wlc.beat(int) cascade;
-drop function if exists wlc.clock() cascade;
-drop function if exists wlc.tick() cascade;
-drop procedure if exists wlr.master(string) cascade;
-drop procedure if exists wlr.stop() cascade;
-drop procedure if exists wlr.accept() cascade;
-drop procedure if exists wlr.replicate() cascade;
-drop procedure if exists wlr.replicate(timestamp) cascade;
-drop procedure if exists wlr.replicate(tinyint) cascade;
-drop procedure if exists wlr.replicate(smallint) cascade;
-drop procedure if exists wlr.replicate(integer) cascade;
-drop procedure if exists wlr.replicate(bigint) cascade;
-drop procedure if exists wlr.beat(integer) cascade;
-drop function if exists wlr.clock() cascade;
-drop function if exists wlr.tick() cascade;
-drop schema if exists wlc cascade;
-drop schema if exists wlr cascade;
-
-Running database upgrade commands:
-create function sys.regexp_replace(ori string, pat string, rep string, flg 
string)
-returns string external name pcre.replace;
-grant execute on function regexp_replace(string, string, string, string) to 
public;
-create function sys.regexp_replace(ori string, pat string, rep string)
-returns string
-begin
- return sys.regexp_replace(ori, pat, rep, '');
-end;
-grant execute on function regexp_replace(string, string, string) to public;
-update sys.functions set system = true where system <> true and name = 
'regexp_replace' and schema_id = 2000 and type = 1;
-
-Running database upgrade commands:
-drop function if exists sys.dump_database(boolean) cascade;
-drop procedure if exists sys.dump_table_data() cascade;
-drop procedure if exists sys.dump_table_data(string, string) cascade;
-drop view if exists sys.dump_tables cascade;
-drop view if exists sys.dump_comments cascade;
-drop function if exists sys.prepare_esc(string, string) cascade;
-drop view if exists sys.dump_partition_tables cascade;
-drop view if exists sys.dump_create_users cascade;
-drop view if exists sys.describe_tables cascade;
-drop function if exists sys.get_remote_table_expressions(string, string) 
cascade;
-drop function if exists sys.remote_table_credentials(string) cascade;
-drop function if exists sys.sq(string) cascade;
-create table sys.remote_user_info (table_id int, username varchar(1024), 
password varchar(256));
-create function sys.decypher (cypher string) returns string external name 
sql.decypher;
-update sys.functions set system = true where system <> true and name = 
'decypher' and schema_id = 2000 and type = 1;
-update sys._tables set system = true where system <> true and name = 
'remote_user_info' and schema_id = 2000;
-CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN  || 
sys.replace(s,,'') || ; END;
-CREATE FUNCTION sys.get_remote_table_expressions(s STRING, t STRING) RETURNS 
STRING BEGIN
- RETURN SELECT ' ON ' || sys.SQ(tt.query) || ' WITH USER ' || sys.SQ(username) 
|| ' ENCRYPTED PASSWORD ' || sys.SQ(sys.decypher("password")) FROM 
sys.remote_user_info r, sys._tables tt, sys.schemas ss where tt.name = t and 
ss.name = s and tt.schema_id = ss.id and r.table_id = tt.id;
-END;
-CREATE VIEW sys.describe_tables AS
- SELECT
- t.id o,
- s.name sch,
- t.name tab,
- ts.table_type_name typ,
- (SELECT
- ' (' ||
- GROUP_CONCAT(
- sys.DQ(c.name) || ' ' ||
- sys.describe_type(c.type, c.type_digits, c.type_scale) ||
- ifthenelse(c."null" = 'false', ' NOT NULL', '')
- , ', ') || ')'
- FROM sys._columns c
- WHERE c.table_id = t.id) col,
- CASE ts.table_type_name
- WHEN 'REMOTE TABLE' THEN
- sys.get_remote_table_expressions(s.name, t.name)
- WHEN 'MERGE TABLE' THEN
- sys.get_merge_table_partition_expressions(t.id)
- WHEN 'VIEW' THEN
- sys.schema_guard(s.name, t.name, t.query)
- ELSE
- ''
- END opt
- FROM sys.schemas s, sys.table_types ts, sys.tables t
- WHERE 

MonetDB: default - Merge with Dec2023 branch.

2023-12-22 Thread Sjoerd Mullender via checkin-list
Changeset: d20c215100f4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d20c215100f4
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (267 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3669,7 +3669,7 @@ joincost(BAT *r, BUN lcount, struct cand
/* only count the cost of creating the hash for
 * non-persistent bats */
MT_lock_set(>theaplock);
-   if (!(BBP_status(r->batCacheid) & BBPEXISTING) /* || 
r->theap->dirty */ || GDKinmemory(r->theap->farmid))
+   if (r->batRole != PERSISTENT /* || r->theap->dirty */ 
|| GDKinmemory(r->theap->farmid))
rcost += cnt * 2.0;
MT_lock_unset(>theaplock);
 #else
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1758,7 +1758,7 @@ BATselect(BAT *b, BAT *s, const void *tl
}
}
}
-   if (wanthash && !havehash) {
+   if (wanthash && !havehash && b->batRole != PERSISTENT) {
MT_lock_set(>theaplock);
if (++b->selcnt > 1000)
b->selcnt = 1000; /* limit value */
diff --git a/geom/ChangeLog-Archive b/geom/ChangeLog-Archive
--- a/geom/ChangeLog-Archive
+++ b/geom/ChangeLog-Archive
@@ -15,7 +15,7 @@
   used in the implementation of the filter functions ST_Intersects and
   ST_Dwithin for geometric points.
 - Improves shapefile support by replacing functions SHPattach,
-  SHPpartialimport, ahd SHPimport with SHPload.
+  SHPpartialimport, and SHPimport with SHPload.
 - Introduces functions ST_DistanceGeographic, ST_DwithinGeographic,
   ST_IntersectsGeographic, ST_CoversGeographic, ST_Collects with geodesic
   semantics. ST_Transform can be used to convert geodetic into geographic
diff --git a/sql/ChangeLog-Archive b/sql/ChangeLog-Archive
--- a/sql/ChangeLog-Archive
+++ b/sql/ChangeLog-Archive
@@ -3,9 +3,9 @@
 
 * Tue Dec  5 2023 Lucas Pereira  - 
11.49.1-20231221
 - Introduction of table returning function `persist_unlogged(schema
-  string, table string)` that attempts to persist data in disk if
-  "schema"."table" is unlogged table in insert only mode.  If persist
-  attempt is successful, the count of the persisted rows is returned,
+  string, table string)` that attempts to persist data to disk if the
+  "schema"."table" is an unlogged table and set to insert only mode.  If
+  persist attempt is successful, the count of persisted rows is returned,
   otherwise the count is 0.
 
 * Thu Aug 24 2023 Martin van Dinther  
- 11.49.1-20231221
diff --git a/sql/test/BugTracker-2023/Tests/All 
b/sql/test/BugTracker-2023/Tests/All
--- a/sql/test/BugTracker-2023/Tests/All
+++ b/sql/test/BugTracker-2023/Tests/All
@@ -1,3 +1,5 @@
+ifnull-6933
+HAVE_GEOM?empty-result-aggr-crash-7274
 ambiguous-identifiers-7372
 temp-table-foreign-key-crash-7378
 update-mask-id-crash-7379
@@ -10,6 +12,7 @@ rollback-alter-drop-col-crash-7385
 view-on-alias-crash-7386
 alter-inc-seq-crash-7387
 misc-crashes-7390
+greatest-least-multi-arg-7391
 union-query-7401
 join-on-row_number-over-7403
 between-crash-7413
diff --git a/sql/test/BugTracker-2023/Tests/between-crash-7413.test 
b/sql/test/BugTracker-2023/Tests/between-crash-7413.test
--- a/sql/test/BugTracker-2023/Tests/between-crash-7413.test
+++ b/sql/test/BugTracker-2023/Tests/between-crash-7413.test
@@ -7,3 +7,6 @@ INSERT INTO v0 (v1) VALUES (NULL) , (3) 
 statement ok
 DELETE FROM v0 WHERE v1 <= (SELECT 2 AS zero WHERE (v1 BETWEEN 1 AND (SELECT 
MAX (v1) FROM v0 name)) >= v1)
 
+statement ok
+DROP TABLE v0
+
diff --git a/sql/test/BugTracker-2023/Tests/empty-result-aggr-crash-7274.test 
b/sql/test/BugTracker-2023/Tests/empty-result-aggr-crash-7274.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2023/Tests/empty-result-aggr-crash-7274.test
@@ -0,0 +1,16 @@
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE t7274 ( "id" INTEGER, "g"  GEOMETRY )
+
+query IT
+select id, st_collect(g) as g from t7274  where false  group by id
+
+
+statement ok
+create table t7274b as  select id, st_collect(g) as g from t7274  where false  
group by id
+
+statement ok
+ROLLBACK
+
diff --git a/sql/test/BugTracker-2023/Tests/greatest-least-multi-arg-7391.test 
b/sql/test/BugTracker-2023/Tests/greatest-least-multi-arg-7391.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2023/Tests/greatest-least-multi-arg-7391.test
@@ -0,0 +1,56 @@
+query I
+SELECT greatest(3, 4, 2, 1)
+
+4
+
+query I
+SELECT least(3, 4, 2, 1)
+
+1
+
+query I
+SELECT greatest(3, 4, '0', '5')
+
+5
+
+query I
+SELECT least(3, 4, 1, 2, '0', '5')
+
+0
+
+query R
+SELECT greatest(3.321, 4.4321, '0.210', '5.54321', -6.54321)
+
+5.543
+

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2023-12-21 Thread Sjoerd Mullender via checkin-list
Changeset: 8bb8976fac2c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8bb8976fac2c
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files..

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-12-21 Thread Sjoerd Mullender via checkin-list
Changeset: 87e9f956e042 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/87e9f956e042
Modified Files:
MonetDB.spec
cmake/monetdb-versions.cmake
debian/control
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 2290 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -818,3 +818,4 @@ 5683fd900f28d65ad7c98d1ed1efd992023a7fa4
 c5b17681b55e6ca155db28be59913699e561502a Dec2023_root
 c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_17
 c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_SP3_release
+1230526af30f40eeea30fb87c47c3e414920561f Dec2023_1
diff --git a/ChangeLog-Archive b/ChangeLog-Archive
--- a/ChangeLog-Archive
+++ b/ChangeLog-Archive
@@ -1,6 +1,28 @@
 # DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY
 # This file contains past ChangeLog entries
 
+* Fri Dec  1 2023 Sjoerd Mullender  - 11.49.1-20231221
+- All binary packages are now signed with a new key with key fingerprint
+  DBCE 5625 94D7 1959 7B54  CE85 3F1A D47F 5521 A603.
+
+* Mon Oct 30 2023 Sjoerd Mullender  - 11.49.1-20231221
+- The ranges of merge partitions are now pushed down into the low
+  level GDK operations, giving them a handle to sometimes execute more
+  efficiently.
+
+* Thu Jul 27 2023 Niels Nes  - 11.49.1-20231221
+- Removed the PYTHON MAP external language option, as after a fork the
+  synchronization primitives could be in any state, leading to deadlocks.
+  During the upgrade function definitions will fallback to the normal
+  PYTHON language option.
+
+* Mon Jul 17 2023 Panagiotis Koutsourakis  - 
11.49.1-20231221
+- Implemented direct masking for strimp construction. The strimps
+  datastructure now keeps an array of 65K 64-bit integers that is zero
+  everywhere except at the indexes that correspond to header pairs. The
+  entry for the nth pair in order has the nth bit of the bitstring
+  on. These can be used to quickly construct bitstrings.
+
 * Fri Sep 29 2023 Sjoerd Mullender  - 11.47.11-20230929
 - Fixed an installation issue on Debian and Ubuntu introduced in the
   last build.
diff --git a/ChangeLog.Dec2023 b/ChangeLog.Dec2023
--- a/ChangeLog.Dec2023
+++ b/ChangeLog.Dec2023
@@ -1,24 +1,3 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
-* Fri Dec  1 2023 Sjoerd Mullender 
-- All binary packages are now signed with a new key with key fingerprint
-  DBCE 5625 94D7 1959 7B54  CE85 3F1A D47F 5521 A603.
-
-* Mon Oct 30 2023 Sjoerd Mullender 
-- The ranges of merge partitions are now pushed down into the low
-  level GDK operations, giving them a handle to sometimes execute more
-  efficiently.
-
-* Thu Jul 27 2023 Niels Nes 
-- Removed the PYTHON MAP external language option, as after a fork the
-  synchronization primitives could be in any state, leading to deadlocks.
-  During the upgrade function definitions will fallback to the normal
-  PYTHON language option.
-
-* Mon Jul 17 2023 Panagiotis Koutsourakis 
-- Implemented direct masking for strimp construction. The strimps
-  datastructure now keeps an array of 65K 64-bit integers that is zero
-  everywhere except at the indexes that correspond to header pairs. The
-  entry for the nth pair in order has the nth bit of the bitstring
-  on. These can be used to quickly construct bitstrings.
diff --git a/ChangeLog.Jun2023 b/ChangeLog.Jun2023
deleted file mode 100644
--- a/ChangeLog.Jun2023
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for devel
-# This file is updated with Maddlog
-
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -89,7 +89,7 @@ Group: Applications/Databases
 License: MPL-2.0
 URL: https://www.monetdb.org/
 BugURL: https://github.com/MonetDB/MonetDB/issues
-Source: 
https://www.monetdb.org/downloads/sources/Jun2023-SP3/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Dec2023/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -915,6 +915,158 @@ fi
 %endif
 
 %changelog
+* Thu Dec 21 2023 Sjoerd Mullender  - 11.49.1-20231221
+- Rebuilt.
+- GH#6933: Add support for scalar function IFNULL(expr1, expr2)
+- GH#7044: Improve error message regarding 3-level SQL names
+- GH#7261: Misleading error message
+- GH#7274: Aggregate function ST_Collect crashes mserver5
+- GH#7376: Concurrency Issue: Second Python UDF Awaits Completion of First
+  UDF
+- GH#7391: SQL 2023 : greatest/least functions with unlimited arguments
+  (not only 2)
+- GH#7403: Join not recognized between two row_number() columns
+- GH#7413: MonetDB server crashes in `BATcalcbetween_intern`
+
+* Tue Dec 19 2023 Sjoerd Mullender  - 11.49.1-20231221
+- monetdb5: Removed MAL functions bat.reuse and bat.reuseMap.
+
+* Tue Dec 12 2023 Lucas Pereira  - 
11.49.1-20231221
+- gdk: Introduced options wal_max_dropped, wal_max_file_age and
+  wal_max_file_size that control the write-ahead log file rotation.
+
+* Wed Dec  

MonetDB: default - Merge with Dec2023 branch, not changing any f...

2023-12-21 Thread Sjoerd Mullender via checkin-list
Changeset: 88783135c608 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/88783135c608
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch, not changing any files.

___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-12-21 Thread Sjoerd Mullender via checkin-list
Changeset: 04b05307b761 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/04b05307b761
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (89 lines):

diff --git a/clients/odbc/driver/ODBCQueries.h 
b/clients/odbc/driver/ODBCQueries.h
--- a/clients/odbc/driver/ODBCQueries.h
+++ b/clients/odbc/driver/ODBCQueries.h
@@ -302,7 +302,7 @@
 
 #define CHAR_OCTET_LENGTH(t)   
\
"cast(case when " #t ".type in 
('varchar','clob','char','json','url','xml') "   \
-"then 4 * " #t ".type_digits " 
\
+"then 4 * cast(" #t ".type_digits as bigint) " 
\
 "when " #t ".type = 'blob' then " #t ".type_digits "   
\
-"else cast(null as integer) "  
\
+"else null "   
\
"end as integer) as \"CHAR_OCTET_LENGTH\""
diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c
--- a/clients/odbc/driver/SQLTables.c
+++ b/clients/odbc/driver/SQLTables.c
@@ -222,8 +222,8 @@ MNDBTables(ODBCStmt *stmt,
}
buf[j] = 0;
/* Some ODBC applications use different 
table type names.
-* Replace those names to valid MonetDB 
table type names
-* as defined in sys.tables_types */
+* Replace some SQL synonyms to valid 
MonetDB
+* table type names as defined in 
sys.table_types */
if (strcmp("BASE TABLE", buf) == 0) {
strcpy(buf, "TABLE");
} else
diff --git a/monetdb5/modules/atoms/Tests/startswith.test 
b/monetdb5/modules/atoms/Tests/startswith.test
--- a/monetdb5/modules/atoms/Tests/startswith.test
+++ b/monetdb5/modules/atoms/Tests/startswith.test
@@ -90,4 +90,4 @@ drop table bar
 query T
 select ['Camón Romasan'] startsWith ['camu', true];
 
-false
+False
diff --git a/sql/test/sys-schema/Tests/All b/sql/test/sys-schema/Tests/All
--- a/sql/test/sys-schema/Tests/All
+++ b/sql/test/sys-schema/Tests/All
@@ -20,5 +20,3 @@ webExamplesStringFunctions
 webExamplesUrlFunctions
 
 utilities
-
-HAVE_JDBCCLIENT_JAR?ValidateSystemCatalogTables
diff --git a/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py 
b/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py
deleted file mode 100755
--- a/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import os, sys
-from subprocess import run, PIPE, CalledProcessError
-
-HOST=os.getenv('HOST')
-MAPIPORT=os.getenv('MAPIPORT')
-TSTDB=os.getenv('TSTDB')
-TSTSRCBASE=os.getenv('TSTSRCBASE')
-TSTDIR=os.getenv('TSTDIR')
-CLIENT='org.monetdb.client.JdbcClient'
-USER='monetdb'
-PASSWORD='monetdb'
-
-
-if __name__ == '__main__':
-with open(os.path.join('.monetdb'), 'w') as f:
-f.write('\n'.join(['user=monetdb', 'password=monetdb']))
-cmd = ['java', CLIENT, '-h', HOST, '-p', MAPIPORT, '-d', TSTDB, '-f', 
os.path.join(TSTSRCBASE, TSTDIR, 'Tests', 'ValidateSystemCatalogTables.sql')]
-try:
-p = run(cmd, stdout=PIPE, stderr=PIPE, check=True, encoding='utf-8')
-pout = str(p.stdout)
-if pout != "":
-print(pout)
-perr = str(p.stderr)
-if perr != "":
-print(perr)
-except CalledProcessError as e:
-raise SystemExit(e.stderr)
diff --git a/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.sql 
b/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.sql
deleted file mode 100644
--- a/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-\vsci_noheader
-\vsni_noheader
-\vsgi_noheader
-\vsi_noheader sys
-\vsi_noheader tmp
-\vdbi_noheader
-
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-12-20 Thread Sjoerd Mullender via checkin-list
Changeset: 2c1bb47d7eda for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2c1bb47d7eda
Modified Files:
monetdb5/modules/mal/txtsim.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (45 lines):

diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1074,7 +1074,7 @@ GDKinit(opt *set, int setlen, bool embed
first = false;
 
if (GDK_mem_maxsize / 16 < GDK_mmap_minsize_transient) {
-   GDK_mmap_minsize_transient = GDK_mem_maxsize / 16;
+   GDK_mmap_minsize_transient = MAX(MMAP_PAGESIZE, GDK_mem_maxsize 
/ 16);
if (GDK_mmap_minsize_persistent > GDK_mmap_minsize_transient)
GDK_mmap_minsize_persistent = 
GDK_mmap_minsize_transient;
}
@@ -1107,13 +1107,13 @@ GDKinit(opt *set, int setlen, bool embed
if (strcmp("gdk_mem_maxsize", n[i].name) == 0) {
GDK_mem_maxsize = (size_t) strtoll(n[i].value, NULL, 
10);
GDK_mem_maxsize = MAX(1 << 26, GDK_mem_maxsize);
+   if (GDK_mem_maxsize / 16 < GDK_mmap_minsize_transient)
+   GDK_mmap_minsize_transient = MAX(MMAP_PAGESIZE, 
GDK_mem_maxsize / 16);
+   if (GDK_mmap_minsize_persistent > 
GDK_mmap_minsize_transient)
+   GDK_mmap_minsize_persistent = 
GDK_mmap_minsize_transient;
} else if (strcmp("gdk_vm_maxsize", n[i].name) == 0) {
GDK_vm_maxsize = (size_t) strtoll(n[i].value, NULL, 10);
GDK_vm_maxsize = MAX(1 << 30, GDK_vm_maxsize);
-   if (GDK_vm_maxsize < GDK_mmap_minsize_persistent / 4)
-   GDK_mmap_minsize_persistent = GDK_vm_maxsize / 
4;
-   if (GDK_vm_maxsize < GDK_mmap_minsize_transient / 4)
-   GDK_mmap_minsize_transient = GDK_vm_maxsize / 4;
} else if (strcmp("gdk_mmap_minsize_persistent", n[i].name) == 
0) {
GDK_mmap_minsize_persistent = (size_t) 
strtoll(n[i].value, NULL, 10);
} else if (strcmp("gdk_mmap_minsize_transient", n[i].name) == 
0) {
@@ -2058,8 +2058,12 @@ GDKprintinfo(void)
size_t allocated = (size_t) ATOMIC_GET(_mallocedbytes_estimate);
size_t vmallocated = (size_t) ATOMIC_GET(_vm_cursize);
 
-   printf("Virtual memory allocated: %zu, of which %zu with malloc (limit: 
%zu)\n",
-  vmallocated + allocated, allocated, GDK_vm_maxsize);
+   printf("Virtual memory allocated: %zu, of which %zu with malloc\n",
+  vmallocated + allocated, allocated);
+   printf("gdk_vm_maxsize: %zu, gdk_mem_maxsize: %zu\n",
+  GDK_vm_maxsize, GDK_mem_maxsize);
+   printf("gdk_mmap_minsize_persistent %zu, gdk_mmap_minsize_transient 
%zu\n",
+  GDK_mmap_minsize_persistent, GDK_mmap_minsize_transient);
 #ifdef __linux__
int fd = open("/proc/self/statm", O_RDONLY | O_CLOEXEC);
if (fd >= 0) {
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-12-20 Thread Sjoerd Mullender via checkin-list
Changeset: 4098d0425403 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4098d0425403
Modified Files:
monetdb5/modules/mal/txtsim.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (12 lines):

diff --git a/monetdb5/modules/mal/txtsim.c b/monetdb5/modules/mal/txtsim.c
--- a/monetdb5/modules/mal/txtsim.c
+++ b/monetdb5/modules/mal/txtsim.c
@@ -887,7 +887,7 @@ minjarowinklerjoin(BAT **r1, BAT **r2, B
BUN n;
struct canditer lci, rci;
const char *lvals, *rvals, *lvars, *rvars;
-   int lwidth, rwidth, lb, ub, m = -1, *x_flags = NULL, *y_flags = NULL;
+   int lwidth, rwidth, lb = 0, ub = 0, m = -1, *x_flags = NULL, *y_flags = 
NULL;
str_item *ssl = NULL, *ssr = NULL, shortest;
str msg = MAL_SUCCEED;
const bool sliding_window_allowed = threshold > (2.01 + 
JARO_WINKLER_PREFIX_LEN * JARO_WINKLER_SCALING_FACTOR) / 3.0;
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-12-20 Thread Sjoerd Mullender via checkin-list
Changeset: 1cfa4916a274 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1cfa4916a274
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
monetdb5/modules/atoms/mtime.c
monetdb5/modules/kernel/bat5.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 805 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
@@ -3999,16 +3999,6 @@ command bat.replace(X_0:bat[:any_1], X_1
 BKCbun_inplace_force;
 Replace the tail value of one BUN that has some head value.
 bat
-reuse
-command bat.reuse(X_0:bat[:any_1], X_1:bat[:oid]):bat[:any_1] 
-BKCreuseBAT;
-Shuffle the values around to restore a dense representation of buns.
-bat
-reuseMap
-command bat.reuseMap(X_0:bat[:any_1], X_1:bat[:oid]):bat[:oid] 
-BKCreuseBATmap;
-Derive the oid mapping for reuse BAT based on list of to-be-deleted
-bat
 save
 command bat.save(X_0:bat[:any_1]):void 
 BKCsave2;
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
@@ -3424,16 +3424,6 @@ command bat.replace(X_0:bat[:any_1], X_1
 BKCbun_inplace_force;
 Replace the tail value of one BUN that has some head value.
 bat
-reuse
-command bat.reuse(X_0:bat[:any_1], X_1:bat[:oid]):bat[:any_1] 
-BKCreuseBAT;
-Shuffle the values around to restore a dense representation of buns.
-bat
-reuseMap
-command bat.reuseMap(X_0:bat[:any_1], X_1:bat[:oid]):bat[:oid] 
-BKCreuseBATmap;
-Derive the oid mapping for reuse BAT based on list of to-be-deleted
-bat
 save
 command bat.save(X_0:bat[:any_1]):void 
 BKCsave2;
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
@@ -753,10 +753,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 BKCreuseBAT(bat *ret, const bat *bid, const bat *did);
-str BKCsetName(void *r, const bat *bid, const char *const *s);
-str BKCsetPersistent(void *r, const bat *bid);
-str BKCshrinkBAT(bat *ret, const bat *bid, const bat *did);
 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);
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -203,7 +203,11 @@ main(int argc, char **argv)
passwd = passwd_allocated;
}
 
-   mid = mapi_mapi(host, port, user, passwd, "sql", dbname);
+   if (dbname != NULL && strchr(dbname, ':') != NULL) {
+   mid = mapi_mapiuri(dbname, user, passwd, "sql");
+   } else {
+   mid = mapi_mapi(host, port, user, passwd, "sql", dbname);
+   }
free(user_allocated);
user_allocated = NULL;
free(passwd_allocated);
@@ -215,6 +219,10 @@ main(int argc, char **argv)
fprintf(stderr, "failed to allocate Mapi structure\n");
exit(2);
}
+   if (mapi_error(mid)) {
+   mapi_explain(mid, stderr);
+   exit(2);
+   }
mapi_set_time_zone(mid, 0);
mapi_reconnect(mid);
if (mapi_error(mid)) {
diff --git a/clients/mapilib/parseurl.c b/clients/mapilib/parseurl.c
--- a/clients/mapilib/parseurl.c
+++ b/clients/mapilib/parseurl.c
@@ -514,7 +514,7 @@ parse_by_scheme(msettings *mp, scanner *
msetting_set_bool(mp, MP_TLS, false);
return parse_classic(mp, sc);
} else {
-   return complain(sc, "unknown scheme '%s'", scheme);
+   return complain(sc, "unknown URL scheme '%s'", scheme);
}
 }
 
diff --git a/documentation/source/build-fedora.rst 
b/documentation/source/build-fedora.rst
--- a/documentation/source/build-fedora.rst
+++ b/documentation/source/build-fedora.rst
@@ -16,7 +16,7 @@ These packages are required.
 
 | cmake# version >= 3.12
 | bison
-| gettext-devel
+| gcc
 | libxml2-devel
 | mercurial
 
diff --git a/documentation/source/build.rst b/documentation/source/build.rst
--- a/documentation/source/build.rst
+++ b/documentation/source/build.rst
@@ -6,18 +6,18 @@ Summary
 ===
 
 For cmake, you should always build the code in a separate directory, say
-"build". This directory should be outside of the source code tree. The
-results of the build are stored in this directory. The location on the
+"build".  This directory should be outside of the source code tree.  The
+results of the build are stored in this directory.  The location in the
 

MonetDB: default - Merge with Dec2023 branch.

2023-12-18 Thread Sjoerd Mullender via checkin-list
Changeset: 1407bc4f0402 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1407bc4f0402
Modified Files:
MonetDB.spec
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 3531 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -143,13 +143,6 @@ BuildRequires: python3-numpy
 %endif
 %if %{with rintegration}
 BuildRequires: pkgconfig(libR)
-%if (0%{?fedora} == 32)
-# work around a packaging bug on Fedora 32 (18 Nov 2020)
-# problem is things like:
-# file /etc/texlive/web2c/updmap.cfg conflicts between attempted installs of 
texlive-tetex-7:20190410-12.fc32.noarch and 
texlive-texlive-scripts-7:20200327-16.fc32.noarch
-# texlive-tetex is obsoleted by texlive-obsolete
-BuildRequires: texlive-obsolete
-%endif
 %endif
 # optional packages:
 # BuildRequires: pkgconfig(cmocka)  # -DWITH_CMOCKA=ON
@@ -329,6 +322,7 @@ This package contains the files needed t
 %dir %{_includedir}/monetdb
 %{_libdir}/libmapi.so
 %{_includedir}/monetdb/mapi*.h
+%{_includedir}/monetdb/msettings.h
 %{_libdir}/pkgconfig/monetdb-mapi.pc
 
 %package client-odbc
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -188,6 +188,8 @@ def main():
   sorted([r'include\monetdb\{}'.format(x) for x in filter(lambda 
x: (x.startswith('gdk') or x.startswith('monet') or x.startswith('mal') or 
x.startswith('sql') or x.startswith('rel') or x.startswith('store') or 
x.startswith('exception') or x.startswith('opt_backend')) and x.endswith('.h'), 
os.listdir(os.path.join(sys.argv[3], 'include', 'monetdb')))] +
  [r'include\monetdb\copybinary.h',
   r'include\monetdb\mapi.h',
+  r'include\monetdb\mapi_querytype.h',
+  r'include\monetdb\msettings.h',
   r'include\monetdb\matomic.h',
   r'include\monetdb\mel.h',
   r'include\monetdb\mstring.h',
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
@@ -48484,16 +48484,6 @@ pattern optimizer.inline(X_0:str, X_1:st
 OPTwrapper;
 Expand inline functions
 optimizer
-macro
-pattern optimizer.macro(X_0:str, X_1:str):void 
-OPTmacro;
-Inline the code of the target function.
-optimizer
-macro
-pattern optimizer.macro(X_0:str, X_1:str, X_2:str, X_3:str):void 
-OPTmacro;
-Inline a target function used in a specific function.
-optimizer
 matpack
 pattern optimizer.matpack():str 
 OPTwrapper;
@@ -48549,16 +48539,6 @@ pattern optimizer.optimize(X_0:str, X_1:
 QOToptimize;
 Optimize a specific operation
 optimizer
-orcam
-pattern optimizer.orcam(X_0:str, X_1:str):void 
-OPTorcam;
-Inverse macro processor for current function
-optimizer
-orcam
-pattern optimizer.orcam(X_0:str, X_1:str, X_2:str, X_3:str):void 
-OPTorcam;
-Inverse macro, find pattern and replace with a function call.
-optimizer
 postfix
 pattern optimizer.postfix():str 
 OPTwrapper;
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
@@ -36914,16 +36914,6 @@ pattern optimizer.inline(X_0:str, X_1:st
 OPTwrapper;
 Expand inline functions
 optimizer
-macro
-pattern optimizer.macro(X_0:str, X_1:str):void 
-OPTmacro;
-Inline the code of the target function.
-optimizer
-macro
-pattern optimizer.macro(X_0:str, X_1:str, X_2:str, X_3:str):void 
-OPTmacro;
-Inline a target function used in a specific function.
-optimizer
 matpack
 pattern optimizer.matpack():str 
 OPTwrapper;
@@ -36979,16 +36969,6 @@ pattern optimizer.optimize(X_0:str, X_1:
 QOToptimize;
 Optimize a specific operation
 optimizer
-orcam
-pattern optimizer.orcam(X_0:str, X_1:str):void 
-OPTorcam;
-Inverse macro processor for current function
-optimizer
-orcam
-pattern optimizer.orcam(X_0:str, X_1:str, X_2:str, X_3:str):void 
-OPTorcam;
-Inverse macro, find pattern and replace with a function call.
-optimizer
 postfix
 pattern optimizer.postfix():str 
 OPTwrapper;
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
@@ -653,6 +653,7 @@ int64_t mapi_get_querytime(MapiHdl hdl) 
 int mapi_get_querytype(MapiHdl hdl) __attribute__((__nonnull__(1)));
 int64_t mapi_get_row_count(MapiHdl hdl) __attribute__((__nonnull__(1)));
 int mapi_get_scale(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1)));
+msettings *mapi_get_settings(Mapi mid) __attribute__((__nonnull__(1)));
 int64_t mapi_get_sqloptimizertime(MapiHdl hdl) __attribute__((__nonnull__(1)));
 char *mapi_get_table(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1)));
 int mapi_get_tableid(MapiHdl hdl) __attribute__((__nonnull__(1)));
@@ -700,6 +701,7 @@ MapiMsg mapi_set_time_zone(Mapi mid, int
 MapiMsg mapi_set_timeout(Mapi mid, unsigned int 

MonetDB: default - Merge with Dec2023 branch.

2023-12-08 Thread Sjoerd Mullender via checkin-list
Changeset: e3f905d2832b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e3f905d2832b
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (221 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2545,10 +2545,10 @@ BATmode(BAT *b, bool transient)
}
 
BATiter bi = bat_iterator(b);
+   bool mustrelease = false;
+   bat bid = b->batCacheid;
 
if (transient != bi.transient) {
-   bat bid = b->batCacheid;
-
if (!transient) {
if (ATOMisdescendant(b->ttype, TYPE_ptr) ||
BATatoms[b->ttype].atomUnfix ||
@@ -2566,7 +2566,13 @@ BATmode(BAT *b, bool transient)
if (!transient) {
BBPretain(bid);
} else if (!bi.transient) {
-   BBPrelease(bid);
+   /* we need to delay the release because if there
+* is no fix and the bat is loaded, BBPrelease
+* can call BBPfree which calls BATfree which
+* may hang while waiting for the heap reference
+* that we have because of the BAT iterator to
+* come down, in other words, deadlock */
+   mustrelease = true;
}
MT_lock_set((bid));
if (!transient) {
@@ -2597,6 +2603,9 @@ BATmode(BAT *b, bool transient)
MT_lock_unset((bid));
}
bat_iterator_end();
+   /* release after bat_iterator_end because of refs to heaps */
+   if (mustrelease)
+   BBPrelease(bid);
return GDK_SUCCEED;
 }
 
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4541,8 +4541,8 @@ BBPdiskscan(const char *parent, size_t b
DIR *dirp = opendir(parent);
struct dirent *dent;
char fullname[FILENAME_MAX];
-   str dst = fullname;
-   size_t dstlen = sizeof(fullname);
+   str dst;
+   size_t dstlen;
const char *src = parent;
 
if (dirp == NULL) {
@@ -4551,14 +4551,10 @@ BBPdiskscan(const char *parent, size_t b
return true;/* nothing to do */
}
 
-   while (*src) {
-   *dst++ = *src++;
-   dstlen--;
-   }
-   if (dst > fullname && dst[-1] != DIR_SEP) {
+   dst = stpcpy(fullname, src);
+   if (dst > fullname && dst[-1] != DIR_SEP)
*dst++ = DIR_SEP;
-   dstlen--;
-   }
+   dstlen = sizeof(fullname) - (dst - fullname);
 
while ((dent = readdir(dirp)) != NULL) {
const char *p;
@@ -4569,7 +4565,7 @@ BBPdiskscan(const char *parent, size_t b
continue;   /* ignore .dot files and directories (. 
..) */
 
 #ifdef GDKLIBRARY_JSON
-   if (strcmp(dent->d_name, "jsonupgradeneed") == 0) {
+   if (strcmp(dent->d_name, "jsonupgradeneeded") == 0) {
continue; /* ignore json upgrade signal file  */
}
 #endif
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1533,35 +1533,12 @@ subcommit_list_add(int next, bat *n, BUN
 
 static int
 cleanup_and_swap(logger *lg, int *r, const log_bid *bids, lng *lids, lng *cnts,
-BAT *catalog_bid, BAT *catalog_id, BAT *dcatalog, BUN cleanup,
-uint32_t *updated, BUN maxupdated)
+BAT *catalog_bid, BAT *catalog_id, BAT *dcatalog, BUN cleanup)
 {
BAT *nbids, *noids, *ncnts, *nlids, *ndels;
BUN p, q;
int err = 0, rcnt = 0;
 
-   oid *poss = Tloc(dcatalog, 0);
-   BATloop(dcatalog, p, q) {
-   oid pos = poss[p];
-
-   if (updated && pos < maxupdated && (updated[pos / 32] & (1U << 
(pos % 32))) == 0) {
-   continue;
-   }
-   if (lids[pos] == lng_nil || lids[pos] > lg->saved_tid)
-   continue;
-
-   if (lids[pos] >= 0) {
-   lids[pos] = -1; /* mark as transient */
-   r[rcnt++] = bids[pos];
-
-   BAT *lb;
-
-   if ((lb = BATdescriptor(bids[pos])) == NULL || 
BATmode(lb, true /*transient */ ) != GDK_SUCCEED) {
-   GDKwarning("Failed to set bat(%d) transient\n", 
bids[pos]);
-   }
-   logbat_destroy(lb);
-   }
-   }
BUN ocnt = BATcount(catalog_bid);
nbids = logbat_new(TYPE_int, ocnt - cleanup, PERSISTENT);
noids = logbat_new(TYPE_int, ocnt - cleanup, PERSISTENT);
@@ -1578,6 +1555,26 @@ cleanup_and_swap(logger *lg, int *r, con
return 0;
}
 
+   oid *poss = Tloc(dcatalog, 0);
+   BATloop(dcatalog, p, q) {
+   oid pos = poss[p];
+
+   if 

MonetDB: default - Merge with Dec2023 branch.

2023-12-06 Thread Sjoerd Mullender via checkin-list
Changeset: 5cdc33404f19 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5cdc33404f19
Modified Files:
monetdb5/modules/atoms/str.c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 1876 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
@@ -3504,11 +3504,6 @@ command algebra.markjoin(X_0:bat[:any_1]
 ALGmark3join;
 Mark join with candidate lists
 algebra
-markjoin
-command algebra.markjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng) (X_6:bat[:oid], X_7:bat[:bit]) 
-ALGmarkjoin;
-Left mark join with candidate lists, produces left output and mark flag; 
-algebra
 markselect
 command algebra.markselect(X_0:bat[:oid], X_1:bat[:bit], X_2:bat[:bit], 
X_3:bit) (X_4:bat[:oid], X_5:bat[:bit]) 
 ALGmarkselect;
@@ -46804,16 +46799,6 @@ pattern inspect.optimizer_stats() (X_0:b
 OPTstatistics;
 Get optimizer use statistics, i.e. calls and total time
 io
-export
-command io.export(X_0:bat[:any_2], X_1:str):void 
-IOexport;
-Export a BAT as ASCII to a file. If the 'filepath' is not absolute, it@is put 
into the $DBPATH directory. Success of failure is indicated.
-io
-import
-command io.import(X_0:bat[:any_2], X_1:str):void 
-IOimport;
-Import a BAT from an ASCII dump. The tuples are appended to the@first 
argument. Its signature must match the dump,@else parsing errors will occur as 
an exception.
-io
 print
 pattern io.print(X_0:any_1):void 
 IOprint_val;
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
@@ -2939,11 +2939,6 @@ command algebra.markjoin(X_0:bat[:any_1]
 ALGmark3join;
 Mark join with candidate lists
 algebra
-markjoin
-command algebra.markjoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:lng) (X_6:bat[:oid], X_7:bat[:bit]) 
-ALGmarkjoin;
-Left mark join with candidate lists, produces left output and mark flag; 
-algebra
 markselect
 command algebra.markselect(X_0:bat[:oid], X_1:bat[:bit], X_2:bat[:bit], 
X_3:bit) (X_4:bat[:oid], X_5:bat[:bit]) 
 ALGmarkselect;
@@ -35254,16 +35249,6 @@ pattern inspect.optimizer_stats() (X_0:b
 OPTstatistics;
 Get optimizer use statistics, i.e. calls and total time
 io
-export
-command io.export(X_0:bat[:any_2], X_1:str):void 
-IOexport;
-Export a BAT as ASCII to a file. If the 'filepath' is not absolute, it@is put 
into the $DBPATH directory. Success of failure is indicated.
-io
-import
-command io.import(X_0:bat[:any_2], X_1:str):void 
-IOimport;
-Import a BAT from an ASCII dump. The tuples are appended to the@first 
argument. Its signature must match the dump,@else parsing errors will occur as 
an exception.
-io
 print
 pattern io.print(X_0:any_1):void 
 IOprint_val;
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
@@ -119,7 +119,6 @@ BAT *BATdense(oid hseq, oid tseq, BUN cn
 BAT *BATdescriptor(bat i);
 BAT *BATdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, bool not_in, 
BUN estimate);
 BAT *BATdiffcand(BAT *a, BAT *b);
-BAT *BATdiffcand(BAT *a, BAT *b);
 gdk_return BATextend(BAT *b, BUN newcap) 
__attribute__((__warn_unused_result__));
 void BATfakeCommit(BAT *b);
 gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, bool asc, bool nilslast, bool distinct) 
__attribute__((__warn_unused_result__));
@@ -156,7 +155,6 @@ void BAThseqbase(BAT *b, oid o);
 gdk_return BATimprints(BAT *b);
 BAT *BATintersect(BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, bool 
max_one, BUN estimate);
 BAT *BATintersectcand(BAT *a, BAT *b);
-BAT *BATintersectcand(BAT *a, BAT *b);
 gdk_return BATjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
bool nil_matches, BUN estimate) __attribute__((__warn_unused_result__));
 gdk_return BATkey(BAT *b, bool onoff);
 gdk_return BATleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
bool nil_matches, BUN estimate) __attribute__((__warn_unused_result__));
@@ -165,7 +163,6 @@ BAT *BATmaskedcands(oid hseq, BUN nr, BA
 void *BATmax(BAT *b, void *aggr);
 void *BATmax_skipnil(BAT *b, void *aggr, bit skipnil);
 BAT *BATmergecand(BAT *a, BAT *b);
-BAT *BATmergecand(BAT *a, BAT *b);
 void *BATmin(BAT *b, void *aggr);
 void *BATmin_skipnil(BAT *b, void *aggr, bit skipnil);
 gdk_return BATmode(BAT *b, bool transient);
@@ -799,7 +796,6 @@ int QLOGisset(void);
 str RMTdisconnect(void *ret, str *conn);
 BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char 
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best, bool 
from_stdin, const char *tabnam, bool escape);
 str TABLETcollect(BAT **bats, Tablet *as);
-str TABLETcollect_parts(BAT **bats, Tablet *as, BUN offset);
 str 

MonetDB: default - Merge with Dec2023 branch.

2023-12-01 Thread Lucas Pereira via checkin-list
Changeset: c9217c7d319c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c9217c7d319c
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 1318 to 300 lines):

diff --git a/ChangeLog.Dec2023 b/ChangeLog.Dec2023
--- a/ChangeLog.Dec2023
+++ b/ChangeLog.Dec2023
@@ -1,6 +1,10 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Fri Dec  1 2023 Sjoerd Mullender 
+- All binary packages are now signed with a new key with key fingerprint
+  DBCE 5625 94D7 1959 7B54  CE85 3F1A D47F 5521 A603.
+
 * Mon Oct 30 2023 Sjoerd Mullender 
 - The ranges of merge partitions are now pushed down into the low
   level GDK operations, giving them a handle to sometimes execute more
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
@@ -49750,16 +49750,6 @@ SQLpercent_rank;
 return the percentage into the total number of groups for each row
 sql
 persist_unlogged
-unsafe pattern sql.persist_unlogged() (X_0:bat[:str], X_1:bat[:int], 
X_2:bat[:lng]) 
-SQLpersist_unlogged;
-Persist deltas on append only tables in current schema
-sql
-persist_unlogged
-unsafe pattern sql.persist_unlogged(X_0:str) (X_1:bat[:str], X_2:bat[:int], 
X_3:bat[:lng]) 
-SQLpersist_unlogged;
-Persist deltas on append only tables in schema s
-sql
-persist_unlogged
 unsafe pattern sql.persist_unlogged(X_0:str, X_1:str) (X_2:bat[:str], 
X_3:bat[:int], X_4:bat[:lng]) 
 SQLpersist_unlogged;
 Persist deltas on append only table in schema s table t
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
@@ -38155,16 +38155,6 @@ SQLpercent_rank;
 return the percentage into the total number of groups for each row
 sql
 persist_unlogged
-unsafe pattern sql.persist_unlogged() (X_0:bat[:str], X_1:bat[:int], 
X_2:bat[:lng]) 
-SQLpersist_unlogged;
-Persist deltas on append only tables in current schema
-sql
-persist_unlogged
-unsafe pattern sql.persist_unlogged(X_0:str) (X_1:bat[:str], X_2:bat[:int], 
X_3:bat[:lng]) 
-SQLpersist_unlogged;
-Persist deltas on append only tables in schema s
-sql
-persist_unlogged
 unsafe pattern sql.persist_unlogged(X_0:str, X_1:str) (X_2:bat[:str], 
X_3:bat[:int], X_4:bat[:lng]) 
 SQLpersist_unlogged;
 Persist deltas on append only table in schema s table t
diff --git a/clients/odbc/ChangeLog.Dec2023 b/clients/odbc/ChangeLog.Dec2023
--- a/clients/odbc/ChangeLog.Dec2023
+++ b/clients/odbc/ChangeLog.Dec2023
@@ -1,3 +1,7 @@
 # ChangeLog file for odbc
 # This file is updated with Maddlog
 
+* Thu Nov 30 2023 Martin van Dinther 
+- Corrected the output value of column CHAR_OCTET_LENGTH of ODBC functions
+  SQLColumns() and SQLProcedureColumns().
+
diff --git a/clients/odbc/driver/ODBCQueries.h 
b/clients/odbc/driver/ODBCQueries.h
--- a/clients/odbc/driver/ODBCQueries.h
+++ b/clients/odbc/driver/ODBCQueries.h
@@ -79,6 +79,7 @@
 "when 'double' then 'DOUBLE' " 
\
 "when 'hugeint' then 'HUGEINT' "   
\
 "when 'int' then 'INTEGER' "   
\
+"when 'json' then 'JSON' " 
\
 "when 'month_interval' then "  
\
  "case " #t ".type_digits "
\
   "when 1 then 'INTERVAL YEAR' "   
\
@@ -105,7 +106,10 @@
 "when 'timestamptz' then 'TIMESTAMP' " 
\
 "when 'timetz' then 'TIME' "   
\
 "when 'tinyint' then 'TINYINT' "   
\
+"when 'url' then 'URL' "   
\
+"when 'uuid' then 'UUID' " 
\
 "when 'varchar' then 'VARCHAR' "   
\
+"when 'xml' then 'XML' "   
\
"end as \"TYPE_NAME\""
 
 #define COLUMN_SIZE(t) \
@@ -135,6 +139,7 @@
 "when 'timestamp' then 23 "\
 "when 'timestamptz' then 23 "  \
 "when 'timetz' then 12 "   \
+"when 'uuid' then 36 " \
 "else " #t ".type_digits " \
"end as \"COLUMN_SIZE\""
 
@@ -147,6 +152,7 @@
 "when 'double' then 24 "   
\

MonetDB: default - Merge with Dec2023 branch.

2023-11-30 Thread Lucas Pereira via checkin-list
Changeset: 22a8c45057b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/22a8c45057b3
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 1202 to 300 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1666,8 +1666,9 @@ BBPjson_upgrade(json_storage_conversion 
bat bid;
BAT *b;
int JSON_type = ATOMindex("json");
-   bat *upd = GDKmalloc(sizeof(bat) * ATOMIC_GET());
-   BUN nupd = 0;
+   bat nbat = (bat) ATOMIC_GET();
+   bat *upd = GDKmalloc(sizeof(bat) * (size_t) nbat);
+   int nupd = 0;
 
if (upd == NULL) {
TRC_CRITICAL(GDK, "could not create bat\n");
@@ -1677,7 +1678,7 @@ BBPjson_upgrade(json_storage_conversion 
 
BBPlock();
 
-   for (bid = 1; bid < (bat) ATOMIC_GET(); bid++) {
+   for (bid = 1; bid < nbat; bid++) {
if ((b = BBP_desc(bid)) == NULL) {
/* not a valid BAT */
continue;
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
@@ -6231,7 +6231,7 @@ sql_update_dec2023(Client c, mvc *sql, s
"  cast(sys.ifthenelse(c.\"null\", 'YES', 'NO') AS varchar(3)) 
AS IS_NULLABLE,\n"
"  cast(sys.\"sql_datatype\"(c.\"type\", c.\"type_digits\", 
c.\"type_scale\", true, true) AS varchar(1024)) AS DATA_TYPE,\n"
"  cast(sys.ifthenelse(c.\"type\" IN 
('varchar','clob','char','json','url','xml') AND c.\"type_digits\" > 0, 
c.\"type_digits\", NULL) AS int) AS CHARACTER_MAXIMUM_LENGTH,\n"
-   "  cast(sys.ifthenelse(c.\"type\" IN 
('varchar','clob','char','json','url','xml') AND c.\"type_digits\" > 0, 
c.\"type_digits\" * 4, NULL) AS int) AS CHARACTER_OCTET_LENGTH,\n"
+   "  cast(sys.ifthenelse(c.\"type\" IN 
('varchar','clob','char','json','url','xml') AND c.\"type_digits\" > 0, 4 * 
c.\"type_digits\", NULL) AS bigint) AS CHARACTER_OCTET_LENGTH,\n"
"  cast(sys.ifthenelse(c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','decimal','numeric','oid'),
 c.\"type_digits\", NULL) AS int) AS NUMERIC_PRECISION,\n"
"  cast(sys.ifthenelse(c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','oid'), 
2, sys.ifthenelse(c.\"type\" IN ('decimal','numeric'), 10, NULL)) AS int) AS 
NUMERIC_PRECISION_RADIX,\n"
"  cast(sys.ifthenelse(c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','decimal','numeric','oid'),
 c.\"type_scale\", NULL) AS int) AS NUMERIC_SCALE,\n"
@@ -6360,7 +6360,7 @@ sql_update_dec2023(Client c, mvc *sql, s
"  cast(NULL AS varchar(1)) AS UDT_NAME,\n"
"  cast(CASE f.\"type\" WHEN 1 THEN 
sys.\"sql_datatype\"(a.\"type\", a.\"type_digits\", a.\"type_scale\", true, 
true) WHEN 2 THEN NULL WHEN 5 THEN 'TABLE' WHEN 7 THEN 'TABLE' ELSE NULL END AS 
varchar(1024)) AS DATA_TYPE,\n"
"  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml') AND a.\"type_digits\" > 0, 
a.\"type_digits\", NULL) AS int) AS CHARACTER_MAXIMUM_LENGTH,\n"
-   "  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml') AND a.\"type_digits\" > 0, 
a.\"type_digits\" * 4, NULL) AS int) AS CHARACTER_OCTET_LENGTH,\n"
+   "  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml') AND a.\"type_digits\" > 0, 4 * 
a.\"type_digits\", NULL) AS bigint) AS CHARACTER_OCTET_LENGTH,\n"
"  cast(NULL AS varchar(1)) AS CHARACTER_SET_CATALOG,\n"
"  cast(NULL AS varchar(1)) AS CHARACTER_SET_SCHEMA,\n"
"  'UTF-8' AS CHARACTER_SET_NAME,\n"
@@ -6466,7 +6466,7 @@ sql_update_dec2023(Client c, mvc *sql, s
"  cast(NULL AS varchar(1)) AS TO_SQL_SPECIFIC_NAME,\n"
"  cast(sys.\"sql_datatype\"(a.\"type\", a.\"type_digits\", 
a.\"type_scale\", true, true) AS varchar(1024)) AS DATA_TYPE,\n"
"  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml') AND a.\"type_digits\" > 0, 
a.\"type_digits\", NULL) AS int) AS CHARACTER_MAXIMUM_LENGTH,\n"
-   "  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml') AND a.\"type_digits\" > 0, 
a.\"type_digits\" * 4, NULL) AS int) AS CHARACTER_OCTET_LENGTH,\n"
+   "  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml') AND a.\"type_digits\" > 0, 4 * 
a.\"type_digits\", NULL) AS bigint) AS CHARACTER_OCTET_LENGTH,\n"
"  cast(NULL AS varchar(1)) AS CHARACTER_SET_CATALOG,\n"
"  cast(NULL AS varchar(1)) AS CHARACTER_SET_SCHEMA,\n"
"  cast(sys.ifthenelse(a.\"type\" IN 
('varchar','clob','char','json','url','xml'), 'UTF-8', 

MonetDB: default - Merge with Dec2023 branch.

2023-11-30 Thread Sjoerd Mullender via checkin-list
Changeset: 124995815925 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/124995815925
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 506 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
@@ -220,6 +220,7 @@ void BBPcold(bat i);
 int BBPfix(bat b);
 unsigned BBPheader(FILE *fp, int *lineno, bat *bbpsize, lng *logno, lng 
*transid, bool allow_hge_upgrade);
 bat BBPindex(const char *nme);
+gdk_return BBPjson_upgrade(json_storage_conversion);
 void BBPkeepref(BAT *b) __attribute__((__nonnull__(1)));
 bat BBPlimit;
 void BBPlock(void);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -755,7 +755,8 @@ typedef struct {
 #define GDKLIBRARY_TAILN   061043U /* first in Jul2021: str offset heaps 
names don't take width into account */
 #define GDKLIBRARY_HASHASH 061044U /* first in Jul2021: hashash bit in 
string heaps */
 #define GDKLIBRARY_HSIZE   061045U /* first in Jan2022: heap "size" values 
*/
-#define GDKLIBRARY 061046U /* first in Sep2022 */
+#define GDKLIBRARY_JSON061046U /* first in Sep2022: json storage 
changes*/
+#define GDKLIBRARY 061047U /* first in Dec2023 */
 
 /* The batRestricted field indicates whether a BAT is readonly.
  * we have modes: BAT_WRITE  = all permitted
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -139,7 +139,7 @@ insert_string_bat(BAT *b, BATiter *ni, s
}
 
MT_lock_set(>theaplock);
-   if (HEAPgrow(>tvheap, toff + ni->vh->size, 
force) != GDK_SUCCEED) {
+   if (HEAPgrow(>tvheap, toff + ni->vhfree, 
force) != GDK_SUCCEED) {
MT_lock_unset(>theaplock);
return GDK_FAIL;
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1002,6 +1002,7 @@ BBPheader(FILE *fp, int *lineno, bat *bb
return 0;
}
if (bbpversion != GDKLIBRARY &&
+   bbpversion != GDKLIBRARY_JSON &&
bbpversion != GDKLIBRARY_HSIZE &&
bbpversion != GDKLIBRARY_HASHASH &&
bbpversion != GDKLIBRARY_TAILN &&
@@ -1474,6 +1475,244 @@ movestrbats(void)
 }
 #endif
 
+#ifdef GDKLIBRARY_JSON
+static gdk_return
+jsonupgradebat(BAT *b, json_storage_conversion fixJSONStorage)
+{
+   const char *nme = BBP_physical(b->batCacheid);
+   char *srcdir = GDKfilepath(NOFARM, BATDIR, nme, NULL);
+
+   if (srcdir == NULL) {
+   TRC_CRITICAL(GDK, "GDKfilepath failed\n");
+   return GDK_FAIL;
+   }
+
+   char *s;
+   if ((s = strrchr(srcdir, DIR_SEP)) != NULL)
+   *s = 0;
+   const char *bnme;
+   if ((bnme = strrchr(nme, DIR_SEP)) != NULL) {
+   bnme++;
+   } else {
+   bnme = nme;
+   }
+
+   long_str filename;
+   snprintf(filename, sizeof(filename), "BACKUP%c%s", DIR_SEP, bnme);
+
+   /* A json column should not normally have any index structures */
+   HASHdestroy(b);
+   IMPSdestroy(b);
+   OIDXdestroy(b);
+   PROPdestroy(b);
+   STRMPdestroy(b);
+   RTREEdestroy(b);
+
+   /* backup the current heaps */
+   if (GDKmove(b->theap->farmid, srcdir, bnme, "tail",
+   BAKDIR, bnme, "tail", false) != GDK_SUCCEED) {
+   GDKfree(srcdir);
+   TRC_CRITICAL(GDK, "cannot make backup of %s.tail\n", nme);
+   return GDK_FAIL;
+   }
+   if (GDKmove(b->theap->farmid, srcdir, bnme, "theap",
+   BAKDIR, bnme, "theap", true) != GDK_SUCCEED) {
+   GDKfree(srcdir);
+   TRC_CRITICAL(GDK, "cannot make backup of %s.theap\n", nme);
+   return GDK_FAIL;
+   }
+
+   /* load the old heaps */
+   Heap h1 = *b->theap;
+   h1.base = NULL;
+   h1.dirty = false;
+   strconcat_len(h1.filename, sizeof(h1.filename), filename, ".tail", 
NULL);
+   if (HEAPload(, filename, "tail", false) != GDK_SUCCEED) {
+   GDKfree(srcdir);
+   TRC_CRITICAL(GDK, "loading old tail heap "
+"for BAT %d failed\n", b->batCacheid);
+   return GDK_FAIL;
+   }
+
+   Heap vh1 = *b->tvheap;
+   vh1.base = NULL;
+   vh1.dirty = false;
+   strconcat_len(vh1.filename, sizeof(vh1.filename), filename, ".theap", 
NULL);
+   if (HEAPload(, filename, "theap", false) != GDK_SUCCEED) {
+   GDKfree(srcdir);
+   HEAPfree(, false);
+   TRC_CRITICAL(GDK, "loading old string heap "
+"for BAT %d failed\n", b->batCacheid);
+   return GDK_FAIL;
+   }
+
+   /* create 

MonetDB: default - Merge with Dec2023 branch.

2023-11-27 Thread Sjoerd Mullender via checkin-list
Changeset: c2c99e9ce09f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c2c99e9ce09f
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (81 lines):

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
@@ -104,17 +104,15 @@ table_func_create_result(MalBlkPtr mb, I
return q;
 }
 
-void
-relational_func_create_result_part1(mvc *sql, sql_rel **f, int *nargs)
+sql_rel *
+relational_func_create_result_part1(mvc *sql, sql_rel *r, int *nargs)
 {
-   sql_rel *r = *f;
-
if (is_topn(r->op) || is_sample(r->op))
r = r->l;
if (!is_project(r->op))
r = rel_project(sql->sa, r, rel_projections(sql, r, NULL, 1, 
1));
*nargs = list_length(r->exps);
-   *f = r;
+   return r;
 }
 
 InstrPtr
@@ -288,7 +286,7 @@ static int
backend_reset(be);
 
int nargs;
-   relational_func_create_result_part1(m, , );
+   sql_rel *nr = relational_func_create_result_part1(m, r, );
nargs += (call && call->type == st_list) ? list_length(call->op4.lval) 
: rel_ops ? list_length(rel_ops) : 0;
 
c->curprg = newFunctionArgs(putName(mod), putName(name), 
FUNCTIONsymbol, nargs);
@@ -296,11 +294,10 @@ static int
sql_error(m, 10, SQLSTATE(HY013) MAL_MALLOC_FAIL);
goto bailout;
} else if (eb_savepoint(>sa->eb)) {
-   r = NULL;
sql_error(m, 10, "%s", m->sa->eb.msg);
freeSymbol(c->curprg);
goto bailout;
-   } else if (_create_relational_function_body(m, r, call, rel_ops, 
inline_func) < 0) {
+   } else if (_create_relational_function_body(m, nr, call, rel_ops, 
inline_func) < 0) {
goto bailout;
}
*be = bebackup;
@@ -950,8 +947,7 @@ static int
 
/* create stub */
int nargs;
-   sql_rel *rel2 = rel;
-   relational_func_create_result_part1(m, , );
+   sql_rel *rel2 = relational_func_create_result_part1(m, rel, );
if (call && call->type == st_list)
nargs += list_length(call->op4.lval);
c->curprg = newFunctionArgs(putName(mod), putName(name), 
FUNCTIONsymbol, nargs);
diff --git a/sql/backends/monet5/sql_gencode.h 
b/sql/backends/monet5/sql_gencode.h
--- a/sql/backends/monet5/sql_gencode.h
+++ b/sql/backends/monet5/sql_gencode.h
@@ -36,7 +36,7 @@ extern void _exp_print(mvc *sql, sql_exp
 
 extern int constantAtom(backend *be, MalBlkPtr mb, atom *a);
 extern InstrPtr table_func_create_result(MalBlkPtr mb, InstrPtr q, sql_func 
*f, list *restypes);
-extern void relational_func_create_result_part1(mvc *sql, sql_rel **f, int 
*nargs);
+extern sql_rel *relational_func_create_result_part1(mvc *sql, sql_rel *r, int 
*nargs);
 extern InstrPtr relational_func_create_result_part2(MalBlkPtr mb, InstrPtr q, 
sql_rel *r);
 
 #endif /* _SQL2MAL_H */
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -4091,8 +4091,7 @@ stmt_func(backend *be, stmt *ops, const 
goto bailout;
 
int nargs;
-   sql_rel *r = rel;
-   relational_func_create_result_part1(be->mvc, , );
+   sql_rel *r = relational_func_create_result_part1(be->mvc, rel, );
if (ops)
nargs += list_length(ops->op4.lval);
if (f_union)
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-11-27 Thread Sjoerd Mullender via checkin-list
Changeset: b1b6a0ee5c95 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b1b6a0ee5c95
Modified Files:
MonetDB.spec
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 530 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -96,7 +96,11 @@ Source: https://www.monetdb.org/download
 # that doesn't exist and we need systemd, so instead we just require
 # the macro file that contains the definitions.
 # We need checkpolicy and selinux-policy-devel for the SELinux policy.
-BuildRequires: /usr/lib/rpm/macros.d/macros.systemd
+%if 0%{?rhel} != 7
+BuildRequires: systemd-rpm-macros
+%else
+BuildRequires: systemd
+%endif
 BuildRequires: checkpolicy
 BuildRequires: selinux-policy-devel
 BuildRequires: hardlink
@@ -220,6 +224,8 @@ accelerators.  It also has an SQL front 
 This package contains a shared library (libstream) which is needed by
 various other components.
 
+%ldconfig_scriptlets stream
+
 %files stream
 %license COPYING
 %defattr(-,root,root)
@@ -250,9 +256,35 @@ library.
 %{_includedir}/monetdb/stream_socket.h
 %{_libdir}/pkgconfig/monetdb-stream.pc
 
+%package client-lib
+Summary: MonetDB - Monet Database Management System Client Programs
+Group: Applications/Databases
+%if (0%{?fedora} >= 22)
+Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
+Recommends: MonetDB5-server%{?_isa} = %{version}-%{release}
+%endif
+
+%description client-lib
+MonetDB is a database management system that is developed from a
+main-memory perspective with use of a fully decomposed storage model,
+automatic index management, extensibility of data types and search
+accelerators.  It also has an SQL front end.
+
+This package contains libmapi.so, the main client library used by both
+mclient, msqldump and by the ODBC driver.  If you want to use MonetDB,
+you will very likely need this package.
+
+%ldconfig_scriptlets client-lib
+
+%files client-lib
+%license COPYING
+%defattr(-,root,root)
+%{_libdir}/libmapi.so.*
+
 %package client
 Summary: MonetDB - Monet Database Management System Client Programs
 Group: Applications/Databases
+Requires: %{name}-client-lib%{?_isa} = %{version}-%{release}
 %if (0%{?fedora} >= 22)
 Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
 Recommends: MonetDB5-server%{?_isa} = %{version}-%{release}
@@ -274,14 +306,13 @@ MonetDB, you will very likely need this 
 %defattr(-,root,root)
 %{_bindir}/mclient
 %{_bindir}/msqldump
-%{_libdir}/libmapi.so.*
-%doc %{_mandir}/man1/mclient.1.gz
-%doc %{_mandir}/man1/msqldump.1.gz
+%{_mandir}/man1/mclient.1*
+%{_mandir}/man1/msqldump.1*
 
 %package client-devel
 Summary: MonetDB - Monet Database Management System Client Programs
 Group: Applications/Databases
-Requires: %{name}-client%{?_isa} = %{version}-%{release}
+Requires: %{name}-client-lib%{?_isa} = %{version}-%{release}
 Requires: %{name}-stream-devel%{?_isa} = %{version}-%{release}
 
 %description client-devel
@@ -303,7 +334,7 @@ This package contains the files needed t
 %package client-odbc
 Summary: MonetDB ODBC driver
 Group: Applications/Databases
-Requires: %{name}-client%{?_isa} = %{version}-%{release}
+Requires: %{name}-client-lib%{?_isa} = %{version}-%{release}
 Requires(post): %{_bindir}/odbcinst
 Requires(postun): %{_bindir}/odbcinst
 
@@ -477,11 +508,40 @@ format.
 %{_libdir}/monetdb5/lib_fits.so
 %endif
 
+%package -n MonetDB5-libs
+Summary: MonetDB - Monet Database Main Libraries
+Group: Applications/Databases
+
+%description -n MonetDB5-libs
+MonetDB is a database management system that is developed from a
+main-memory perspective with use of a fully decomposed storage model,
+automatic index management, extensibility of data types and search
+accelerators.  It also has an SQL front end.
+
+This package contains the MonetDB server component in the form of a set
+of libraries.  You need this package if you want to use the MonetDB
+database system, either as independent program (MonetDB5-server) or as
+embedded library (%{name}-embedded).
+
+%ldconfig_scriptlets -n MonetDB5-libs
+
+%files -n MonetDB5-libs
+%defattr(-,root,root)
+%{_libdir}/libmonetdb5.so.*
+%{_libdir}/libmonetdbsql.so*
+%dir %{_libdir}/monetdb5
+%if %{with cintegration}
+%{_libdir}/monetdb5/lib_capi.so
+%endif
+%{_libdir}/monetdb5/lib_csv.so
+%{_libdir}/monetdb5/lib_generator.so
+
 %package -n MonetDB5-server
 Summary: MonetDB - Monet Database Management System
 Group: Applications/Databases
 Requires(pre): shadow-utils
 Requires: %{name}-client%{?_isa} = %{version}-%{release}
+Requires: MonetDB5-libs%{?_isa} = %{version}-%{release}
 Obsoletes: MonetDB5-server-hugeint < 11.38.0
 %if %{with hugeint}
 Provides: MonetDB5-server-hugeint%{?_isa} = %{version}-%{release}
@@ -531,15 +591,7 @@ exit 0
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5/dbfarm
 %{_bindir}/mserver5
-%{_libdir}/libmonetdb5.so.*
-%{_libdir}/libmonetdbsql.so*
-%dir 

MonetDB: default - Merge with Dec2023 branch.

2023-11-23 Thread Sjoerd Mullender via checkin-list
Changeset: 9da269284338 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9da269284338
Modified Files:
debian/control
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (55 lines):

diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -1,10 +1,10 @@
 Source: monetdb
-Section: misc
+Section: database
 Priority: optional
 Maintainer: MonetDB BV 
 Homepage: https://www.monetdb.org/
 Vcs-Browser: https://dev.monetdb.org/hg/MonetDB/
-Vcs-Hg: https://dev.monetdb.org/hg/MonetDB/
+Vcs-Hg: https://dev.monetdb.org/hg/MonetDB/ -b default
 Build-Depends: debhelper (>= 12), cmake (>= 3.12), bison,
  libbz2-dev, libcurl4-gnutls-dev, libgeos-dev (>= 3.10.0),
  libpcre3-dev, libreadline-dev, liblzma-dev, liblz4-dev (>= 1.8.0),
diff --git a/geom/ChangeLog.Dec2023 b/geom/ChangeLog.Dec2023
--- a/geom/ChangeLog.Dec2023
+++ b/geom/ChangeLog.Dec2023
@@ -1,3 +1,23 @@
 # ChangeLog file for geom
 # This file is updated with Maddlog
 
+* Thu Nov 23 2023 Sjoerd Mullender 
+- Because recent changes to the geom module require the use of geos
+  3.10, the geom module is no longer available in older versions of
+  Debian and Ubuntu.  Specifically, Debian 10 and 11 (buster and
+  bullseye) and Ubuntu 20.04 (Focal Fossa) are affected.  There is no
+  automatic upgrade available for databases that were geom enabled to
+  databases that are not, so dump + restore is the only option (if no
+  geom types are actually used).
+
+* Thu Nov 23 2023 stefanos mavros 
+- Implements Rtree index in GDK layer based on librtree. The index is
+  used in the implementation of the filter functions ST_Intersects and
+  ST_Dwithin for geometric points.
+- Improves shapefile support by replacing functions SHPattach,
+  SHPpartialimport, ahd SHPimport with SHPload.
+- Introduces functions ST_DistanceGeographic, ST_DwithinGeographic,
+  ST_IntersectsGeographic, ST_CoversGeographic, ST_Collects with geodesic
+  semantics. ST_Transform can be used to convert geodetic into geographic
+  data using libPROJ.
+
diff --git a/sql/ChangeLog.Dec2023 b/sql/ChangeLog.Dec2023
--- a/sql/ChangeLog.Dec2023
+++ b/sql/ChangeLog.Dec2023
@@ -14,6 +14,8 @@
information_schema.routines
information_schema.parameters
information_schema.sequences
+  For details see
+  
https://www.monetdb.org/documentation/user-guide/sql-catalog/information_schema/
 
   Most views have been extended (after the standard columns) with MonetDB
   specific information columns such as schema_id, table_id, column_id, etc.
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-11-23 Thread Sjoerd Mullender via checkin-list
Changeset: c1dc16898843 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c1dc16898843
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 3877 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
@@ -6044,6 +6044,93 @@ sql_update_dec2023(Client c, mvc *sql, s
output = NULL;
}
 
+   /* 52_describe.sql New function sys.sql_datatype(mtype varchar(999), 
digits integer, tscale integer, nameonly boolean, shortname boolean) */
+   sql_allocator *old_sa = sql->sa;
+   if ((sql->sa = sa_create(sql->pa)) != NULL) {
+   list *l;
+   if ((l = sa_list(sql->sa)) != NULL) {
+   sql_subtype t1, t2;
+   sql_find_subtype(, "int", 0, 0);
+   sql_find_subtype(, "boolean", 0, 0);
+   list_append(l, );
+   list_append(l, );
+   list_append(l, );
+   list_append(l, );
+   list_append(l, );
+   if (!sql_bind_func_(sql, s->base.name, "sql_datatype", 
l, F_FUNC, true)) {
+   const char *cmds =
+   "CREATE FUNCTION sys.sql_datatype(mtype 
varchar(999), digits integer, tscale integer, nameonly boolean, shortname 
boolean)\n"
+   "  RETURNS varchar(1024)\n"
+   "BEGIN\n"
+   "  RETURN\n"
+   "CASE mtype\n"
+   "WHEN 'char' THEN sys.ifthenelse(nameonly 
OR digits <= 1, sys.ifthenelse(shortname, 'CHAR', 'CHARACTER'), 
sys.ifthenelse(shortname, 'CHAR(', 'CHARACTER(') || digits || ')')\n"
+   "WHEN 'varchar' THEN 
sys.ifthenelse(nameonly OR digits = 0, sys.ifthenelse(shortname, 'VARCHAR', 
'CHARACTER VARYING'), sys.ifthenelse(shortname, 'VARCHAR(', 'CHARACTER 
VARYING(') || digits || ')')\n"
+   "WHEN 'clob' THEN sys.ifthenelse(nameonly 
OR digits = 0, sys.ifthenelse(shortname, 'CLOB', 'CHARACTER LARGE OBJECT'), 
sys.ifthenelse(shortname, 'CLOB(', 'CHARACTER LARGE OBJECT(') || digits || 
')')\n"
+   "WHEN 'blob' THEN sys.ifthenelse(nameonly 
OR digits = 0, sys.ifthenelse(shortname, 'BLOB', 'BINARY LARGE OBJECT'), 
sys.ifthenelse(shortname, 'BLOB(', 'BINARY LARGE OBJECT(') || digits || ')')\n"
+   "WHEN 'int' THEN 'INTEGER'\n"
+   "WHEN 'bigint' THEN 'BIGINT'\n"
+   "WHEN 'smallint' THEN 'SMALLINT'\n"
+   "WHEN 'tinyint' THEN 'TINYINT'\n"
+   "WHEN 'hugeint' THEN 'HUGEINT'\n"
+   "WHEN 'boolean' THEN 'BOOLEAN'\n"
+   "WHEN 'date' THEN 'DATE'\n"
+   "WHEN 'time' THEN sys.ifthenelse(nameonly 
OR digits = 1, 'TIME', 'TIME(' || (digits -1) || ')')\n"
+   "WHEN 'timestamp' THEN 
sys.ifthenelse(nameonly OR digits = 7, 'TIMESTAMP', 'TIMESTAMP(' || (digits -1) 
|| ')')\n"
+   "WHEN 'timestamptz' THEN 
sys.ifthenelse(nameonly OR digits = 7, 'TIMESTAMP WITH TIME ZONE', 'TIMESTAMP(' 
|| (digits -1) || ') WITH TIME ZONE')\n"
+   "WHEN 'timetz' THEN sys.ifthenelse(nameonly 
OR digits = 1, 'TIME WITH TIME ZONE', 'TIME(' || (digits -1) || ') WITH TIME 
ZONE')\n"
+   "WHEN 'decimal' THEN 
sys.ifthenelse(nameonly OR digits = 0, 'DECIMAL', 'DECIMAL(' || digits || 
sys.ifthenelse(tscale = 0, '', ',' || tscale) || ')')\n"
+   "WHEN 'double' THEN sys.ifthenelse(nameonly 
OR (digits = 53 AND tscale = 0), sys.ifthenelse(shortname, 'DOUBLE', 'DOUBLE 
PRECISION'), 'FLOAT(' || digits || ')')\n"
+   "WHEN 'real' THEN sys.ifthenelse(nameonly 
OR (digits = 24 AND tscale = 0), 'REAL', 'FLOAT(' || digits || ')')\n"
+   "WHEN 'day_interval' THEN 'INTERVAL DAY'\n"
+   "WHEN 'month_interval' THEN CASE digits 
WHEN 1 THEN 'INTERVAL YEAR' WHEN 2 THEN 'INTERVAL YEAR TO MONTH' WHEN 3 THEN 
'INTERVAL MONTH' END\n"
+   "WHEN 'sec_interval' THEN\n"
+   "   CASE digits\n"
+   "   WHEN 4 THEN 'INTERVAL DAY'\n"
+   "   WHEN 5 THEN 'INTERVAL DAY TO HOUR'\n"
+   "   WHEN 6 THEN 'INTERVAL DAY TO MINUTE'\n"
+   "   WHEN 7 THEN 'INTERVAL DAY TO SECOND'\n"
+   "   WHEN 8 

MonetDB: default - Merge with Dec2023 branch.

2023-11-22 Thread Sjoerd Mullender via checkin-list
Changeset: 7e498e05c870 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7e498e05c870
Modified Files:
MonetDB.spec
sql/test/rel-optimizers/Tests/All
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (51 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -490,8 +490,6 @@ Provides: MonetDB5-server-hugeint%{?_isa
 Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
 Suggests: %{name}-client%{?_isa} = %{version}-%{release}
 %endif
-# versions up to 1.0.5 don't accept the queryid field in the result set
-Conflicts: python-pymonetdb < 1.0.6
 Requires(pre): systemd
 
 %description -n MonetDB5-server
@@ -700,7 +698,7 @@ package.  You probably don't need this, 
 Summary: MonetDB - Monet Database Management System
 Group: Applications/Databases
 Requires: %{name}-client-tests = %{version}-%{release}
-Requires: python3dist(pymonetdb) >= 1.0.6
+Requires: python3dist(pymonetdb)
 BuildArch: noarch
 
 %description testing-python
diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -13,7 +13,6 @@ Build-Depends: debhelper (>= 12), cmake 
  unixodbc-dev, zlib1g-dev, r-base-dev,
  libcfitsio-dev, libssl-dev (>= 1.1.1)
 Standards-Version: 3.8.0
-X-Python-Version: >= 2.6
 
 Package: libmonetdb27
 Architecture: any
@@ -186,8 +185,7 @@ Depends: ${shlibs:Depends}, ${misc:Depen
  libmonetdb27 (= ${source:Version}),
 Recommends: monetdb5-sql (= ${source:Version})
 Suggests: monetdb-client (= ${source:Version})
-Conflicts: monetdb5-server-hugeint (<< 11.38.0),
- python-pymonetdb (<< 1.0.6)
+Conflicts: monetdb5-server-hugeint (<< 11.38.0)
 Replaces: monetdb5-server-hugeint (<< 11.38.0)
 Description: MonetDB database server version 5
  MonetDB is a database management system that is developed from a
@@ -327,7 +325,7 @@ Description: MonetDB embedded testing to
 Package: monetdb-testing-python
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}, python3,
- python3-pymonetdb (>= 1.0.6),
+ python3-pymonetdb,
  monetdb-client-testing (= ${source:Version})
 Description: MonetDB testing Python programs
  MonetDB is a database management system that is developed from a
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: default - Merge with Dec2023 branch.

2023-11-21 Thread Sjoerd Mullender via checkin-list
Changeset: 80b3e449ac79 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/80b3e449ac79
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 2126 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -817,3 +817,4 @@ e6eb06773c17035954ac5d001cfe1f09ff3425cc
 5683fd900f28d65ad7c98d1ed1efd992023a7fa4 Jun2023_15
 c5b17681b55e6ca155db28be59913699e561502a Dec2023_root
 c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_17
+c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_SP3_release
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
@@ -3784,11 +3784,6 @@ command bat.getName(X_0:bat[:any_1]):str
 BKCgetBBPname;
 Gives back the logical name of a BAT.
 bat
-getRole
-command bat.getRole(X_0:bat[:any_1]):str 
-BKCgetRole;
-Returns the rolename of the head column of a BAT.
-bat
 getSequenceBase
 command bat.getSequenceBase(X_0:bat[:any_1]):oid 
 BKCgetSequenceBase;
@@ -4039,11 +4034,6 @@ command bat.setAccess(X_0:bat[:any_1], X
 BKCsetAccess;
 Try to change the update access privileges @to this BAT. Mode:@r[ead-only] 
 - allow only read access.@a[append-only]   - allow reads and 
update.@w[riteable]  - allow all operations.@BATs are updatable by default. 
On making a BAT read-only, @all subsequent updates fail with an error 
message.@Returns the BAT itself.
 bat
-setColumn
-command bat.setColumn(X_0:bat[:any_1], X_1:str):void 
-BKCsetColumn;
-Give a logical name to the tail column of a BAT.
-bat
 setHash
 command bat.setHash(X_0:bat[:any_1]):bit 
 BKCsetHash;
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
@@ -3219,11 +3219,6 @@ command bat.getName(X_0:bat[:any_1]):str
 BKCgetBBPname;
 Gives back the logical name of a BAT.
 bat
-getRole
-command bat.getRole(X_0:bat[:any_1]):str 
-BKCgetRole;
-Returns the rolename of the head column of a BAT.
-bat
 getSequenceBase
 command bat.getSequenceBase(X_0:bat[:any_1]):oid 
 BKCgetSequenceBase;
@@ -3464,11 +3459,6 @@ command bat.setAccess(X_0:bat[:any_1], X
 BKCsetAccess;
 Try to change the update access privileges @to this BAT. Mode:@r[ead-only] 
 - allow only read access.@a[append-only]   - allow reads and 
update.@w[riteable]  - allow all operations.@BATs are updatable by default. 
On making a BAT read-only, @all subsequent updates fail with an error 
message.@Returns the BAT itself.
 bat
-setColumn
-command bat.setColumn(X_0:bat[:any_1], X_1:str):void 
-BKCsetColumn;
-Give a logical name to the tail column of a BAT.
-bat
 setHash
 command bat.setHash(X_0:bat[:any_1]):bit 
 BKCsetHash;
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
@@ -187,7 +187,6 @@ gdk_return BATreplace(BAT *b, BAT *p, BA
 gdk_return BATreplacepos(BAT *b, const oid *positions, BAT *n, bool autoincr, 
bool force) __attribute__((__warn_unused_result__));
 void BATrmprop(BAT *b, enum prop_t idx);
 void BATrmprop_nolock(BAT *b, enum prop_t idx);
-gdk_return BATroles(BAT *b, const char *tnme);
 gdk_return BATrtree(BAT *wkb, BAT *mbr);
 BAT *BATsample(BAT *b, BUN n);
 BAT *BATsample_with_seed(BAT *b, BUN n, uint64_t seed);
@@ -570,7 +569,7 @@ void *mdlopen(const char *library, int m
 const char *mercurial_revision(void) __attribute__((__const__));
 int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name, 
const char *value);
 int mo_builtin_settings(opt **Set);
-char *mo_find_option(opt *set, int setlen, const char *name);
+const char *mo_find_option(opt *set, int setlen, const char *name);
 void mo_free_options(opt *set, int setlen);
 void mo_print_options(opt *set, int setlen);
 int mo_system_config(opt **Set, int setlen);
@@ -720,7 +719,7 @@ const char *mcrypt_getHashAlgorithms(voi
 char *mcrypt_hashPassword(const char *algo, const char *password, const char 
*challenge);
 int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name, 
const char *value);
 int mo_builtin_settings(opt **Set);
-char *mo_find_option(opt *set, int setlen, const char *name);
+const char *mo_find_option(opt *set, int setlen, const char *name);
 void mo_free_options(opt *set, int setlen);
 void mo_print_options(opt *set, int setlen);
 int mo_system_config(opt **Set, int setlen);
@@ -810,7 +809,6 @@ int UTF8_strwidth(const char *restrict s
 void addMalException(MalBlkPtr mb, str msg);
 str addOptimizerPipe(Client cntxt, MalBlkPtr mb, const char *name);
 str addPipeDefinition(Client cntxt, const char *name, const char *pipe);
-void addtoMalBlkHistory(MalBlkPtr mb);
 const char *affectedRowsRef;
 const char *aggrRef;
 const char *alarmRef;
@@ -982,8 +980,6 @@ Symbol getFunctionSymbol(Module scope, I
 int getHgeConstant(MalBlkPtr mb, hge val);
 int getIntConstant(MalBlkPtr mb, int val);

MonetDB: default - Merge with Dec2023 branch.

2023-11-17 Thread Sjoerd Mullender via checkin-list
Changeset: 2ee1d8519a68 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2ee1d8519a68
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 329 to 300 lines):

diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,7 @@ Build-Depends: debhelper (>= 12), cmake 
  libxml2-dev, pkg-config,
  python3, python3-dev, python3-numpy,
  unixodbc-dev, zlib1g-dev, r-base-dev,
- libcfitsio-dev, openssl-dev (>= 1.1.1)
+ libcfitsio-dev, libssl-dev (>= 1.1.1)
 Standards-Version: 3.8.0
 X-Python-Version: >= 2.6
 
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1292,12 +1292,12 @@ BUNappendmulti(BAT *b, const void *value
(count > 1 ||
 b->tseqbase + b->batCount != ((oid *) 
values)[0]))
b->tseqbase = oid_nil;
-   if (b->tsorted && ((oid *) 
b->theap->base)[b->batCount - 1] > ((oid *) values)[0]) {
+   if (b->tsorted && !is_oid_nil(((oid *) 
b->theap->base)[b->batCount - 1]) && ((oid *) b->theap->base)[b->batCount - 1] 
> ((oid *) values)[0]) {
b->tsorted = false;
if (b->tnosorted == 0)
b->tnosorted = b->batCount;
}
-   if (b->trevsorted && ((oid *) 
b->theap->base)[b->batCount - 1] < ((oid *) values)[0]) {
+   if (b->trevsorted && !is_oid_nil(((oid *) 
values)[0]) && ((oid *) b->theap->base)[b->batCount - 1] < ((oid *) values)[0]) 
{
b->trevsorted = false;
if (b->tnorevsorted == 0)
b->tnorevsorted = b->batCount;
diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -4028,6 +4028,13 @@ bailout:
return NULL;
 }
 
+#define HANDLE_TIMEOUT \
+   do {\
+   GDKerror("%s\n", GDKexiting() ? EXITING_MSG : TIMEOUT_MSG); \
+   BBPreclaim(bn); \
+   bn = NULL;  \
+   } while (0)
+
 BAT *
 BATcalcbetween(BAT *b, BAT *lo, BAT *hi, BAT *s, BAT *slo, BAT *shi,
   bool symmetric, bool linc, bool hinc, bool nils_false, bool anti)
@@ -4064,20 +4071,50 @@ BATcalcbetween(BAT *b, BAT *lo, BAT *hi,
BATiter bi = bat_iterator(b);
BATiter loi = bat_iterator(lo);
BATiter hii = bat_iterator(hi);
-   bn = BATcalcbetween_intern(bi.base, 1,
-  bi.vh ? bi.vh->base : NULL,
-  bi.width,
-  loi.base, 1,
-  loi.vh ? loi.vh->base : NULL,
-  loi.width,
-  hii.base, 1,
-  hii.vh ? hii.vh->base : NULL,
-  hii.width,
-  bi.type,
-  , , ,
-  b->hseqbase, lo->hseqbase, hi->hseqbase,
-  symmetric, anti, linc, hinc,
-  nils_false, __func__);
+   if (b->ttype == TYPE_void || lo->ttype == TYPE_void || hi->ttype == 
TYPE_void) {
+   lng timeoffset = 0;
+   QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+   if (qry_ctx != NULL) {
+   timeoffset = (qry_ctx->starttime && 
qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0;
+   }
+   bn = COLnew(ci.seq, TYPE_bit, ci.ncand, TRANSIENT);
+   if (bn) {
+   bit *restrict dst = (bit *) Tloc(bn, 0);
+   BUN i, j, k, l;
+   BUN nils = 0;
+   TIMEOUT_LOOP_IDX(l, ci.ncand, timeoffset) {
+   i = canditer_next() - b->hseqbase;
+   j = canditer_next() - lo->hseqbase;
+   k = canditer_next() - hi->hseqbase;
+   dst[l] = BETWEEN(BUNtoid(b, i),
+BUNtoid(lo, j),
+BUNtoid(hi, k), oid);
+   nils += is_bit_nil(dst[l]);
+   }
+   BATsetcount(bn, ci.ncand);
+   bn->tsorted = ci.ncand <= 1 || nils == ci.ncand;
+   bn->trevsorted = ci.ncand <= 1 || nils == ci.ncand;
+   bn->tkey = 

MonetDB: default - Merge with Dec2023 branch.

2023-11-16 Thread Sjoerd Mullender via checkin-list
Changeset: 8bca40cd2529 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8bca40cd2529
Modified Files:
.bumpversion.cfg
MonetDB.spec
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
cmake/monetdb-versions.cmake
gdk/libbat.rc
monetdb5/tools/libmonetdb5.rc
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (129 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -816,3 +816,4 @@ 6f88424ebfd9d82c072cf21d89070e04321983da
 e6eb06773c17035954ac5d001cfe1f09ff3425cc Jun2023_13
 5683fd900f28d65ad7c98d1ed1efd992023a7fa4 Jun2023_15
 c5b17681b55e6ca155db28be59913699e561502a Dec2023_root
+c9e6096e7519636a4e840c7a0c2e27cccb7dc0fe Jun2023_17
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -867,6 +867,14 @@ fi
 %endif
 
 %changelog
+* Thu Nov 16 2023 Sjoerd Mullender  - 11.47.17-20231116
+- Rebuilt.
+
+* Thu Nov 16 2023 Sjoerd Mullender  - 11.47.17-20231116
+- gdk: Fixed a regression where after a while the write-ahead log files
+  weren't being rotated, meaning from some point onwards, the newest
+  file just kept on growing.
+
 * Thu Nov 09 2023 Sjoerd Mullender  - 11.47.15-20231109
 - Rebuilt.
 - GH#7410: SIGSEGV cause database corruption
diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake
--- a/cmake/monetdb-versions.cmake
+++ b/cmake/monetdb-versions.cmake
@@ -42,7 +42,7 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M
 # common/options and common/utils)
 set(GDK_VERSION_MAJOR "27")
 set(GDK_VERSION_MINOR "0")
-set(GDK_VERSION_PATCH "6")
+set(GDK_VERSION_PATCH "7")
 set(GDK_VERSION 
"${GDK_VERSION_MAJOR}.${GDK_VERSION_MINOR}.${GDK_VERSION_PATCH}")
 
 # version of the MAPI library (subdirectory clients/mapilib)
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+monetdb (11.47.17) unstable; urgency=low
+
+  * Rebuilt.
+
+ -- Sjoerd Mullender   Thu, 16 Nov 2023 10:48:27 +0100
+
+monetdb (11.47.17) unstable; urgency=low
+
+  * gdk: Fixed a regression where after a while the write-ahead log files
+weren't being rotated, meaning from some point onwards, the newest
+file just kept on growing.
+
+ -- Sjoerd Mullender   Thu, 16 Nov 2023 10:48:27 +0100
+
 monetdb (11.47.15) unstable; urgency=low
 
   * Rebuilt.
diff --git a/gdk/ChangeLog-Archive b/gdk/ChangeLog-Archive
--- a/gdk/ChangeLog-Archive
+++ b/gdk/ChangeLog-Archive
@@ -1,6 +1,11 @@
 # DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY
 # This file contains past ChangeLog entries
 
+* Thu Nov 16 2023 Sjoerd Mullender  - 11.47.17-20231116
+- Fixed a regression where after a while the write-ahead log files
+  weren't being rotated, meaning from some point onwards, the newest
+  file just kept on growing.
+
 * Tue Nov  7 2023 Sjoerd Mullender  - 11.47.15-20231109
 - When saving the SQL catalog during a low-level commit, we should
   only save the part of the catalog that corresponds to the part of the
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -2471,6 +2471,7 @@ do_rotate(logger *lg)
if (!LOG_DISABLED(lg) && ATOMIC_GET(>refcount) == 1) {
close_stream(cur->output_log);
cur->output_log = NULL;
+   ATOMIC_DEC(>nr_open_files);
}
}
 }
@@ -3150,6 +3151,7 @@ log_tflush(logger *lg, ulng file_id, uln
if (frange != lg->current) {
close_stream(frange->output_log);
frange->output_log = NULL;
+   ATOMIC_DEC(>nr_open_files);
}
rotation_unlock(lg);
}
diff --git a/misc/packages/deb/changelog b/misc/packages/deb/changelog
--- a/misc/packages/deb/changelog
+++ b/misc/packages/deb/changelog
@@ -1,3 +1,17 @@
+monetdb (11.47.17) unstable; urgency=low
+
+  * Rebuilt.
+
+ -- Sjoerd Mullender   Thu, 16 Nov 2023 10:48:27 +0100
+
+monetdb (11.47.17) unstable; urgency=low
+
+  * gdk: Fixed a regression where after a while the write-ahead log files
+weren't being rotated, meaning from some point onwards, the newest
+file just kept on growing.
+
+ -- Sjoerd Mullender   Thu, 16 Nov 2023 10:48:27 +0100
+
 monetdb (11.47.15) unstable; urgency=low
 
   * Rebuilt.
diff --git a/misc/packages/rpm/changelog b/misc/packages/rpm/changelog
--- a/misc/packages/rpm/changelog
+++ b/misc/packages/rpm/changelog
@@ -1,3 +1,11 @@
+* Thu Nov 16 2023 Sjoerd Mullender  - 11.47.17-20231116
+- Rebuilt.
+
+* Thu Nov 16 2023 Sjoerd Mullender  - 11.47.17-20231116
+- gdk: Fixed a regression where after a while the write-ahead log files
+  weren't being rotated, meaning from some point onwards, the newest
+  file just kept on growing.
+
 * Thu Nov 09 2023 Sjoerd Mullender  - 11.47.15-20231109
 - Rebuilt.
 - GH#7410: SIGSEGV cause database corruption

MonetDB: default - Merge with Dec2023 branch.

2023-11-15 Thread Martin van Dinther via checkin-list
Changeset: c0bab5f1f1fe for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c0bab5f1f1fe
Branch: default
Log Message:

Merge with Dec2023 branch.


diffs (truncated from 648 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -3052,10 +3052,8 @@ check_rotation_conditions(logger *lg)
const lng p = (lng) getfilepos(getFile(lg->current->output_log));
 
const lng log_large = (ATOMIC_GET() & FORCEMITOMASK) ? 
LOG_MINI : LOG_LARGE;
-   bool res = (lg->saved_id + 1 >= lg->id && 
ATOMIC_GET(>current->drops) > 10) || (p > log_large);
-   if (res)
-   return (ATOMIC_GET(>nr_open_files) < 8);
-   return res;
+   bool res = (p > log_large) || (lg->saved_id + 1 >= lg->id && 
ATOMIC_GET(>current->drops) > 10);
+   return res && (ATOMIC_GET(>nr_open_files) < 8);
 }
 
 gdk_return
@@ -3389,8 +3387,12 @@ log_printinfo(logger *lg)
printf("number of catalog entries "BUNFMT", of which "BUNFMT" 
deleted\n",
   lg->catalog_bid->batCount, lg->dcatalog->batCount);
int npend = 0;
-   for (logged_range *p = lg->pending; p; p = p->next)
+   for (logged_range *p = lg->pending; p; p = p->next) {
+   char buf[32];
+   if (p->output_log == NULL ||
+   snprintf(buf, sizeof(buf), ", file size %"PRIu64, 
(uint64_t) getfilepos(getFile(lg->current->output_log))) >= (int) sizeof(buf))
+   buf[0] = 0;
+   printf("pending range "ULLFMT": drops %"PRIu64", last_ts 
%"PRIu64", flushed_ts %"PRIu64", refcount %"PRIu64"%s%s\n", p->id, (uint64_t) 
ATOMIC_GET(>drops), (uint64_t) ATOMIC_GET(>last_ts), (uint64_t) 
ATOMIC_GET(>flushed_ts), (uint64_t) ATOMIC_GET(>refcount), buf, p == 
lg->current ? " (current)" : "");
npend++;
-   if (npend > 1)
-   printf("number of pending ranges %d\n", npend);
+   }
 }
diff --git a/sql/ChangeLog.Dec2023 b/sql/ChangeLog.Dec2023
--- a/sql/ChangeLog.Dec2023
+++ b/sql/ChangeLog.Dec2023
@@ -12,6 +12,7 @@
information_schema.table_constraints
information_schema.referential_constraints
information_schema.routines
+   information_schema.parameters
information_schema.sequences
 
   Most views have been extended (after the standard columns) with MonetDB
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -7392,6 +7392,7 @@ void
 store_printinfo(sqlstore *store)
 {
MT_lock_set(>commit);
+   printf("SQL store oldest pending "ULLFMT"\n", store->oldest_pending);
log_printinfo(store->logger);
MT_lock_unset(>commit);
 }
diff --git a/sql/test/information-schema/Tests/All 
b/sql/test/information-schema/Tests/All
--- a/sql/test/information-schema/Tests/All
+++ b/sql/test/information-schema/Tests/All
@@ -3,4 +3,9 @@ schemata
 tables
 views
 columns
-
+check_constraints
+table_constraints
+referential_constraints
+routines
+parameters
+sequences
diff --git a/sql/test/information-schema/Tests/character_sets.test 
b/sql/test/information-schema/Tests/character_sets.test
--- a/sql/test/information-schema/Tests/character_sets.test
+++ b/sql/test/information-schema/Tests/character_sets.test
@@ -20,7 +20,8 @@ NULL
 NULL
 
 query ITTT rowsort
-SELECT COUNT(*) AS duplicates, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, 
CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.CHARACTER_SETS
+SELECT COUNT(*) AS duplicates, CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, 
CHARACTER_SET_NAME
+ FROM INFORMATION_SCHEMA.CHARACTER_SETS
  GROUP BY CHARACTER_SET_CATALOG, CHARACTER_SET_SCHEMA, CHARACTER_SET_NAME
  HAVING COUNT(*) > 1
 
diff --git a/sql/test/information-schema/Tests/check_constraints.test 
b/sql/test/information-schema/Tests/check_constraints.test
new file mode 100644
--- /dev/null
+++ b/sql/test/information-schema/Tests/check_constraints.test
@@ -0,0 +1,17 @@
+query  rowsort
+SELECT
+  CONSTRAINT_CATALOG,
+  CONSTRAINT_SCHEMA,
+  CONSTRAINT_NAME,
+  CHECK_CLAUSE
+FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
+WHERE CONSTRAINT_SCHEMA = '' OR CONSTRAINT_NAME = ''
+
+
+query ITTT rowsort
+SELECT COUNT(*) AS duplicates, CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, 
CONSTRAINT_NAME
+ FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
+ GROUP BY CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, CONSTRAINT_NAME
+ HAVING COUNT(*) > 1
+
+
diff --git a/sql/test/information-schema/Tests/columns.test 
b/sql/test/information-schema/Tests/columns.test
--- a/sql/test/information-schema/Tests/columns.test
+++ b/sql/test/information-schema/Tests/columns.test
@@ -104,7 +104,7 @@ NULL
 NULL
 NULL
 
-query ITTTIITITTTIIIT rowsort
+query ITTTIITITTTIIIIT rowsort
 SELECT
   TABLE_CATALOG,
   TABLE_SCHEMA,
@@ -159,6 +159,7 @@ SELECT
   schema_id,
   table_id,
   column_id,
+  sequence_id,
   is_system,
   comments
 FROM INFORMATION_SCHEMA.COLUMNS
@@ -166,7 

  1   2   >