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