Changeset: 7e0483d5af52 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7e0483d5af52
Modified Files:
        monetdb5/modules/mal/mat.mx
        monetdb5/optimizer/opt_centipede.mx
        monetdb5/scheduler/srvpool.c
Branch: default
Log Message:

Finalize first round for centipede
All TPCH queries are running as expected.


diffs (106 lines):

diff --git a/monetdb5/modules/mal/mat.mx b/monetdb5/modules/mal/mat.mx
--- a/monetdb5/modules/mal/mat.mx
+++ b/monetdb5/modules/mal/mat.mx
@@ -65,6 +65,10 @@ pattern pack2(b:bat[:any_1,:any_2]...):b
 address MATpack2
 comment "Materialize the MAT into a BAT (by an append all)";
 
+pattern pack3(b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
+address MATpack3
+comment "Materialize the MAT into a BAT by considering the heads as void. 
(used in centipede)";
+
 pattern slice(first:wrd, last:wrd, b:bat[:any_1,:any_2]...):bat[:any_1,:any_2]
 address MATpackSlice
 comment "Materialize a sliced MAT into a BAT";
@@ -143,6 +147,7 @@ comment "retrieve the definition from th
 
 mat_export str MATpack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 mat_export str MATpack2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+mat_export str MATpack3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 mat_export str MATpackValues(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 mat_export str MATpackSlice(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 mat_export str MATnewIterator(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
@@ -435,6 +440,59 @@ MATpack2(Client cntxt, MalBlkPtr mb, Mal
        return MATpack2Internal(stk,p);
 }
 
+/*
+ * the next one is specific to the centipede, where we carve out
+ * a portion of table based on the value ids. They are simply glued
+ * together in a void-headed bat.
+*/
+static str
+MATpack3Internal(MalStkPtr stk, InstrPtr p)
+{
+       int i,*ret;
+       BAT *b, *bn;
+       BUN cap=0;
+
+       b= BATdescriptor(stk->stk[getArg(p,1)].val.ival);
+       if( b == NULL)
+               throw(MAL, "mat.pack", RUNTIME_OBJECT_MISSING);
+       bn = BATcopy(b, TYPE_void, b->ttype, TRUE);
+       BATseqbase(bn,0);
+       BBPunfix(b->batCacheid);
+       if( bn == NULL)
+               throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
+
+       for(i = 2; i < p->argc; i++){
+               b= BATdescriptor(stk->stk[getArg(p,i)].val.ival);
+               if( b == NULL){
+                       BBPreleaseref(bn->batCacheid);
+                       throw(MAL, "mat.pack", RUNTIME_OBJECT_MISSING);
+               }
+               cap += BATcount(b);
+               BBPunfix(b->batCacheid);
+       }
+       bn = BATextend(bn, cap);
+       for( i = 2; i < p->argc; i++){
+               b= BATdescriptor(stk->stk[getArg(p,i)].val.ival);
+               if( b == NULL){
+                       BBPreleaseref(bn->batCacheid);
+                       throw(MAL, "mat.pack", RUNTIME_OBJECT_MISSING);
+               }
+               BATappend(bn,b,FALSE);
+               BBPunfix(b->batCacheid);
+       }
+       ret= (int*) getArgReference(stk,p,0);
+       BBPkeepref(*ret = bn->batCacheid);
+       return MAL_SUCCEED;
+}
+
+str
+MATpack3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
+{
+       (void) cntxt;
+       (void) mb;
+       return MATpack3Internal(stk,p);
+}
+
 str
 MATpack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
 {
diff --git a/monetdb5/optimizer/opt_centipede.mx 
b/monetdb5/optimizer/opt_centipede.mx
--- a/monetdb5/optimizer/opt_centipede.mx
+++ b/monetdb5/optimizer/opt_centipede.mx
@@ -147,7 +147,7 @@ OPTplanCntrl(Client cntxt, MalBlkPtr mb,
                for ( k=0  ;k < nrpack ; k++){
                        pack[k] = newInstruction(cmb,ASSIGNsymbol);
                        getModuleId(pack[k]) = matRef;
-                       getFunctionId(pack[k]) = packRef;
+                       getFunctionId(pack[k]) = putName("pack3",5);
                        getArg(pack[k],0) = newTmpVariable(cmb, 
newBatType(TYPE_oid, getTailType(getArgType(cmb,p,k))) );
                }
        }
diff --git a/monetdb5/scheduler/srvpool.c b/monetdb5/scheduler/srvpool.c
--- a/monetdb5/scheduler/srvpool.c
+++ b/monetdb5/scheduler/srvpool.c
@@ -83,7 +83,7 @@ static Server servers[MAXSITES];      /* regi
 static int srvtop = 0;
 static int srvbaseline= 0;
 static str srvpattern = NULL;
-static int localExecution= TRUE;
+static int localExecution= FALSE;
 
 /* 
  * The partition optimizer requires the number of peers.
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to