Changeset: d5c9d44569af for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d5c9d44569af Modified Files: monetdb5/optimizer/opt_mergetable.c Branch: resource_management Log Message:
patch mssing allocations in opt_mergetable diffs (truncated from 360 to 300 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 @@ -195,7 +195,7 @@ mat_pack(MalBlkPtr mb, matlist_t *ml, in } static int -checksize(matlist_t *ml, int v) +checksize(Client c, matlist_t *ml, int v) { if (v >= ml->vsize) { int sz = ml->vsize, i, *nhorigin, *ntorigin, *nvars; @@ -204,15 +204,15 @@ checksize(matlist_t *ml, int v) assert(v < nvsize); if (v >= nvsize) nvsize = v + 10; - nhorigin = (int *) GDKrealloc(ml->horigin, sizeof(int) * nvsize); + nhorigin = (int *) MA_RENEW_ARRAY(c->ta, int, ml->horigin, nvsize, sz); if (nhorigin == NULL) return -1; ml->horigin = nhorigin; - ntorigin = (int *) GDKrealloc(ml->torigin, sizeof(int) * nvsize); + ntorigin = (int *) MA_RENEW_ARRAY(c->ta, int, ml->torigin, nvsize, sz); if (ntorigin == NULL) return -1; ml->torigin = ntorigin; - nvars = (int *) GDKrealloc(ml->vars, sizeof(int) * nvsize); + nvars = (int *) MA_RENEW_ARRAY(c->ta, int, ml->vars, nvsize, sz); if (nvars == NULL) return -1; ml->vars = nvars; @@ -227,11 +227,11 @@ checksize(matlist_t *ml, int v) } static int -setPartnr(matlist_t *ml, int ivar, int ovar, int pnr) +setPartnr(Client c, matlist_t *ml, int ivar, int ovar, int pnr) { int tpnr = -1; - if (checksize(ml, ivar) || checksize(ml, ovar)) + if (checksize(c, ml, ivar) || checksize(c, ml, ovar)) return -1; if (ivar >= 0) tpnr = ml->torigin[ivar]; @@ -244,12 +244,12 @@ setPartnr(matlist_t *ml, int ivar, int o } static int -propagatePartnr(matlist_t *ml, int ivar, int ovar, int pnr) +propagatePartnr(Client c, matlist_t *ml, int ivar, int ovar, int pnr) { /* prop head ids to tail */ int tpnr = -1; - if (checksize(ml, ivar) || checksize(ml, ovar)) + if (checksize(c, ml, ivar) || checksize(c, ml, ovar)) return -1; if (ivar >= 0) tpnr = ml->horigin[ivar]; @@ -262,12 +262,12 @@ propagatePartnr(matlist_t *ml, int ivar, } static int -propagateMirror(matlist_t *ml, int ivar, int ovar) +propagateMirror(Client c, matlist_t *ml, int ivar, int ovar) { /* prop head ids to head and tail */ int tpnr; - if (checksize(ml, ivar) || checksize(ml, ovar)) + if (checksize(c, ml, ivar) || checksize(c, ml, ovar)) return -1; tpnr = ml->horigin[ivar]; if (tpnr >= 0) { @@ -279,11 +279,11 @@ propagateMirror(matlist_t *ml, int ivar, } static int -overlap(matlist_t *ml, int lv, int rv, int lnr, int rnr, int ontails) +overlap(Client c, matlist_t *ml, int lv, int rv, int lnr, int rnr, int ontails) { int lpnr, rpnr; - if (checksize(ml, lv) || checksize(ml, rv)) + if (checksize(c, ml, lv) || checksize(c, ml, rv)) return -1; lpnr = ml->torigin[lv]; rpnr = (ontails) ? ml->torigin[rv] : ml->horigin[rv]; @@ -298,15 +298,15 @@ overlap(matlist_t *ml, int lv, int rv, i } static int -mat_set_prop(matlist_t *ml, MalBlkPtr mb, InstrPtr p) +mat_set_prop(Client c, matlist_t *ml, MalBlkPtr mb, InstrPtr p) { int k, tpe = getArgType(mb, p, 0); tpe = getBatType(tpe); for (k = 1; k < p->argc; k++) { - if (setPartnr(ml, -1, getArg(p, k), k)) + if (setPartnr(c, ml, -1, getArg(p, k), k)) return -1; - if (tpe == TYPE_oid && propagateMirror(ml, getArg(p, k), getArg(p, k))) + if (tpe == TYPE_oid && propagateMirror(c, ml, getArg(p, k), getArg(p, k))) return -1; } return 0; @@ -334,7 +334,7 @@ mat_delta(Client c, matlist_t *ml, MalBl for (k = 1; k < mat[e].mi->argc; k++) { for (j = 1; j < mat[m].mi->argc; j++) { InstrPtr q; - switch (overlap(ml, getArg(mat[e].mi, k), getArg(mat[m].mi, j), k, j, 0)) { + switch (overlap(c, ml, getArg(mat[e].mi, k), getArg(mat[m].mi, j), k, j, 0)) { case 0: continue; case -1: @@ -355,7 +355,7 @@ mat_delta(Client c, matlist_t *ml, MalBl freeInstruction(r); return NULL; } - if (setPartnr(ml, getArg(mat[m].mi, j), getArg(q, 0), nr)) { + if (setPartnr(c, ml, getArg(mat[m].mi, j), getArg(q, 0), nr)) { freeInstruction(r); return NULL; } @@ -384,7 +384,7 @@ mat_delta(Client c, matlist_t *ml, MalBl freeInstruction(r); return NULL; } - if (setPartnr(ml, is_subdelta ? getArg(mat[m].mi, k) : -1, getArg(q, 0), k)) { + if (setPartnr(c, ml, is_subdelta ? getArg(mat[m].mi, k) : -1, getArg(q, 0), k)) { freeInstruction(r); return NULL; } @@ -433,7 +433,7 @@ mat_assign(Client c, MalBlkPtr mb, Instr for (int k = 1; k < mat[m].mi->argc; k++) { /* reuse inputs of old mat */ r = pushArgument(mb, r, getArg(mat[m].mi, k)); - if (setPartnr(ml, -1, getArg(mat[m].mi, k), k)) { + if (setPartnr(c, ml, -1, getArg(mat[m].mi, k), k)) { freeInstruction(r); return NULL; } @@ -520,11 +520,11 @@ mat_apply1(Client c, MalBlkPtr mb, Instr return -1; } if (is_mirror || is_identity) { - res = propagateMirror(ml, getArg(mat[m].mi, k), getArg(q, 0)); + res = propagateMirror(c, ml, getArg(mat[m].mi, k), getArg(q, 0)); } else if (is_select) - res = propagatePartnr(ml, getArg(mat[m].mi, k), getArg(q, 0), k); + res = propagatePartnr(c, ml, getArg(mat[m].mi, k), getArg(q, 0), k); else - res = setPartnr(ml, -1, getArg(q, 0), k); + res = setPartnr(c, ml, -1, getArg(q, 0), k); if (res) { freeInstruction(r); return -1; @@ -596,7 +596,7 @@ mat_apply(Client c, MalBlkPtr mb, InstrP getArg(q, fargument[l]) = getArg(ml->v[matvar[l]].mi, k); pushInstruction(mb, q); for (l = 0; l < p->retc; l++) { - if (setPartnr(ml, -1, getArg(q, l), k)) { + if (setPartnr(c, ml, -1, getArg(q, l), k)) { for (k = 0; k < p->retc; k++) freeInstruction(r[k]); return -1; @@ -659,7 +659,7 @@ mat_setop(Client c, MalBlkPtr mb, InstrP for (j = 1; j < mat[n].mi->argc; j++) { int ov = 0; if (getBatType(ttpe) != TYPE_oid - || (ov = overlap(ml, getArg(mat[m].mi, k), + || (ov = overlap(c, ml, getArg(mat[m].mi, k), getArg(mat[n].mi, j), k, j, 1)) == 1) { s = pushArgument(mb, s, getArg(mat[n].mi, j)); } @@ -685,7 +685,7 @@ mat_setop(Client c, MalBlkPtr mb, InstrP getArg(q, 2) = getArg(s, 0); if (o >= 0) getArg(q, 3) = getArg(mat[o].mi, k); - if (setPartnr(ml, getArg(mat[m].mi, k), getArg(q, 0), nr)) { + if (setPartnr(c, ml, getArg(mat[m].mi, k), getArg(q, 0), nr)) { freeInstruction(q); freeInstruction(r); return -1; @@ -712,7 +712,7 @@ mat_setop(Client c, MalBlkPtr mb, InstrP getArg(q, 3) = getArg(mat[o].mi, k); pushInstruction(mb, q); - if (setPartnr(ml, getArg(q, 2), getArg(q, 0), k)) { + if (setPartnr(c, ml, getArg(q, 2), getArg(q, 0), k)) { freeInstruction(r); return -1; } @@ -749,7 +749,7 @@ mat_projection(Client c, MalBlkPtr mb, I for (k = 1; mb->errors == NULL && k < mat[m].mi->argc; k++) { for (j = 1; j < mat[n].mi->argc; j++) { InstrPtr q; - switch (overlap(ml, getArg(mat[m].mi, k), + switch (overlap(c, ml, getArg(mat[m].mi, k), getArg(mat[n].mi, j), k, j, 0)) { case 0: continue; @@ -769,7 +769,7 @@ mat_projection(Client c, MalBlkPtr mb, I getArg(q, 2) = getArg(mat[n].mi, j); pushInstruction(mb, q); - if (mb->errors || setPartnr(ml, getArg(mat[n].mi, j), getArg(q, 0), nr)) { + if (mb->errors || setPartnr(c, ml, getArg(mat[n].mi, j), getArg(q, 0), nr)) { freeInstruction(r); return -1; } @@ -802,7 +802,7 @@ mat_projection(Client c, MalBlkPtr mb, I getArg(q, 1) = getArg(mat[m].mi, k); pushInstruction(mb, q); - if (mb->errors || setPartnr(ml, getArg(q, 2), getArg(q, 0), k)) { + if (mb->errors || setPartnr(c, ml, getArg(q, 2), getArg(q, 0), k)) { freeInstruction(r); return -1; } @@ -863,9 +863,9 @@ mat_join2(Client c, MalBlkPtr mb, InstrP pushInstruction(mb, q); if (mb->errors - || propagatePartnr(ml, getArg(mat[m].mi, k), getArg(q, 0), + || propagatePartnr(c, ml, getArg(mat[m].mi, k), getArg(q, 0), nr) - || propagatePartnr(ml, getArg(mat[n].mi, j), getArg(q, 1), + || propagatePartnr(c, ml, getArg(mat[n].mi, j), getArg(q, 1), nr)) { freeInstruction(r); freeInstruction(l); @@ -912,8 +912,8 @@ mat_join2(Client c, MalBlkPtr mb, InstrP pushInstruction(mb, q); if (mb->errors - || propagatePartnr(ml, getArg(mat[mv].mi, k), getArg(q, av), k) - || propagatePartnr(ml, getArg(p, p->retc + bv), getArg(q, bv), + || propagatePartnr(c, ml, getArg(mat[mv].mi, k), getArg(q, av), k) + || propagatePartnr(c, ml, getArg(p, p->retc + bv), getArg(q, bv), k)) { freeInstruction(l); freeInstruction(r); @@ -975,8 +975,8 @@ mat_rangejoin(Client c, MalBlkPtr mb, In getArg(q, 4) = getArg(mat[n].mi, k); pushInstruction(mb, q); - if (mb->errors || propagatePartnr(ml, getArg(mat[m].mi, k), getArg(q, 0), nr) - || propagatePartnr(ml, getArg(mat[n].mi, k), getArg(q, 1), nr)) { + if (mb->errors || propagatePartnr(c, ml, getArg(mat[m].mi, k), getArg(q, 0), nr) + || propagatePartnr(c, ml, getArg(mat[n].mi, k), getArg(q, 1), nr)) { freeInstruction(r); freeInstruction(l); return -1; @@ -1111,9 +1111,9 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb, pushInstruction(mb, q); if (mb->errors - || propagatePartnr(ml, getArg(mat[mv1].mi, k), getArg(q, 0), + || propagatePartnr(cntxt, ml, getArg(mat[mv1].mi, k), getArg(q, 0), nr) - || propagatePartnr(ml, getArg(mat[mv2].mi, j), getArg(q, 1), + || propagatePartnr(cntxt, ml, getArg(mat[mv2].mi, j), getArg(q, 1), nr)) { freeInstruction(r); freeInstruction(l); @@ -1157,9 +1157,9 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb, getArg(q, p->retc + first + j) = getArg(mat[mats[first + j]].mi, k); } if (mb->errors - || propagatePartnr(ml, getArg(mat[mv].mi, k), + || propagatePartnr(cntxt, ml, getArg(mat[mv].mi, k), getArg(q, (first != 0)), k) - || propagatePartnr(ml, + || propagatePartnr(cntxt, ml, getArg(p, p->retc + (first) ? nr_mats : 0), getArg(q, (first == 0)), k)) { freeInstruction(q); @@ -1421,7 +1421,7 @@ group_by_ext(matlist_t *ml, int g) */ static int -mat_group_project(MalBlkPtr mb, InstrPtr p, matlist_t *ml, int e, int a) +mat_group_project(Client c, MalBlkPtr mb, InstrPtr p, matlist_t *ml, int e, int a) { int tp = getArgType(mb, p, 0), k; mat_t *mat = ml->v; @@ -1452,7 +1452,7 @@ mat_group_project(MalBlkPtr mb, InstrPtr freeInstruction(ai1); return -1; } - if (setPartnr(ml, getArg(mat[a].mi, k), getArg(q, 0), k)) { + if (setPartnr(c, ml, getArg(mat[a].mi, k), getArg(q, 0), k)) { freeInstruction(ai1); return -1; } @@ -1806,9 +1806,9 @@ mat_group_new(Client c, MalBlkPtr mb, In getArg(q, 2) = newTmpVariable(mb, tp2); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org