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

Reply via email to