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 -- [email protected]
To unsubscribe send an email to [email protected]