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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list