Changeset: 67773d621a58 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=67773d621a58
Modified Files:
gdk/gdk_group.c
gdk/gdk_utils.c
sql/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
Branch: default
Log Message:
Merge from Feb2013 branch.
diffs (247 lines):
diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c
--- a/gdk/gdk_group.c
+++ b/gdk/gdk_group.c
@@ -64,8 +64,8 @@
*
* Otherwise we build a partial hash table on the fly.
*
- * A decision should be made on the order in which grouping occurs
- * Let |b| has << different values as |g| then the linked lists gets
+ * A decision should be made on the order in which grouping occurs Let
+ * |b| have << different values than |g| then the linked lists gets
* extremely long, leading to a n^2 algorithm.
* At the MAL level, the multigroup function would perform the dynamic
* optimization.
@@ -100,8 +100,8 @@
do { \
TYPE *w = (TYPE *) Tloc(b, 0); \
for (r = BUNfirst(b), p = r, q = r + BATcount(b); p < q; p++) {
\
+ prb = hash_##TYPE(hs, &w[p]); \
if (gc) { \
- prb = hash_##TYPE(hs, &w[p]); \
for (hb = hs->hash[prb]; \
hb != BUN_NONE && \
grps[hb - r] == grps[p - r]; \
@@ -120,12 +120,13 @@
} \
} \
if (hb != BUN_NONE && \
- grps[hb - r] != grps[p - r]) \
+ grps[hb - r] != grps[p - r]) { \
+ /* we didn't assign a group */ \
+ /* yet */ \
hb = BUN_NONE; \
+ } \
} else if (grps) { \
- BUN hv = hash_##TYPE(hs, &w[p]); \
- BUN hg = (BUN) grps[p-r]; \
- prb = ((hv << bits) ^ hg) & hs->mask; \
+ prb = ((prb << bits) ^ (BUN) grps[p-r]) &
hs->mask; \
for (hb = hs->hash[prb]; \
hb != BUN_NONE; \
hb = hs->link[hb]) { \
@@ -142,7 +143,6 @@
} \
} \
} else { \
- prb = hash_##TYPE(hs, &w[p]); \
for (hb = hs->hash[prb]; \
hb != BUN_NONE; \
hb = hs->link[hb]) { \
@@ -502,8 +502,11 @@ BATgroup_internal(BAT **groups, BAT **ex
}
}
if (hb != BUN_NONE &&
- grps[hb - r] != grps[p - r])
+ grps[hb - r] != grps[p - r]) {
+ /* we didn't assign a group
+ * yet */
hb = BUN_NONE;
+ }
} else if (grps) {
for (;
hb != BUN_NONE;
@@ -617,8 +620,8 @@ BATgroup_internal(BAT **groups, BAT **ex
default:
for (r = BUNfirst(b), p = r, q = r + BATcount(b); p <
q; p++) {
v = BUNtail(bi, p);
+ prb = hash_any(hs, v);
if (gc) {
- prb = hash_any(hs, v);
for (hb = hs->hash[prb];
hb != BUN_NONE && grps[hb - r] ==
grps[p - r];
hb = hs->link[hb]) {
@@ -636,12 +639,13 @@ BATgroup_internal(BAT **groups, BAT **ex
}
}
if (hb != BUN_NONE &&
- grps[hb - r] != grps[p - r])
+ grps[hb - r] != grps[p - r]) {
+ /* we didn't assign a
+ * group yet */
hb = BUN_NONE;
+ }
} else if (grps) {
- BUN hv = hash_any(hs, v);
- BUN hg = (BUN) grps[p-r];
- prb = ((hv << bits) ^ hg) & hs->mask;
+ prb = ((prb << bits) ^ (BUN) grps[p-r])
& hs->mask;
for (hb = hs->hash[prb];
hb != BUN_NONE;
hb = hs->link[hb]) {
@@ -658,7 +662,6 @@ BATgroup_internal(BAT **groups, BAT **ex
}
}
} else {
- prb = hash_any(hs, v);
for (hb = hs->hash[prb];
hb != BUN_NONE;
hb = hs->link[hb]) {
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -329,7 +329,6 @@ volatile ATOMIC_TYPE GDK_nmallocs[MAX_BI
#ifdef ATOMIC_LOCK
static MT_Lock mbyteslock;
static MT_Lock GDKstoppedLock;
-static MT_Lock vmtrimLock;
#endif
size_t _MT_pagesize = 0; /* variable holding memory size */
@@ -930,13 +929,11 @@ GDKmunmap(void *addr, size_t size)
* Their value is turned into a blanc space.
*/
-#define CATNAP 500
int GDKrecovery = 0;
-#define VMTRIM_IDLE 0
-#define VMTRIM_BUSY 1
+#define CATNAP 50 /* time to sleep in ms for catnaps */
+
static MT_Id GDKvmtrim_id;
-static int vmtrimStatus = VMTRIM_BUSY; /* owned by vmtrim thread */
static void
GDKvmtrim(void *limit)
@@ -946,7 +943,6 @@ GDKvmtrim(void *limit)
(void) limit;
- ATOMIC_INIT(vmtrimLock, "GDKvmtrim");
do {
int t;
size_t rss;
@@ -954,12 +950,10 @@ GDKvmtrim(void *limit)
size_t cursize;
/* sleep using catnaps so we can exit in a timely fashion */
- for (t = highload ? CATNAP : 10 * CATNAP; t > 0; t -= CATNAP) {
- /* allow GDKexit to kill GDKvmtrim thread while
sleeping */
- (void) ATOMIC_COMP_SWAP(vmtrimStatus, VMTRIM_BUSY,
VMTRIM_IDLE,vmtrimLock, "GDKvmtrim");
+ for (t = highload ? 500 : 5000; t > 0; t -= CATNAP) {
MT_sleep_ms(CATNAP);
- /* prevent from being killed while active */
- (void) ATOMIC_COMP_SWAP(vmtrimStatus, VMTRIM_IDLE,
VMTRIM_BUSY, vmtrimLock, "GDKvmtrim");
+ if (GDKexiting())
+ return;
}
rss = MT_getrss();
rssdiff = (ssize_t) rss - (ssize_t) prevrss;
@@ -1167,16 +1161,11 @@ GDKexit(int status)
{
MT_lock_set(&GDKthreadLock, "GDKexit");
if (ATOMIC_COMP_SWAP(GDKstopped, 0, 1, GDKstoppedLock, "GDKexit") == 0)
{
- /* we have to wait for possible concurrent vmtrim actions to
finish properly */
- if (GDKvmtrim_id) {
- if (ATOMIC_GET(vmtrimStatus, vmtrimLock, "GDKexit") ==
VMTRIM_IDLE)
- MT_kill_thread(GDKvmtrim_id);
- else
- MT_join_thread(GDKvmtrim_id);
- }
+ if (GDKvmtrim_id)
+ MT_join_thread(GDKvmtrim_id);
GDKnrofthreads = 0;
MT_lock_unset(&GDKthreadLock, "GDKexit");
- MT_sleep_ms(50);
+ MT_sleep_ms(CATNAP);
/* Kill all threads except myself */
if (status == 0) {
diff --git
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
---
a/sql/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
+++
b/sql/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
@@ -5,64 +5,6 @@ stderr of test 'select_from_env.SF-12407
# 13:22:15 > Mtimeout -timeout 180 Mserver
"--config=/ufs/sjoerd/Monet-virgin/etc/MonetDB.conf" --debug=10 --set
"monet_mod_path=/ufs/sjoerd/src/MonetDB/devel/sql-virgin/Linux/lib/MonetDB:/ufs/sjoerd/Monet-virgin/lib/MonetDB"
--set "gdk_dbfarm=/ufs/sjoerd/Monet-virgin/var/MonetDB/dbfarm" --set
"sql_logdir=/ufs/sjoerd/Monet-virgin/var/MonetDB/log" --set mapi_port=30620
--set sql_port=47090 --set xquery_port=50410 --set monet_prompt= --trace
"--dbname=mTests_src_test_BugDay_2005-12-19_2.9.3"
--dbinit="module(sql_server); sql_server_start();" ; echo ; echo Over..
# 13:22:15 >
-# builtin opt gdk_arch = 64bitx86_64-pc-solaris2.11
-# builtin opt gdk_version = 1.33.0
-# builtin opt prefix =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc
-# builtin opt exec_prefix = ${prefix}
-# builtin opt gdk_dbname = tst
-# builtin opt gdk_dbfarm = ${prefix}/var/MonetDB
-# builtin opt gdk_debug = 8
-# builtin opt gdk_alloc_map = yes
-# builtin opt gdk_vmtrim = yes
-# builtin opt monet_admin = adm
-# builtin opt monet_prompt = >
-# builtin opt monet_welcome = yes
-# builtin opt monet_mod_path =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB
-# builtin opt monet_daemon = yes
-# builtin opt host = localhost
-# builtin opt mapi_port = 50000
-# builtin opt mapi_noheaders = no
-# builtin opt mapi_debug = 0
-# builtin opt mapi_clients = 2
-# builtin opt sql_debug = 0
-# builtin opt standoff_ns = http://monetdb.cwi.nl/standoff
-# builtin opt standoff_start = start
-# builtin opt standoff_end = end
-# config opt prefix =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc
-# config opt config = ${prefix}/etc/monetdb5.conf
-# config opt prefix =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc
-# config opt exec_prefix = ${prefix}
-# config opt gdk_dbfarm = ${prefix}/var/MonetDB5/dbfarm
-# config opt gdk_dbname = demo
-# config opt gdk_alloc_map = no
-# config opt gdk_embedded = no
-# config opt gdk_debug = 0
-# config opt monet_mod_path =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5:/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5/lib:/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5/bin
-# config opt monet_daemon = no
-# config opt monet_welcome = yes
-# config opt mero_msglog = ${prefix}/var/log/MonetDB/merovingian.log
-# config opt mero_errlog = ${prefix}/var/log/MonetDB/merovingian.log
-# config opt mero_pidfile = ${prefix}/var/run/MonetDB/merovingian.pid
-# config opt mero_controlport = 50001
-# config opt mal_init =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5/mal_init.mal
-# config opt mal_listing = 2
-# config opt mapi_port = 50000
-# config opt mapi_autosense = false
-# config opt mapi_open = false
-# config opt sql_optimizer =
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,garbageCollector,dataflow,history,replication,multiplex
-# cmdline opt config =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc/etc/monetdb5.conf
-# cmdline opt gdk_nr_threads = 0
-# cmdline opt monet_mod_path =
/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5:/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5/lib:/export/scratch/stripe/fabian/monetdb/current/program-i86pc/lib/MonetDB5/bin
-# cmdline opt gdk_dbfarm =
/export/scratch/stripe/fabian/monetdb/current/mtest-pegasus.ins.cwi.nl/sql/dbfarm
-# cmdline opt mapi_open = true
-# cmdline opt xrpc_open = true
-# cmdline opt mapi_port = 30332
-# cmdline opt xrpc_port = 44644
-# cmdline opt monet_prompt =
-# cmdline opt gdk_dbname = mTests_src_test_BugDay_2005-12-19_2.9.3
-# cmdline opt mal_listing = 0
-#warning: please don't forget to set your vault key!
-#(see
/export/scratch/stripe/fabian/monetdb/current/program-i86pc/etc/monetdb5.conf)
# 22:29:10 >
# 22:29:10 > mclient -lsql -i -umonetdb -Pmonetdb --host=pegasus --port=30332
@@ -72,8 +14,6 @@ MAPI = (monetdb) /var/tmp/mtest-29744/.
QUERY = select * from env() as env where name = ( select 'prefix' from env()
as env );
ERROR = !cardinality violation (21>1)
-
-
# 13:22:15 >
# 13:22:15 > Done.
# 13:22:15 >
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list