MonetDB: default - Merge with Dec2023 branch.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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.
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...
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.
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.
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.
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.
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.
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.
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...
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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...
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.
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...
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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