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

Reply via email to