Changeset: 80808ac138ca for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/80808ac138ca Modified Files: monetdb5/optimizer/opt_mergetable.c Branch: Jul2021 Log Message:
call mat_apply1 on identity functions. diffs (78 lines): diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -401,7 +401,7 @@ mat_assign(MalBlkPtr mb, InstrPtr p, mat return r; } -static InstrPtr +static int mat_apply1(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int m, int var) { int tpe, k, is_select = isSelect(p), is_mirror = (getFunctionId(p) == mirrorRef); @@ -421,14 +421,14 @@ mat_apply1(MalBlkPtr mb, InstrPtr p, mat } if((r = newInstructionArgs(mb, matRef, packRef, mat[m].mi->argc)) == NULL) - return NULL; + return -1; getArg(r, 0) = getArg(p,0); tpe = getArgType(mb,p,0); if (is_identity) { if((q = newInstruction(mb, NULL,NULL)) == NULL) { freeInstruction(r); - return NULL; + return -1; } getArg(q, 0) = newTmpVariable(mb, TYPE_oid); q->retc = 1; @@ -441,7 +441,7 @@ mat_apply1(MalBlkPtr mb, InstrPtr p, mat int res = 0; if((q = copyInstruction(p)) == NULL) { freeInstruction(r); - return NULL; + return -1; } if (is_assign) @@ -471,11 +471,14 @@ mat_apply1(MalBlkPtr mb, InstrPtr p, mat res = setPartnr(ml, -1, getArg(q,0), k); if(res) { freeInstruction(r); - return NULL; + return -1; } r = addArgument(mb, r, getArg(q, 0)); } - return r; + if(!r || mat_add(ml, r, mat_type(ml->v, m), getFunctionId(p))) { + return -1; + } + return 0; } static int @@ -483,6 +486,8 @@ mat_apply(MalBlkPtr mb, InstrPtr p, matl { int matvar[8], fargument[8], k, l, parts = 0; + if (nrmats == 1 && (getFunctionId(p) == identityRef && getModuleId(p) == batcalcRef)) + return mat_apply1(mb, p, ml, is_a_mat(getArg(p,1),ml), 1); assert(nrmats <= 8); for(k=p->retc, l=0; k < p->argc; k++) { @@ -2345,12 +2350,7 @@ OPTmergetableImplementation(Client cntxt (m=is_a_mat(getArg(p,fm), &ml)) >= 0 && bats == 2 && isaBatType(getArgType(mb,p,2)) && isVarConstant(mb,getArg(p,2)) && is_bat_nil(getVarConstant(mb,getArg(p,2)).val.bval)) { - if ((r = mat_apply1(mb, p, &ml, m, fm)) != NULL) { - if(mat_add(&ml, r, mat_type(ml.v, m), getFunctionId(p))) { - msg = createException(MAL,"optimizer.mergetable",SQLSTATE(HY013) MAL_MALLOC_FAIL); - goto cleanup; - } - } else { + if (mat_apply1(mb, p, &ml, m, fm)) { msg = createException(MAL,"optimizer.mergetable",SQLSTATE(HY013) MAL_MALLOC_FAIL); goto cleanup; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list