Changeset: bf5bd90da101 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bf5bd90da101 Modified Files: monetdb5/scheduler/Tests/queryJoin.mal monetdb5/scheduler/mut_transforms.c Branch: mutation Log Message:
language.pass added for join instructions too diffs (158 lines): diff --git a/monetdb5/scheduler/Tests/queryJoin.mal b/monetdb5/scheduler/Tests/queryJoin.mal --- a/monetdb5/scheduler/Tests/queryJoin.mal +++ b/monetdb5/scheduler/Tests/queryJoin.mal @@ -4,21 +4,13 @@ function initializeFirst{unsafe}():bat[:oid,:lng]; b:= bat.new(:oid,:lng); - INT_MAX := 2147483647; - dbgmsk_restore := mdb.getDebug(); - dbgmsk_unset := 8+8388608; - dbgmsk_keep := calc.xor(INT_MAX,dbgmsk_unset); - dbgmsk_set := calc.and(dbgmsk_restore,dbgmsk_keep); - mdb.setDebug(dbgmsk_set); - - r:= mmath.srand(0); + r:= mmath.srand(0); barrier i:= 0:lng; k:= mmath.rand(); l:= calc.lng(k); bat.append(b,l); redo i:= iterator.next(1:lng,1000000:lng); exit i; - mdb.setDebug(dbgmsk_set); return b; end initializeFirst; @@ -26,21 +18,13 @@ end initializeFirst; function initializeNext{unsafe}():bat[:oid,:lng]; b:= bat.new(:oid,:lng); - INT_MAX := 2147483647; - dbgmsk_restore := mdb.getDebug(); - dbgmsk_unset := 8+8388608; - dbgmsk_keep := calc.xor(INT_MAX,dbgmsk_unset); - dbgmsk_set := calc.and(dbgmsk_restore,dbgmsk_keep); - mdb.setDebug(dbgmsk_set); - - r:= mmath.srand(0); + r:= mmath.srand(0); barrier i:= 0:lng; k:= mmath.rand(); l:= calc.lng(k); bat.append(b,l); redo i:= iterator.next(1:lng,1000000:lng); exit i; - mdb.setDebug(dbgmsk_set); return b; end initializeNext; @@ -48,39 +32,53 @@ end initializeNext; function query(run:int, a:bat[:oid,:lng], b:bat[:oid,:lng]); t0:= alarm.usec(); + + profiler.activate("ticks"); + profiler.activate("thread"); + profiler.activate("stmt"); + profiler.setAll(); + profiler.start(); + barrier z:= language.dataflow(); (s1,s2) := algebra.join(a,b); exit z; t1:= alarm.usec(); t2 := t1-t0; io.printf("#run %d %d\n",run,t2); + stmt:= profiler.getTrace("stmt"); + ticks:= profiler.getTrace("ticks"); + thread:= profiler.getTrace("thread"); + io.print(thread,ticks,stmt); + end query; optimizer.multicore("user","query"); function testrun(); a:= initializeFirst(); + bat.setReadMode(a); b:= initializeNext(); + bat.setReadMode(b); user.query(0,a,b); user.query(1,a,b); -# user.query(2,a,b); -# user.query(3,a,b); -# user.query(4,a,b); -# user.query(5,a,b); -# user.query(6,a,b); -# user.query(7,a,b); -# user.query(8,a,b); -# user.query(9,a,b); -# user.query(10,a,b); -# user.query(11,a,b); -# user.query(12,a,b); -# user.query(13,a,b); -# user.query(14,a,b); -# user.query(15,a,b); -# user.query(16,a,b); -# user.query(17,a,b); -# user.query(18,a,b); -# user.query(19,a,b); -# user.query(20,a,b); + user.query(2,a,b); + user.query(3,a,b); + user.query(4,a,b); + user.query(5,a,b); + user.query(6,a,b); + user.query(7,a,b); + user.query(8,a,b); + user.query(9,a,b); + user.query(10,a,b); + user.query(11,a,b); + user.query(12,a,b); + user.query(13,a,b); + user.query(14,a,b); + user.query(15,a,b); + user.query(16,a,b); + user.query(17,a,b); + user.query(18,a,b); + user.query(19,a,b); + user.query(20,a,b); end testrun; testrun(); diff --git a/monetdb5/scheduler/mut_transforms.c b/monetdb5/scheduler/mut_transforms.c --- a/monetdb5/scheduler/mut_transforms.c +++ b/monetdb5/scheduler/mut_transforms.c @@ -51,7 +51,7 @@ mutationJoin(Client cntxt, Mutant m){ if ( i == pc){ /* replace the instruction, e.g. with a partioned one. Dont use any partition intelligence, simple half split - v := algebra.select(b,l,h) => + v := algebra.join(b,Y) => b1 := bat.partition(b,2,0); b2 := bat.partition(b,2,1); v1,z1:= algebra.join(b1,Y); @@ -103,6 +103,11 @@ mutationJoin(Client cntxt, Mutant m){ // inherit profiling m->src->profiler[m->src->stop-1].trace = profiler; + q= newStmt(m->src, languageRef, passRef); + q = pushArgument(m->src,q,b1); + // inherit profiling + m->src->profiler[m->src->stop-1].trace = profiler; + q= copyInstruction(p); getArg(q,2)= b2; v2 = getArg(q,0)= newTmpVariable(m->src,TYPE_any); @@ -111,6 +116,11 @@ mutationJoin(Client cntxt, Mutant m){ // inherit profiling m->src->profiler[m->src->stop-1].trace = profiler; + q= newStmt(m->src, languageRef, passRef); + q = pushArgument(m->src,q,b2); + // inherit profiling + m->src->profiler[m->src->stop-1].trace = profiler; + (void)z1; (void)z2; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list