Changeset: 874c587e8379 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/874c587e8379 Modified Files: gdk/gdk_bbp.c gdk/gdk_private.h Branch: multi-cachelock Log Message:
Merge with default. diffs (truncated from 3845 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 @@ -222,7 +222,6 @@ int BBPrelease(bat b); int BBPrename(BAT *b, const char *nme); int BBPretain(bat b); gdk_return BBPsave(BAT *b); -void BBPshare(bat b); gdk_return BBPsync(int cnt, bat *restrict subcommit, BUN *restrict sizes, lng logno, lng transid); void BBPtmlock(void); void BBPtmunlock(void); @@ -412,8 +411,8 @@ void *THRgetdata(int); int THRgettid(void); int THRhighwater(void); void THRsetdata(int, void *); -gdk_return TMsubcommit(BAT *bl); -gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid); +gdk_return TMsubcommit(BAT *bl) __attribute__((__warn_unused_result__)); +gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid) __attribute__((__warn_unused_result__)); void VALclear(ValPtr v); int VALcmp(const ValRecord *p, const ValRecord *q); void *VALconvert(int typ, ValPtr t); @@ -1070,16 +1069,12 @@ const char *malRef; void mal_atom_reset(void); ClientRec *mal_clients; MT_Lock mal_contextLock; -MT_Lock mal_copyLock; -MT_Lock mal_delayLock; _Noreturn void mal_exit(int status); int mal_init(char *modules[], bool embedded, const char *initpasswd); void mal_instruction_reset(void); void mal_module(const char *name, mel_atom *atoms, mel_func *funcs); void mal_module2(const char *name, mel_atom *atoms, mel_func *funcs, mel_init initfunc, const char *code); -MT_Lock mal_profileLock; str mal_quote(const char *msg, size_t size); -MT_Lock mal_remoteLock; void mal_reset(void); int mal_startup(void); void mal_unquote(char *msg); diff --git a/clients/mapiclient/dotmonetdb.c b/clients/mapiclient/dotmonetdb.c --- a/clients/mapiclient/dotmonetdb.c +++ b/clients/mapiclient/dotmonetdb.c @@ -117,7 +117,7 @@ parse_dotmonetdb(DotMonetdb *dotfile) } else if (strcmp(buf, "database") == 0) { dotfile->dbname = strdup(q); q = NULL; - } else if (strcmp(buf, "host") == 0) { + } else if (strcmp(buf, "host") == 0) { dotfile->host = strdup(q); q = NULL; } else if (strcmp(buf, "language") == 0) { @@ -146,7 +146,7 @@ parse_dotmonetdb(DotMonetdb *dotfile) } else if (strcmp(buf, "width") == 0) { dotfile->pagewidth = atoi(q); q = NULL; - } else if (strcmp(buf, "port") == 0) { + } else if (strcmp(buf, "port") == 0) { dotfile->port = atoi(q); q = NULL; } diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3256,14 +3256,14 @@ main(int argc, char **argv) /* parse config file first, command line options override */ parse_dotmonetdb(&dotfile); - user = dotfile.user; - passwd = dotfile.passwd; + user = dotfile.user; + passwd = dotfile.passwd; dbname = dotfile.dbname; - language = dotfile.language; + language = dotfile.language; host = dotfile.host; save_history = dotfile.save_history; - output = dotfile.output; - pagewidth = dotfile.pagewidth; + output = dotfile.output; + pagewidth = dotfile.pagewidth; port = dotfile.port; pagewidthset = pagewidth != 0; if (language) { diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -106,9 +106,9 @@ main(int argc, char **argv) #endif parse_dotmonetdb(&dotfile); - user = dotfile.user; - passwd = dotfile.passwd; - dbname = dotfile.dbname; + user = dotfile.user; + passwd = dotfile.passwd; + dbname = dotfile.dbname; host = dotfile.host; port = dotfile.port; diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake --- a/cmake/monetdb-toolchain.cmake +++ b/cmake/monetdb-toolchain.cmake @@ -57,7 +57,16 @@ function(monetdb_default_compiler_option add_option_if_available("-Wundef") add_option_if_available("-Wformat=2") add_option_if_available("-Wformat-overflow=1") - #add_option_if_available("-Wno-format-truncation") + if(${CMAKE_C_COMPILER_ID} MATCHES "^GNU$") + if(${CMAKE_C_COMPILER_VERSION} VERSION_LESS "9.5.0") + # on Ubuntu 20.04 with gcc 9.4.0 when building a Release + # version we get a warning (hence error) about possible + # buffer overflow in a call to snprintf, this option avoids + # that; I have no idea which version of gcc is safe, so the + # test may have to be refined + add_option_if_available("-Wno-format-truncation") + endif() + endif() add_option_if_available("-Wno-format-nonliteral") #add_option_if_available("-Wformat-signedness") -- numpy messes this up add_option_if_available("-Wno-cast-function-type") diff --git a/ctest/monetdb5/mal/test_malEmbeddedBoot.c b/ctest/monetdb5/mal/test_malEmbeddedBoot.c --- a/ctest/monetdb5/mal/test_malEmbeddedBoot.c +++ b/ctest/monetdb5/mal/test_malEmbeddedBoot.c @@ -19,9 +19,9 @@ main(void) gdk_res = GDKinit(NULL, 0, true); if (gdk_res != GDK_SUCCEED) { msg = createException(MAL, "embedded.monetdb_startup", "GDKinit() failed"); - return 1; + return 1; } if ((msg = malEmbeddedBoot(0, 0, 0, 0, false)) != MAL_SUCCEED) - return 1; + return 1; return 0; } diff --git a/ctest/tools/monetdbe/cmocka_test.c b/ctest/tools/monetdbe/cmocka_test.c --- a/ctest/tools/monetdbe/cmocka_test.c +++ b/ctest/tools/monetdbe/cmocka_test.c @@ -132,7 +132,7 @@ int main(void) { const struct CMUnitTest tests[] = { - cmocka_unit_test(create_table_test), + cmocka_unit_test(create_table_test), cmocka_unit_test(populate_table_test), cmocka_unit_test(query_table_test), cmocka_unit_test(query_table_test2), diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2069,8 +2069,10 @@ BUNtoid(BAT *b, BUN p) /* * @+ Transaction Management */ -gdk_export gdk_return TMsubcommit(BAT *bl); -gdk_export gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid); +gdk_export gdk_return TMsubcommit(BAT *bl) + __attribute__((__warn_unused_result__)); +gdk_export gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno, lng transid) + __attribute__((__warn_unused_result__)); /* * @- Delta Management diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -3605,8 +3605,9 @@ BATmin_skipnil(BAT *b, void *aggr, bit s res = BUNtail(bi, bi.minpos); } else { oid pos; - BAT *pb = NULL; + BAT *pb = BATdescriptor(VIEWtparent(b)); Heap *oidxh = NULL; + bool usepoidx = false; if (BATcheckorderidx(b)) { MT_lock_set(&b->batIdxLock); @@ -3616,8 +3617,7 @@ BATmin_skipnil(BAT *b, void *aggr, bit s MT_lock_unset(&b->batIdxLock); } if (oidxh == NULL && - VIEWtparent(b) && - (pb = BBP_cache(VIEWtparent(b))) != NULL && + pb != NULL && BATcheckorderidx(pb)) { /* no lock on b needed since it's a view */ MT_lock_set(&pb->batIdxLock); @@ -3627,6 +3627,7 @@ BATmin_skipnil(BAT *b, void *aggr, bit s pb->hseqbase == b->hseqbase && (oidxh = pb->torderidx) != NULL) { HEAPincref(oidxh); + usepoidx = true; } MT_lock_unset(&pb->batIdxLock); MT_lock_unset(&pb->theaplock); @@ -3635,7 +3636,7 @@ BATmin_skipnil(BAT *b, void *aggr, bit s const oid *ords = (const oid *) oidxh->base + ORDERIDXOFF; BUN r; if (!bi.nonil) { - MT_thread_setalgorithm(pb ? "binsearch on parent oidx" : "binsearch on oidx"); + MT_thread_setalgorithm(usepoidx ? "binsearch on parent oidx" : "binsearch on oidx"); r = binsearch(ords, 0, bi.type, bi.base, bi.vh ? bi.vh->base : NULL, bi.width, 0, bi.count, @@ -3656,17 +3657,15 @@ BATmin_skipnil(BAT *b, void *aggr, bit s /* no non-nil values */ pos = oid_nil; } else { - MT_thread_setalgorithm(pb ? "using parent oidx" : "using oidx"); + MT_thread_setalgorithm(usepoidx ? "using parent oidx" : "using oidx"); pos = ords[r]; } HEAPdecref(oidxh, false); } else { Imprints *imprints = NULL; - if ((VIEWtparent(b) == 0 || - bi.count == BATcount(BBP_cache(VIEWtparent(b)))) && + if ((pb == NULL || bi.count == BATcount(pb)) && BATcheckimprints(b)) { - if (VIEWtparent(b)) { - BAT *pb = BBP_cache(VIEWtparent(b)); + if (pb != NULL) { MT_lock_set(&pb->batIdxLock); imprints = pb->timprints; if (imprints != NULL) @@ -3712,10 +3711,8 @@ BATmin_skipnil(BAT *b, void *aggr, bit s MT_lock_set(&b->theaplock); if (bi.count == BATcount(b) && bi.h == b->theap) b->tminpos = bi.minpos; - bat pbid = VIEWtparent(b); MT_lock_unset(&b->theaplock); - if (pbid) { - BAT *pb = BBP_cache(pbid); + if (pb) { MT_lock_set(&pb->theaplock); if (bi.count == BATcount(pb) && bi.h == pb->theap) @@ -3723,6 +3720,8 @@ BATmin_skipnil(BAT *b, void *aggr, bit s MT_lock_unset(&pb->theaplock); } } + if (pb) + BBPunfix(pb->batCacheid); } if (aggr == NULL) { s = ATOMlen(bi.type, res); @@ -3756,24 +3755,26 @@ BATmax_skipnil(BAT *b, void *aggr, bit s { const void *res = NULL; size_t s; - BATiter bi; lng t0 = 0; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); if (!ATOMlinear(b->ttype)) { + /* there is no such thing as a largest value if you + * can't compare values */ GDKerror("non-linear type"); return NULL; } - bi = bat_iterator(b); + BATiter bi = bat_iterator(b); if (bi.count == 0) { res = ATOMnilptr(bi.type); } else if (bi.maxpos != BUN_NONE) { res = BUNtail(bi, bi.maxpos); } else { oid pos; - BAT *pb = NULL; + BAT *pb = BATdescriptor(VIEWtparent(b)); Heap *oidxh = NULL; + bool usepoidx = false; if (BATcheckorderidx(b)) { MT_lock_set(&b->batIdxLock); @@ -3783,8 +3784,7 @@ BATmax_skipnil(BAT *b, void *aggr, bit s MT_lock_unset(&b->batIdxLock); } if (oidxh == NULL && - VIEWtparent(b) && - (pb = BBP_cache(VIEWtparent(b))) != NULL && + pb != NULL && BATcheckorderidx(pb)) { /* no lock on b needed since it's a view */ MT_lock_set(&pb->batIdxLock); @@ -3794,6 +3794,7 @@ BATmax_skipnil(BAT *b, void *aggr, bit s pb->hseqbase == b->hseqbase && (oidxh = pb->torderidx) != NULL) { HEAPincref(oidxh); + usepoidx = true; } MT_lock_unset(&pb->batIdxLock); MT_lock_unset(&pb->theaplock); @@ -3801,7 +3802,7 @@ BATmax_skipnil(BAT *b, void *aggr, bit s if (oidxh != NULL) { const oid *ords = (const oid *) oidxh->base + ORDERIDXOFF; - MT_thread_setalgorithm(pb ? "using parent oidx" : "using oids"); + MT_thread_setalgorithm(usepoidx ? "using parent oidx" : "using oids"); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org