Changeset: 3f2a75979d98 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3f2a75979d98
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_statement.c
Branch: Jun2023
Log Message:

Either push an instruction or free it.  Not both.


diffs (truncated from 897 to 300 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2336,6 +2336,10 @@ rel2bin_table(backend *be, sql_rel *rel,
                                        q = pushStr(be->mb, q, mod);
                                        q = pushStr(be->mb, q, fcn);
                                        psub = stmt_direct_func(be, q);
+                                       if (psub == NULL) {
+                                               freeInstruction(q);
+                                               return NULL;
+                                       }
 
                                        if (ids) /* push input rowids column */
                                                q = pushArgument(be->mb, q, 
ids->nr);
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -215,7 +215,6 @@ stmt_group(backend *be, stmt *s, stmt *g
        q = pushArgument(mb, q, s->nr);
        if (grp)
                q = pushArgument(mb, q, grp->nr);
-       pushInstruction(mb, q);
        if (q) {
                stmt *ns = stmt_create(be->mvc->sa, st_group);
                if (ns == NULL) {
@@ -234,6 +233,7 @@ stmt_group(backend *be, stmt *s, stmt *g
                ns->key = 0;
                ns->q = q;
                ns->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return ns;
        }
        return NULL;
@@ -254,7 +254,6 @@ stmt_unique(backend *be, stmt *s)
 
        q = pushArgument(mb, q, s->nr);
        q = pushNil(mb, q, TYPE_bat); /* candidate list */
-       pushInstruction(mb, q);
        if (q) {
                stmt *ns = stmt_create(be->mvc->sa, st_unique);
                if (ns == NULL) {
@@ -267,6 +266,7 @@ stmt_unique(backend *be, stmt *s)
                ns->key = 1;
                ns->q = q;
                ns->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return ns;
        }
        return NULL;
@@ -332,7 +332,6 @@ stmt_var(backend *be, const char *sname,
                if (q == NULL)
                        return NULL;
                setVarType(mb, getArg(q, 0), tt);
-               pushInstruction(mb, q);
        } else if (!declare) {
                char levelstr[16];
 
@@ -344,7 +343,6 @@ stmt_var(backend *be, const char *sname,
                stpcpy(stpcpy(stpcpy(stpcpy(buf, "A"), levelstr), "%"), 
varname); /* mangle variable name */
                q = newAssignment(mb);
                q = pushArgumentId(mb, q, buf);
-               pushInstruction(mb, q);
        } else {
                int tt = t->type->localtype;
                char levelstr[16];
@@ -363,7 +361,6 @@ stmt_var(backend *be, const char *sname,
                q->argc = q->retc = 0;
                q = pushArgumentId(mb, q, buf);
                q = pushNil(mb, q, tt);
-               pushInstruction(mb, q);
                if (q == NULL)
                        return NULL;
                q->retc++;
@@ -383,6 +380,7 @@ stmt_var(backend *be, const char *sname,
                s->key = 1;
                s->q = q;
                s->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return s;
        }
        return NULL;
@@ -392,7 +390,6 @@ stmt *
 stmt_vars(backend *be, const char *varname, sql_table *t, int declare, int 
level)
 {
        MalBlkPtr mb = be->mb;
-       InstrPtr q = NULL;
        int *l;
 
        (void)varname;
@@ -401,7 +398,6 @@ stmt_vars(backend *be, const char *varna
                stmt *s = stmt_create(be->mvc->sa, st_var);
 
                if (s == NULL) {
-                       freeInstruction(q);
                        return NULL;
                }
 
@@ -430,7 +426,6 @@ stmt_varnr(backend *be, int nr, sql_subt
 
        (void) snprintf(buf, sizeof(buf), "A%d", nr);
        q = pushArgumentId(mb, q, buf);
-       pushInstruction(mb, q);
        if (q) {
                stmt *s = stmt_create(be->mvc->sa, st_var);
                if (s == NULL) {
@@ -447,6 +442,7 @@ stmt_varnr(backend *be, int nr, sql_subt
                s->key = 1;
                s->q = q;
                s->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return s;
        }
        return NULL;
@@ -491,7 +487,6 @@ stmt_temp(backend *be, sql_subtype *t)
                return NULL;
        setVarType(mb, getArg(q, 0), newBatType(tt));
        q = pushType(mb, q, tt);
-       pushInstruction(mb, q);
        if (q) {
                stmt *s = stmt_create(be->mvc->sa, st_temp);
 
@@ -503,6 +498,7 @@ stmt_temp(backend *be, sql_subtype *t)
                s->nrcols = 1;
                s->q = q;
                s->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return s;
        }
        return NULL;
@@ -555,7 +551,6 @@ stmt_tid(backend *be, sql_table *t, int 
        q = pushStr(mb, q, t->base.name);
        if (q == NULL)
                return NULL;
-       pushInstruction(mb, q);
        if (t && isTable(t) && partition) {
                sql_trans *tr = be->mvc->session->tr;
                sqlstore *store = tr->store;
@@ -574,6 +569,7 @@ stmt_tid(backend *be, sql_table *t, int 
        s->nrcols = 1;
        s->nr = getDestVar(q);
        s->q = q;
+       pushInstruction(mb, q);
        return s;
 }
 
@@ -644,7 +640,6 @@ stmt_bat(backend *be, sql_column *c, int
        q = pushArgument(mb, q, getIntConstant(mb,access));
        if (q == NULL)
                return NULL;
-       pushInstruction(mb, q);
 
        if (access == RD_UPD_ID) {
                setVarType(mb, getArg(q, 1), newBatType(tt));
@@ -673,6 +668,7 @@ stmt_bat(backend *be, sql_column *c, int
        s->q = q;
        s->tname = c->t->base.name;
        s->cname = c->base.name;
+       pushInstruction(mb, q);
        return s;
 }
 
@@ -699,7 +695,6 @@ stmt_idxbat(backend *be, sql_idx *i, int
        q = pushArgument(mb, q, getIntConstant(mb, access));
        if (q == NULL)
                return NULL;
-       pushInstruction(mb, q);
 
        if (access == RD_UPD_ID) {
                setVarType(mb, getArg(q, 1), newBatType(tt));
@@ -728,6 +723,7 @@ stmt_idxbat(backend *be, sql_idx *i, int
        s->q = q;
        s->tname = i->t->base.name;
        s->cname = i->base.name;
+       pushInstruction(mb, q);
        return s;
 }
 
@@ -757,7 +753,6 @@ stmt_append_col(backend *be, sql_column 
                q = pushBit(mb, q, TRUE);
                if (q)
                        getArg(q,0) = l[c->colnr+1];
-               pushInstruction(mb, q);
        } else if (!fake) {     /* fake append */
                if (offset == NULL || offset->nr < 0)
                        return NULL;
@@ -781,7 +776,6 @@ stmt_append_col(backend *be, sql_column 
                        return NULL;
                if (mvc_var_update != NULL)
                        *mvc_var_update = getDestVar(q);
-               pushInstruction(mb, q);
        } else {
                return b;
        }
@@ -797,6 +791,7 @@ stmt_append_col(backend *be, sql_column 
                s->op4.cval = c;
                s->q = q;
                s->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return s;
        }
        return NULL;
@@ -827,7 +822,6 @@ stmt_append_idx(backend *be, sql_idx *i,
        if (q == NULL)
                return NULL;
        be->mvc_var = getDestVar(q);
-       pushInstruction(mb, q);
 
        stmt *s = stmt_create(be->mvc->sa, st_append_idx);
        if (s == NULL) {
@@ -840,6 +834,7 @@ stmt_append_idx(backend *be, sql_idx *i,
        s->op4.idxval = i;
        s->q = q;
        s->nr = getDestVar(q);
+       pushInstruction(mb, q);
        return s;
 }
 
@@ -859,7 +854,6 @@ stmt_update_col(backend *be, sql_column 
                q = pushArgument(mb, q, l[c->colnr+1]);
                q = pushArgument(mb, q, tids->nr);
                q = pushArgument(mb, q, upd->nr);
-               pushInstruction(mb, q);
        } else {
                q = newStmt(mb, sqlRef, updateRef);
                q = pushArgument(mb, q, be->mvc_var);
@@ -874,7 +868,6 @@ stmt_update_col(backend *be, sql_column 
                if (q == NULL)
                        return NULL;
                be->mvc_var = getDestVar(q);
-               pushInstruction(mb, q);
        }
        if (q){
                stmt *s = stmt_create(be->mvc->sa, st_update_col);
@@ -888,6 +881,7 @@ stmt_update_col(backend *be, sql_column 
                s->op4.cval = c;
                s->q = q;
                s->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return s;
        }
        return NULL;
@@ -916,7 +910,6 @@ stmt_update_idx(backend *be, sql_idx *i,
        if (q == NULL)
                return NULL;
        be->mvc_var = getDestVar(q);
-       pushInstruction(mb, q);
        stmt *s = stmt_create(be->mvc->sa, st_update_idx);
        if (s == NULL) {
                freeInstruction(q);
@@ -928,6 +921,7 @@ stmt_update_idx(backend *be, sql_idx *i,
        s->op4.idxval = i;
        s->q = q;
        s->nr = getDestVar(q);
+       pushInstruction(mb, q);
        return s;
 }
 
@@ -959,7 +953,6 @@ stmt_delete(backend *be, sql_table *t, s
                        return NULL;
                be->mvc_var = getDestVar(q);
        }
-       pushInstruction(mb, q);
        if (q) {
                stmt *s = stmt_create(be->mvc->sa, st_delete);
                if (s == NULL) {
@@ -971,6 +964,7 @@ stmt_delete(backend *be, sql_table *t, s
                s->op4.tval = t;
                s->q = q;
                s->nr = getDestVar(q);
+               pushInstruction(mb, q);
                return s;
        }
        return NULL;
@@ -991,7 +985,6 @@ stmt_const(backend *be, stmt *s, stmt *v
        if (q) {
                stmt *ns = stmt_create(be->mvc->sa, st_const);
                if (ns == NULL) {
-                       freeInstruction(q);
                        return NULL;
                }
 
@@ -1021,7 +1014,6 @@ stmt_gen_group(backend *be, stmt *gids, 
        if (q) {
                stmt *ns = stmt_create(be->mvc->sa, st_gen_group);
                if (ns == NULL) {
-                       freeInstruction(q);
                        return NULL;
                }
 
@@ -1050,7 +1042,6 @@ stmt_mirror(backend *be, stmt *s)
        if (q) {
                stmt *ns = stmt_create(be->mvc->sa, st_mirror);
                if (ns == NULL) {
-                       freeInstruction(q);
                        return NULL;
                }
 
@@ -1225,7 +1216,6 @@ stmt_limit(backend *be, stmt *col, stmt 
 
        stmt *ns = stmt_create(be->mvc->sa, piv?st_limit2:st_limit);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to