Changeset: 3141fb18f4de for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3141fb18f4de Modified Files: monetdb5/optimizer/opt_multiplex.c monetdb5/optimizer/opt_remap.c monetdb5/optimizer/optimizer.mal Branch: default Log Message:
Handle errors in multiplex operations better diffs (59 lines): diff --git a/monetdb5/optimizer/opt_multiplex.c b/monetdb5/optimizer/opt_multiplex.c --- a/monetdb5/optimizer/opt_multiplex.c +++ b/monetdb5/optimizer/opt_multiplex.c @@ -67,13 +67,13 @@ OPTexpandMultiplex(Client cntxt, MalBlkP if (isAnyExpression(getArgType(mb, pci, 0))) throw(MAL, "optimizer.multiplex", "Target type is missing"); - mod = VALget(&getVar(mb, getArg(pci, 1))->value); + mod = VALget(&getVar(mb, getArg(pci, pci->retc))->value); mod = putName(mod,strlen(mod)); - fcn = VALget(&getVar(mb, getArg(pci, 2))->value); + fcn = VALget(&getVar(mb, getArg(pci, pci->retc+1))->value); fcn = putName(fcn,strlen(fcn)); /* search the iterator bat */ - for (i = 3; i < pci->argc; i++) + for (i = pci->retc+2; i < pci->argc; i++) if (isaBatType(getArgType(mb, pci, i))) { iter = getArg(pci, i); if (getHeadType(getVarType(mb,iter)) != TYPE_oid) @@ -138,7 +138,7 @@ OPTexpandMultiplex(Client cntxt, MalBlkP q = newFcnCall(mb, mod, fcn); cr = getArg(q, 0) = newTmpVariable(mb, TYPE_any); - for (i = 3; i < pci->argc; i++) + for (i = pci->retc+2; i < pci->argc; i++) if (isaBatType(getArgType(mb, pci, i))) { q= pushArgument(mb, q, alias[i]); } else { diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c --- a/monetdb5/optimizer/opt_remap.c +++ b/monetdb5/optimizer/opt_remap.c @@ -458,10 +458,9 @@ OPTremapImplementation(Client cntxt, Mal str OPTremapMultiplex(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p){ + char buf[BUFSIZ]; (void) mb; - (void)stk; - (void) p; - OPTDEBUGremap - printInstruction(cntxt->fdout,mb,0,p,LIST_MAL_ALL); - throw(MAL, "opt.remap", PROGRAM_NYI); + (void) cntxt; + snprintf(buf,BUFSIZ,"Function '%s.%s' not defined", (char *)getArgReference(stk,p,p->retc), (char *)getArgReference(stk,p,p->retc+1)); + throw(MAL, "opt.remap", "%s",buf); } diff --git a/monetdb5/optimizer/optimizer.mal b/monetdb5/optimizer/optimizer.mal --- a/monetdb5/optimizer/optimizer.mal +++ b/monetdb5/optimizer/optimizer.mal @@ -428,6 +428,8 @@ address OPTwrapper comment "Remapping function calls to a their multiplex variant"; module mal; +pattern mal.multiplex(a:any...):any... +address OPTremapMultiplex; pattern mal.multiplex(a:any...):any address OPTremapMultiplex; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list