Changeset: 84870491b10a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84870491b10a
Modified Files:
        monetdb5/modules/mal/projectionpath.c
Branch: default
Log Message:

Simplify code.


diffs (54 lines):

diff --git a/monetdb5/modules/mal/projectionpath.c 
b/monetdb5/modules/mal/projectionpath.c
--- a/monetdb5/modules/mal/projectionpath.c
+++ b/monetdb5/modules/mal/projectionpath.c
@@ -12,11 +12,10 @@
 str
 ALGprojectionpath(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       int i, top = 0;
-       bat *bid;
+       int i;
+       bat bid;
        bat *r = getArgReference_bat(stk, pci, 0);
        BAT *b, **joins = (BAT**)GDKzalloc(pci->argc * sizeof(BAT*)); 
-       int error = 0;
 
        (void) mb;
        (void) cntxt;
@@ -25,27 +24,20 @@ ALGprojectionpath(Client cntxt, MalBlkPt
        if ( joins == NULL)
                throw(MAL, "algebra.projectionpath", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        for (i = pci->retc; i < pci->argc; i++) {
-               bid = getArgReference_bat(stk, pci, i);
-               b = BATdescriptor(*bid);
-               if (b == NULL) {
-                       error = 1;
-               } else {
-                       if (i + 1 < pci->argc && ATOMtype(b->ttype) != 
TYPE_oid) {
-                               error = 1;
-                       }
-                       else joins[top++] = b;
-               }
-               if (error) {
-                       while (top-- > 0)
-                               BBPunfix(joins[top]->batCacheid);
+               bid = *getArgReference_bat(stk, pci, i);
+               b = BATdescriptor(bid);
+               if (b == NULL || (i + 1 < pci->argc && ATOMtype(b->ttype) != 
TYPE_oid)) {
+                       while (--i >= pci->retc)
+                               BBPunfix(joins[i - pci->retc]->batCacheid);
                        GDKfree(joins);
                        throw(MAL, "algebra.projectionpath", "%s", b ? 
SEMANTIC_TYPE_MISMATCH : INTERNAL_BAT_ACCESS);
                }
+               joins[i - pci->retc] = b;
        }
-       joins[top] = NULL;
+       joins[pci->argc - pci->retc] = NULL;
        b = BATprojectchain(joins);
-       while (top-- > 0)
-               BBPunfix(joins[top]->batCacheid);
+       for (i = pci->retc; i < pci->argc; i++)
+               BBPunfix(joins[i - pci->retc]->batCacheid);
        GDKfree(joins);
        if ( b)
                BBPkeepref( *r = b->batCacheid);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to