Changeset: de3977d68112 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=de3977d68112
Modified Files:
monetdb5/optimizer/opt_centipede.c
Branch: default
Log Message:
Add some debugging
diffs (84 lines):
diff --git a/monetdb5/optimizer/opt_centipede.c
b/monetdb5/optimizer/opt_centipede.c
--- a/monetdb5/optimizer/opt_centipede.c
+++ b/monetdb5/optimizer/opt_centipede.c
@@ -134,6 +134,7 @@ OPTexecController(Client cntxt, MalBlkPt
getModuleId(pack[k]) = matRef;
getFunctionId(pack[k]) = packRef;
getArg(pack[k],0) = getArg(packs,k);
+ assert(packs->argv[k] >=0);
}
}
@@ -195,6 +196,10 @@ OPTexecController(Client cntxt, MalBlkPt
//setVarType(cmb,z,
newBatType(TYPE_oid,getTailType(getVarType(cmb,z))) );
}
}
+#ifdef _DEBUG_OPT_CENTIPEDE_
+ mnstr_printf(cntxt->fdout,"\n#cmb structure\n");
+ printFunction(cntxt->fdout, cmb, 0, LIST_MAL_STMT);
+#endif
(void) status;
/* look for pivot operations in original plan */
@@ -203,13 +208,16 @@ OPTexecController(Client cntxt, MalBlkPt
char buf[BUFSIZ];
q= copyInstruction(getInstrPtr(mb,i));
#ifdef _DEBUG_OPT_CENTIPEDE_
- mnstr_printf(cntxt->fdout,"\n#cmb include stmt %d status
%d\n",i,status[i]);
+ mnstr_printf(cntxt->fdout,"#cmb include stmt %d status
%d:",i,status[i]);
printInstruction(cntxt->fdout, mb, 0, q,LIST_MAL_STMT);
+ for(k=0; k<q->argc;k++)
+ assert(getArg(q,k) >=0);
#endif
if (getModuleId(q) == groupRef && (getFunctionId(q) ==
subgroupRef || getFunctionId(q) == subgroupdoneRef)){
snprintf(buf,BUFSIZ,"Y_%d",getArg(q,q->retc));
q= copyInstruction(q);
getArg(q,q->retc) = findVariable(cmb,buf);
+ assert(getArg(q,q->retc) >=0);
if ( getArg(q,q->retc) == -1)
getArg(q,q->retc) =
newVariable(cmb,GDKstrdup(buf),TYPE_any);
pushInstruction(cmb,q);
@@ -237,7 +245,9 @@ OPTexecController(Client cntxt, MalBlkPt
if (getModuleId(q) == algebraRef && getFunctionId(q) ==
leftfetchjoinRef ){
snprintf(buf,BUFSIZ,"Y_%d",getArg(q,q->argc-1));
q= copyInstruction(q);
- getArg(q,q->argc-1) = findVariable(cmb,buf);
+ k = findVariable(cmb,buf);
+ if ( k >=0)
+ getArg(q,q->argc-1) = k;
pushInstruction(cmb,q);
} else{
q= copyInstruction(q);
@@ -266,7 +276,7 @@ OPTexecController(Client cntxt, MalBlkPt
cmb->stmt[0]= pushReturn(cmb, cmb->stmt[0], getArg(ret,i));
pushEndInstruction(cmb);
#ifdef _DEBUG_OPT_CENTIPEDE_
- mnstr_printf(cntxt->fdout,"\n#pmb stmt\n");
+ mnstr_printf(cntxt->fdout,"#pmb stmt ");
printInstruction(cntxt->fdout, pmb, 0,
getInstrPtr(pmb,0),LIST_MAL_STMT);
mnstr_printf(cntxt->fdout,"\n#cmb stmt\n");
printInstruction(cntxt->fdout,cmb, 0, getInstrPtr(cmb,0),LIST_MAL_STMT);
@@ -753,7 +763,9 @@ OPTbakePlans(Client cntxt, MalBlkPtr mb,
else
if ( getModuleId(p) == algebraRef && getFunctionId(p)
== leftfetchjoinPathRef && p->argc-p->retc == 2){
if ( vars[getArg(p,p->retc)] == PARTITION ||
vars[getArg(p,p->retc)]== PIVOT){
- //getFunctionId(p)= leftjoinRef;
+ getFunctionId(p) = leftjoinPathRef;
+ addvartolist(plan,&packs,getArg(p,0));
+
addvartolist(plan,&planreturn,getArg(p,0));
}
pushInstruction(plan,p);
} else
@@ -762,9 +774,11 @@ OPTbakePlans(Client cntxt, MalBlkPtr mb,
q = getInstrPtr(plan,plan->stop-1);
if( getFunctionId(q) == sliceRef &&
getArg(p,p->argc-1) == getArg(q,0))
getFunctionId(p) = leftjoinRef;
- if ( vars[getArg(p,0)] == PIVOT){
+ if ( vars[getArg(p,p->retc)] == PIVOT){
addvartolist(plan,&packs,getArg(p,0));
addvartolist(plan,&planreturn,getArg(p,0));
+
addvartolist(plan,&packs,getArg(p,p->argc-1));
+
addvartolist(plan,&planreturn,getArg(p,p->argc-1));
}
pushInstruction(plan,p);
#ifdef _DEBUG_OPT_CENTIPEDE_
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list