Changeset: 1e72be5ac502 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1e72be5ac502 Modified Files: clients/Tests/exports.stable.out gdk/gdk.h gdk/gdk_atomic.h gdk/gdk_bbp.c gdk/gdk_system.h gdk/gdk_utils.c monetdb5/mal/mal_profiler.c monetdb5/mal/mal_recycle.c monetdb5/mal/mal_resource.c sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out Branch: default Log Message:
Merger diffs (truncated from 757 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 @@ -212,9 +212,9 @@ BAT *BATundo(BAT *b); BAT *BATuselect(BAT *b, const void *tl, const void *th); BAT *BATuselect_(BAT *b, const void *tl, const void *th, bit li, bit hi); BBPrec *BBP[N_BBPINIT]; -int BBP_curstamp; void BBPclear(bat bid); void BBPcold(bat b); +int BBPcurstamp(void); int BBPdecref(bat b, int logical); BAT *BBPdescriptor(bat b); int BBPdir(int cnt, bat *subcommit); diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1892,7 +1892,7 @@ gdk_export BBPrec *BBP[N_BBPINIT]; /* macros that nicely check parameters */ #define BBPcacheid(b) ((b)->batCacheid) #define BBPstatus(i) (BBPcheck((i),"BBPstatus")?BBP_status(i):-1) -#define BBPcurstamp() BBP_curstamp +gdk_export int BBPcurstamp(void); #define BBPrefs(i) (BBPcheck((i),"BBPrefs")?BBP_refs(i):-1) #define BBPcache(i) (BBPcheck((i),"BBPcache")?BBP_cache(i):(BAT*) NULL) /* we use ABS(i) instead of -(i) here because of a bug in gcc 4.8.2 @@ -1923,7 +1923,6 @@ gdk_export void BBPunlock(const char *s) gdk_export str BBPlogical(bat b, str buf); gdk_export str BBPphysical(bat b, str buf); -gdk_export int BBP_curstamp; gdk_export BAT *BBPquickdesc(bat b, int delaccess); /* diff --git a/gdk/gdk_atomic.h b/gdk/gdk_atomic.h --- a/gdk/gdk_atomic.h +++ b/gdk/gdk_atomic.h @@ -59,8 +59,8 @@ #define ATOMIC_SET(var, val, lck, fcn) AO_store_full(&var, (val)) #define ATOMIC_ADD(var, val, lck, fcn) AO_fetch_and_add(&var, (val)) #define ATOMIC_SUB(var, val, lck, fcn) AO_fetch_and_add(&var, -(val)) -#define ATOMIC_INC(var, lck, fcn) AO_fetch_and_add1(&var) -#define ATOMIC_DEC(var, lck, fcn) AO_fetch_and_sub1(&var) +#define ATOMIC_INC(var, lck, fcn) (AO_fetch_and_add1(&var) + 1) +#define ATOMIC_DEC(var, lck, fcn) (AO_fetch_and_sub1(&var) - 1) #define ATOMIC_INIT(lck, fcn) ((void) 0) diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -161,7 +161,10 @@ BBP_delete(bat i) /* * other globals */ -int BBP_curstamp = 0; /* unique stamp for creation of a bat */ +#ifdef ATOMIC_LOCK +static MT_Lock BBP_curstampLock MT_LOCK_INITIALIZER("BBP_curstampLock"); +#endif +static volatile ATOMIC_TYPE BBP_curstamp = 0; /* unique stamp for creation of a bat */ MT_Id BBP_notrim = ~((MT_Id) 0); /* avoids BBPtrim when we really do not want it */ int BBP_dirty = 0; /* BBP structures modified? */ int BBPin = 0; /* bats loaded statistic */ @@ -1612,6 +1615,12 @@ BBPgetsubdir(str s, bat i) *s = 0; } +int +BBPcurstamp(void) +{ + return ATOMIC_GET(BBP_curstamp, BBP_curstampLock, "BBPcurstamp") & 0x7fffffff; +} + bat BBPinsert(BATstore *bs) { @@ -1673,11 +1682,9 @@ BBPinsert(BATstore *bs) /* fill in basic BBP fields for the new bat */ - if (++BBP_curstamp < 0) - BBP_curstamp = 0; + bs->S.stamp = ATOMIC_INC(BBP_curstamp, BBP_curstampLock, "BBPinsert") & 0x7fffffff; bs->B.batCacheid = i; bs->BM.batCacheid = -i; - bs->S.stamp = BBP_curstamp; bs->S.tid = MT_getpid(); BBP_status_set(i, BBPDELETING, "BBPentry"); diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h --- a/gdk/gdk_system.h +++ b/gdk/gdk_system.h @@ -219,17 +219,17 @@ gdk_export ATOMIC_FLAG volatile GDKlockl gdk_export ATOMIC_TYPE volatile GDKlockcnt; gdk_export ATOMIC_TYPE volatile GDKlockcontentioncnt; gdk_export ATOMIC_TYPE volatile GDKlocksleepcnt; -#define _DBG_LOCK_COUNT_0(l, n) ATOMIC_INC(GDKlockcnt, dummy, n) +#define _DBG_LOCK_COUNT_0(l, n) (void) ATOMIC_INC(GDKlockcnt, dummy, n) #define _DBG_LOCK_LOCKER(l, n) ((l)->locker = (n)) #define _DBG_LOCK_CONTENTION(l, n) \ do { \ TEMDEBUG fprintf(stderr, "#lock %s contention in %s\n", (l)->name, n); \ - ATOMIC_INC(GDKlockcontentioncnt, dummy, n); \ + (void) ATOMIC_INC(GDKlockcontentioncnt, dummy, n); \ } while (0) -#define _DBG_LOCK_SLEEP(l, n) \ - do { \ - if (_spincnt == 1024) \ - ATOMIC_INC(GDKlocksleepcnt, dummy, n); \ +#define _DBG_LOCK_SLEEP(l, n) \ + do { \ + if (_spincnt == 1024) \ + (void) ATOMIC_INC(GDKlocksleepcnt, dummy, n); \ } while (0) #define _DBG_LOCK_COUNT_1(l) \ do { \ diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -468,7 +468,7 @@ GDKvm_cursize(void) \ ATOMIC_ADD(GDK_mallocedbytes_estimate, _memdelta, mbyteslock, "heapinc"); \ GDKmallidx(_idx, _memdelta); \ - ATOMIC_INC(GDK_nmallocs[_idx], mbyteslock, "heapinc"); \ + (void) ATOMIC_INC(GDK_nmallocs[_idx], mbyteslock, "heapinc"); \ } while (0) #define heapdec(memdelta) \ do { \ @@ -477,7 +477,7 @@ GDKvm_cursize(void) \ ATOMIC_SUB(GDK_mallocedbytes_estimate, _memdelta, mbyteslock, "heapdec"); \ GDKmallidx(_idx, _memdelta); \ - ATOMIC_DEC(GDK_nmallocs[_idx], mbyteslock, "heapdec"); \ + (void) ATOMIC_DEC(GDK_nmallocs[_idx], mbyteslock, "heapdec"); \ } while (0) #else #define heapinc(_memdelta) \ @@ -493,7 +493,7 @@ GDKvm_cursize(void) int _idx; \ \ GDKmallidx(_idx, _vmdelta); \ - ATOMIC_INC(GDK_vm_nallocs[_idx], mbyteslock, fcn); \ + (void) ATOMIC_INC(GDK_vm_nallocs[_idx], mbyteslock, fcn); \ ATOMIC_ADD(GDK_vm_cursize, _vmdelta, mbyteslock, fcn); \ } while (0) #define memdec(vmdelta, fcn) \ @@ -502,7 +502,7 @@ GDKvm_cursize(void) int _idx; \ \ GDKmallidx(_idx, _vmdelta); \ - ATOMIC_DEC(GDK_vm_nallocs[_idx], mbyteslock, fcn); \ + (void) ATOMIC_DEC(GDK_vm_nallocs[_idx], mbyteslock, fcn); \ ATOMIC_SUB(GDK_vm_cursize, _vmdelta, mbyteslock, fcn); \ } while (0) #else 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 @@ -1520,7 +1520,7 @@ static void profilerHeartbeat(void *dumm return; } } - for (t = ATOMIC_GET(hbdelay, hbLock, "profilerHeatbeatEvent"); t > 0; t -= 50) { + for (t = (int) ATOMIC_GET(hbdelay, hbLock, "profilerHeatbeatEvent"); t > 0; t -= 50) { MT_sleep_ms(t > 50 ? 50 : t); if (!ATOMIC_GET(hbrunning, hbLock, "profilerHeartbeat")) return; diff --git a/monetdb5/mal/mal_recycle.c b/monetdb5/mal/mal_recycle.c --- a/monetdb5/mal/mal_recycle.c +++ b/monetdb5/mal/mal_recycle.c @@ -834,7 +834,7 @@ RECYCLEentry(Client cntxt, MalBlkPtr mb, { int i=0; - ATOMIC_INC(statements, statementsLock, "RECYCLEentry"); + (void) ATOMIC_INC(statements, statementsLock, "RECYCLEentry"); if ( !RECYCLEinterest(p) ) /* don't scan RecyclerPool for non-monitored instructions */ return 0; if ( recycleBlk == NULL ){ diff --git a/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c --- a/monetdb5/mal/mal_resource.c +++ b/monetdb5/mal/mal_resource.c @@ -204,7 +204,7 @@ MALresourceFairness(lng usec) if ( clk > DELAYUNIT ) { PARDEBUG mnstr_printf(GDKstdout, "#delay initial "LLFMT"n", clk); - ATOMIC_DEC(running, runningLock, "MALresourceFairness"); + (void) ATOMIC_DEC(running, runningLock, "MALresourceFairness"); /* always keep one running to avoid all waiting */ while (clk > 0 && running >= 2 && delayed < MAX_DELAYS) { /* speed up wake up when we have memory */ @@ -222,7 +222,7 @@ MALresourceFairness(lng usec) } else break; clk -= DELAYUNIT; } - ATOMIC_INC(running, runningLock, "MALresourceFairness"); + (void) ATOMIC_INC(running, runningLock, "MALresourceFairness"); } } diff --git a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out --- a/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out +++ b/sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out @@ -20,275 +20,9 @@ stdout of test 'upgrade` in directory 's Ready. -Running database upgrade commands: -set schema "sys"; -drop procedure sys.resetHistory; -drop procedure sys.keepCall; -drop procedure sys.keepQuery; -update sys._tables set system = false where name in ('callhistory','queryhistory','querylog') and schema_id = (select id from sys.schemas where name = 'sys'); -drop view sys.queryLog; -drop table sys.callHistory; -drop table sys.queryHistory; -create function sys.querylog_catalog() -returns table( - id oid, - owner string, - defined timestamp, - query string, - pipe string, - mal int, -- size of MAL plan - optimize bigint -- time in usec -) -external name sql.querylog_catalog; - -create function sys.querylog_calls() -returns table( - id oid, -- references query plan - "start" timestamp, -- time the statement was started - "stop" timestamp, -- time the statement was completely finished - arguments string, -- actual call structure - tuples wrd, -- number of tuples in the result set - run bigint, -- time spent (in usec) until the result export - ship bigint, -- time spent (in usec) to ship the result set - cpu int, -- average cpu load percentage during execution - io int, -- percentage time waiting for IO to finish - space bigint -- total storage size of intermediates created (in MB) -) -external name sql.querylog_calls; - -create view sys.querylog_catalog as select * from sys.querylog_catalog(); -create view sys.querylog_calls as select * from sys.querylog_calls(); -create view sys.querylog_history as -select qd.*, ql."start",ql."stop", ql.arguments, ql.tuples, ql.run, ql.ship, ql.cpu, ql.space, ql.io -from sys.querylog_catalog() qd, sys.querylog_calls() ql -where qd.id = ql.id and qd.owner = user; - -update sys._tables - set system = true - where name in ('querylog_history', 'querylog_calls', 'querylog_catalog') - and schema_id = (select id from sys.schemas where name = 'sys'); - -create procedure sys.querylog_empty() -external name sql.querylog_empty; - -create procedure sys.querylog_enable() -external name sql.querylog_enable; -create procedure sys.querylog_enable(threshold smallint) -external name sql.querylog_enable_threshold; -create procedure sys.querylog_disable() -external name sql.querylog_disable; -create view sys.tracelog as select * from sys.tracelog(); -drop function sys.clients; -create function sys.sessions() returns table("user" string, "login" timestamp, "sessiontimeout" bigint, "lastcommand" timestamp, "querytimeout" bigint, "active" bool) external name sql.sessions; -create view sys.sessions as select * from sys.sessions(); -create procedure sys.shutdown(delay tinyint) external name sql.shutdown; -create procedure sys.shutdown(delay tinyint, force bool) external name sql.shutdown; -create procedure sys.settimeout("query" bigint) external name sql.settimeout; -create procedure sys.settimeout("query" bigint, "session" bigint) external name sql.settimeout; -create procedure sys.setsession("timeout" bigint) external name sql.setsession; -create view sys.optimizers as select * from sys.optimizers(); -create view sys.environment as select * from sys.environment(); -create function sys.queue() -returns table( - qtag bigint, - "user" string, - started timestamp, - estimate timestamp, - progress int, - status string, - tag oid, - query string -) -external name sql.sysmon_queue; - -create view sys.queue as select * from sys.queue(); -update sys._tables - set system = true - where name = 'queue' - and schema_id = (select id from sys.schemas where name = 'sys'); - -create procedure sys.pause(tag int) -external name sql.sysmon_pause; -create procedure sys.resume(tag int) -external name sql.sysmon_resume; -create procedure sys.stop(tag int) -external name sql.sysmon_stop; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list