Changeset: 559b47b9606b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=559b47b9606b Modified Files: monetdb5/mal/mal_instruction.c sql/backends/monet5/sql_gencode.c Branch: Jan2014 Log Message:
merger diffs (truncated from 1665 to 300 lines): diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c --- a/monetdb5/mal/mal_instruction.c +++ b/monetdb5/mal/mal_instruction.c @@ -1579,6 +1579,10 @@ pushArgument(MalBlkPtr mb, InstrPtr p, i { if (p == NULL) return NULL; + if (varid < 0) { + freeInstruction(p); + return NULL; + } assert(varid >= 0); if (p->argc + 1 == p->maxarg) { InstrPtr pn; diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -576,15 +576,20 @@ static int q = newStmt2(mb, mod, name); q = pushArgument(mb, q, o1); + if (q == NULL) + return -1; return getDestVar(q); } -static void +static int dump_1(backend *sql, MalBlkPtr mb, stmt *s, char *mod, char *name) { int o1 = _dumpstmt(sql, mb, s->op1); + if (o1 < 0) + return -1; s->nr = _dump_1(mb, mod, name, o1); + return s->nr; } static int @@ -595,29 +600,43 @@ static int q = newStmt2(mb, mod, name); q = pushArgument(mb, q, o1); q = pushArgument(mb, q, o2); + if (q == NULL) + return -1; return getDestVar(q); } -static void +static int dump_2(backend *sql, MalBlkPtr mb, stmt *s, char *mod, char *name) { int o1 = _dumpstmt(sql, mb, s->op1); int o2 = _dumpstmt(sql, mb, s->op2); + if ((o1 = _dumpstmt(sql, mb, s->op1)) < 0) + return -1; + if ((o2 = _dumpstmt(sql, mb, s->op2)) < 0) + return -1; s->nr = _dump_2(mb, mod, name, o1, o2); + return s->nr; } -static void +static int dump_2_(backend *sql, MalBlkPtr mb, stmt *s, char *mod, char *name) { InstrPtr q; - int o1 = _dumpstmt(sql, mb, s->op1); - int o2 = _dumpstmt(sql, mb, s->op2); + int o1, o2; + + if ((o1 = _dumpstmt(sql, mb, s->op1)) < 0) + return -1; + if ((o2 = _dumpstmt(sql, mb, s->op2)) < 0) + return -1; q = newStmt1(mb, mod, name); q = pushArgument(mb, q, o1); q = pushArgument(mb, q, o2); + if (q == NULL) + return -1; s->nr = getDestVar(q); + return 0; } static InstrPtr @@ -626,6 +645,8 @@ multiplex2(MalBlkPtr mb, char *mod, char InstrPtr q; q = newStmt(mb, "mal", "multiplex"); + if (q == NULL) + return NULL; setVarType(mb, getArg(q, 0), newBatType(TYPE_oid, rtype)); setVarUDFtype(mb, getArg(q, 0)); q = pushStr(mb, q, convertMultiplexMod(mod, name)); @@ -635,16 +656,6 @@ multiplex2(MalBlkPtr mb, char *mod, char return q; } -static InstrPtr -multiplexN(MalBlkPtr mb, char *mod, char *name) -{ - InstrPtr q = NULL; - - if (strcmp(name, "rotate_xor_hash") == 0 && strcmp(mod, "calc") == 0) - q = newStmt(mb, "mkey", "bulk_rotate_xor_hash"); - return q; -} - #define SMALLBUFSIZ 64 static int dump_joinN(backend *sql, MalBlkPtr mb, stmt *s) @@ -725,6 +736,8 @@ static int switch (s->type) { case st_none:{ q = newAssignment(mb); + if (q == NULL) + return -1; s->nr = getDestVar(q); (void) pushInt(mb, q, 1); } break; @@ -736,6 +749,8 @@ static int q = newStmt1(mb, sqlRef, "getVariable"); q = pushArgument(mb, q, sql->mvc_var); q = pushStr(mb, q, s->op1->op4.aval->data.val.sval); + if (q == NULL) + return -1; setVarType(mb, getArg(q, 0), tt); setVarUDFtype(mb, getArg(q, 0)); } else if ((s->flag & VAR_DECLARE) == 0) { @@ -744,6 +759,8 @@ static int (void) snprintf(buf, MAXIDENTLEN, "A%s", s->op1->op4.aval->data.val.sval); q = newAssignment(mb); q = pushArgumentId(mb, q, buf); + if (q == NULL) + return -1; } else { int tt = tail_type(s)->type->localtype; char *buf = GDKmalloc(MAXIDENTLEN); @@ -757,10 +774,14 @@ static int } (void) snprintf(buf, MAXIDENTLEN, "A%s", s->op1->op4.aval->data.val.sval); q = newInstruction(mb, ASSIGNsymbol); + if (q == NULL) + return -1; q->argc = q->retc = 0; q = pushArgumentId(mb, q, buf); q = pushNil(mb, q, tt); pushInstruction(mb, q); + if (q == NULL) + return -1; q->retc++; } } else { @@ -773,6 +794,8 @@ static int (void) snprintf(buf, SMALLBUFSIZ, "A%d", s->flag); q = pushArgumentId(mb, q, buf); } + if (q == NULL) + return -1; } s->nr = getDestVar(q); } break; @@ -781,9 +804,15 @@ static int int tt = s->op4.typeval.type->localtype; int val = _dumpstmt(sql, mb, s->op1); + if (val < 0) + return -1; q = newStmt1(mb, sqlRef, "single"); + if (q == NULL) + return -1; setVarType(mb, getArg(q, 0), newBatType(ht, tt)); q = pushArgument(mb, q, val); + if (q == NULL) + return -1; s->nr = getDestVar(q); } break; case st_temp:{ @@ -791,10 +820,14 @@ static int int tt = s->op4.typeval.type->localtype; q = newStmt1(mb, batRef, "new"); + if (q == NULL) + return -1; setVarType(mb, getArg(q, 0), newBatType(ht, tt)); setVarUDFtype(mb, getArg(q, 0)); q = pushType(mb, q, ht); q = pushType(mb, q, tt); + if (q == NULL) + return -1; s->nr = getDestVar(q); } break; @@ -804,11 +837,15 @@ static int sql_table *t = s->op4.tval; q = newStmt1(mb, sqlRef, "tid"); + if (q == NULL) + return -1; setVarType(mb, getArg(q, 0), newBatType(ht, tt)); setVarUDFtype(mb, getArg(q, 0)); q = pushArgument(mb, q, sql->mvc_var); q = pushSchema(mb, q, t); q = pushStr(mb, q, t->base.name); + if (q == NULL) + return -1; s->nr = getDestVar(q); } break; @@ -818,6 +855,8 @@ static int sql_table *t = s->op4.cval->t; q = newStmt2(mb, sqlRef, bindRef); + if (q == NULL) + return -1; if (s->flag == RD_UPD) { q = pushReturn(mb, q, newTmpVariable(mb, newBatType(ht, tt))); } else @@ -827,6 +866,8 @@ static int q = pushStr(mb, q, t->base.name); q = pushStr(mb, q, s->op4.cval->base.name); q = pushInt(mb, q, s->flag); + if (q == NULL) + return -1; s->nr = getDestVar(q); if (s->flag == RD_UPD) { @@ -841,6 +882,8 @@ static int sql_table *t = s->op4.idxval->t; q = newStmt2(mb, sqlRef, bindidxRef); + if (q == NULL) + return -1; if (s->flag == RD_UPD) { q = pushReturn(mb, q, newTmpVariable(mb, newBatType(ht, tt))); } else @@ -850,6 +893,8 @@ static int q = pushStr(mb, q, t->base.name); q = pushStr(mb, q, s->op4.idxval->base.name); q = pushInt(mb, q, s->flag); + if (q == NULL) + return -1; s->nr = getDestVar(q); if (s->flag == RD_UPD) { @@ -859,36 +904,49 @@ static int } break; case st_const:{ - if (s->op2) - dump_2(sql, mb, s, algebraRef, projectRef); - else - dump_1(sql, mb, s, algebraRef, projectRef); + if (s->op2) { + if (dump_2(sql, mb, s, algebraRef, projectRef) < 0) + return -1; + } else { + if (dump_1(sql, mb, s, algebraRef, projectRef) < 0) + return -1; + } } break; case st_mark:{ - dump_2(sql, mb, s, algebraRef, markTRef); + if (dump_2(sql, mb, s, algebraRef, markTRef) < 0) + return -1; } break; case st_gen_group:{ - dump_2(sql, mb, s, algebraRef, groupbyRef); + if (dump_2(sql, mb, s, algebraRef, groupbyRef) < 0) + return -1; } break; case st_reverse:{ - dump_1(sql, mb, s, batRef, reverseRef); + if (dump_1(sql, mb, s, batRef, reverseRef) < 0) + return -1; } break; case st_mirror:{ - dump_1(sql, mb, s, batRef, mirrorRef); + if (dump_1(sql, mb, s, batRef, mirrorRef) < 0) + return -1; } break; case st_limit2: case st_limit:{ - int l = _dumpstmt(sql, mb, s->op1); - stmt *l1 = (s->type == st_limit2) ? s->op1->op4.lval->h->data : s->op1; - stmt *l2 = (s->type == st_limit2) ? s->op1->op4.lval->t->data : NULL; - int offset = _dumpstmt(sql, mb, s->op2); - int len = _dumpstmt(sql, mb, s->op3); - int la = (l2) ? l2->nr : 0; + stmt *l1, *l2; + int l, offset, len, la; + + if ((l = _dumpstmt(sql, mb, s->op1)) < 0) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list