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 -- [email protected]
To unsubscribe send an email to [email protected]