Changeset: 475d0fe9660a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=475d0fe9660a
Modified Files:
        monetdb5/modules/mal/batcalc.c
Branch: default
Log Message:

Allow nil:bat as argument for candidate list in batcalc.* operations.


diffs (173 lines):

diff --git a/monetdb5/modules/mal/batcalc.c b/monetdb5/modules/mal/batcalc.c
--- a/monetdb5/modules/mal/batcalc.c
+++ b/monetdb5/modules/mal/batcalc.c
@@ -60,19 +60,17 @@ CMDbatUNARY(MalStkPtr stk, InstrPtr pci,
                        BAT *(*batfunc)(BAT *, BAT *), const char *malfunc)
 {
        bat *bid;
-       BAT *bn, *b, *s, *t, *map;
+       BAT *bn, *b, *s = NULL, *t, *map;
 
        bid = (bat *) getArgReference(stk, pci, 1);
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
        if (pci->argc == 3) {
                bat *sid = (bat *) getArgReference(stk, pci, 2);
-               if ((s = BATdescriptor(*sid)) == NULL) {
+               if (*sid && (s = BATdescriptor(*sid)) == NULL) {
                        BBPreleaseref(b->batCacheid);
                        throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
                }
-       } else {
-               s = NULL;
        }
 
        if (!BAThdense(b)) {
@@ -109,19 +107,17 @@ CMDbatUNARY1(MalStkPtr stk, InstrPtr pci
                         BAT *(*batfunc)(BAT *, BAT *, int), const char 
*malfunc)
 {
        bat *bid;
-       BAT *bn, *b, *s, *t, *map;
+       BAT *bn, *b, *s = NULL, *t, *map;
 
        bid = (bat *) getArgReference(stk, pci, 1);
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
        if (pci->argc == 3) {
                bat *sid = (bat *) getArgReference(stk, pci, 2);
-               if ((s = BATdescriptor(*sid)) == NULL) {
+               if (*sid && (s = BATdescriptor(*sid)) == NULL) {
                        BBPreleaseref(b->batCacheid);
                        throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
                }
-       } else {
-               s = NULL;
        }
 
        if (!BAThdense(b)) {
@@ -338,17 +334,15 @@ CMDbatBINARY2(MalStkPtr stk, InstrPtr pc
                          int abort_on_error, const char *malfunc)
 {
        bat *bid;
-       BAT *bn, *b, *s, *t, *map;
+       BAT *bn, *b, *s = NULL, *t, *map;
        int tp1, tp2;
 
        tp1 = stk->stk[getArg(pci, 1)].vtype;
        tp2 = stk->stk[getArg(pci, 2)].vtype;
        if (pci->argc == 4) {
                bat *sid = (bat *) getArgReference(stk, pci, 3);
-               if ((s = BATdescriptor(*sid)) == NULL)
+               if (*sid && (s = BATdescriptor(*sid)) == NULL)
                        throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
-       } else {
-               s = NULL;
        }
 
        if (tp1 == TYPE_bat || isaBatType(tp1)) {
@@ -440,17 +434,15 @@ CMDbatBINARY1(MalStkPtr stk, InstrPtr pc
                          const char *malfunc)
 {
        bat *bid;
-       BAT *bn, *b, *s, *t, *map;
+       BAT *bn, *b, *s = NULL, *t, *map;
        int tp1, tp2;
 
        tp1 = stk->stk[getArg(pci, 1)].vtype;
        tp2 = stk->stk[getArg(pci, 2)].vtype;
        if (pci->argc == 4) {
                bat *sid = (bat *) getArgReference(stk, pci, 3);
-               if ((s = BATdescriptor(*sid)) == NULL)
+               if (*sid && (s = BATdescriptor(*sid)) == NULL)
                        throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
-       } else {
-               s = NULL;
        }
 
        if (tp1 == TYPE_bat || isaBatType(tp1)) {
@@ -540,17 +532,15 @@ CMDbatBINARY0(MalStkPtr stk, InstrPtr pc
                          const char *malfunc)
 {
        bat *bid;
-       BAT *bn, *b, *s, *t, *map;
+       BAT *bn, *b, *s = NULL, *t, *map;
        int tp1, tp2;
 
        tp1 = stk->stk[getArg(pci, 1)].vtype;
        tp2 = stk->stk[getArg(pci, 2)].vtype;
        if (pci->argc == 4) {
                bat *sid = (bat *) getArgReference(stk, pci, 3);
-               if ((s = BATdescriptor(*sid)) == NULL)
+               if (*sid && (s = BATdescriptor(*sid)) == NULL)
                        throw(MAL, malfunc, RUNTIME_OBJECT_MISSING);
-       } else {
-               s = NULL;
        }
 
        if (tp1 == TYPE_bat || isaBatType(tp1)) {
@@ -999,7 +989,7 @@ str
 CMDbatBETWEEN(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        bat *bid;
-       BAT *bn, *b, *lo = NULL, *hi = NULL, *s, *t, *map;
+       BAT *bn, *b, *lo = NULL, *hi = NULL, *s = NULL, *t, *map;
        int tp1, tp2, tp3;
 
        (void) cntxt;
@@ -1010,10 +1000,8 @@ CMDbatBETWEEN(Client cntxt, MalBlkPtr mb
        tp3 = stk->stk[getArg(pci, 3)].vtype;
        if (pci->argc == 5) {
                bat *sid = (bat *) getArgReference(stk, pci, 4);
-               if ((s = BATdescriptor(*sid)) == NULL)
+               if (*sid && (s = BATdescriptor(*sid)) == NULL)
                        throw(MAL, "batcalc.between", RUNTIME_OBJECT_MISSING);
-       } else {
-               s = NULL;
        }
 
        if (tp1 != TYPE_bat && !isaBatType(tp1))
@@ -1111,7 +1099,7 @@ CMDcalcavg(Client cntxt, MalBlkPtr mb, M
        dbl avg;
        BUN vals;
        bat *bid;
-       BAT *b, *s, *t;
+       BAT *b, *s = NULL, *t;
        int ret;
 
        (void) cntxt;
@@ -1122,12 +1110,10 @@ CMDcalcavg(Client cntxt, MalBlkPtr mb, M
                throw(MAL, "aggr.avg", RUNTIME_OBJECT_MISSING);
        if (pci->retc == pci->retc + 2) {
                bat *sid = (bat *) getArgReference(stk, pci, pci->retc + 1);
-               if ((s = BATdescriptor(*sid)) == NULL) {
+               if (*sid && (s = BATdescriptor(*sid)) == NULL) {
                        BBPreleaseref(b->batCacheid);
                        throw(MAL, "aggr.avg", RUNTIME_OBJECT_MISSING);
                }
-       } else {
-               s = NULL;
        }
        if (!BAThdense(b)) {
                t = BATmirror(BATmark(BATmirror(b), 0)); /* [dense,tail] */
@@ -1151,19 +1137,17 @@ static str
 CMDconvertbat(MalStkPtr stk, InstrPtr pci, int tp, int abort_on_error)
 {
        bat *bid;
-       BAT *b, *bn, *s, *t, *map;
+       BAT *b, *bn, *s = NULL, *t, *map;
 
        bid = (bat *) getArgReference(stk, pci, 1);
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, "batcalc.convert", RUNTIME_OBJECT_MISSING);
        if (pci->argc == 3) {
                bat *sid = (bat *) getArgReference(stk, pci, 2);
-               if ((s = BATdescriptor(*sid)) == NULL) {
+               if (*sid && (s = BATdescriptor(*sid)) == NULL) {
                        BBPreleaseref(b->batCacheid);
                        throw(MAL, "batcalc.convert", RUNTIME_OBJECT_MISSING);
                }
-       } else {
-               s = NULL;
        }
 
        if (!BAThdense(b)) {
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to