Changeset: 465a541f25f5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=465a541f25f5
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_subquery.c
        sql/server/rel_unnest.c
        sql/test/remote/Tests/ssbm.stable.out
        sql/test/remote/Tests/ssbm.stable.out.int128
Branch: sq2default
Log Message:

merged, but reverted change to exp_bin (ie don't generate a st_table for single 
values)


diffs (truncated from 692 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
@@ -505,6 +505,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
                        /* handle table returning functions */
                        if (l->type == e_psm && l->flag & PSM_REL) {
                                stmt *lst = r->op1;
+                               //if (r->type == st_table && lst->nrcols == 0 
&& lst->key) {
                                if (r->type == st_table && lst->nrcols == 0 && 
lst->key && e->card > CARD_ATOM) {
                                        node *n;
                                        list *l = sa_list(sql->sa);
@@ -1395,7 +1396,8 @@ rel2bin_basetable(backend *be, sql_rel *
 
        if (!t && c)
                t = c->t;
-               dels = stmt_tid(be, t, rel->flag == REL_PARTITION);
+
+       dels = stmt_tid(be, t, rel->flag == REL_PARTITION);
 
        /* add aliases */
        assert(rel->exps);
@@ -1411,7 +1413,7 @@ rel2bin_basetable(backend *be, sql_rel *
                        const char *cname = cexp->r;
                        list *l = sa_list(sql->sa);
 
-                       c = find_sql_column(t, cname);
+                       c = find_sql_column(t, cname);
                        s = stmt_col(be, c, dels);
                        append(l, s);
                        if (exps->h->next) {
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
@@ -547,9 +547,9 @@ static int
 
        /* catch exceptions */
        p = newCatchStmt(curBlk,"MALexception");
-        p = newExitStmt(curBlk,"MALexception");
-        p = newCatchStmt(curBlk,"SQLexception");
-        p = newExitStmt(curBlk,"SQLexception");
+       p = newExitStmt(curBlk,"MALexception");
+       p = newCatchStmt(curBlk,"SQLexception");
+       p = newExitStmt(curBlk,"SQLexception");
        /* remote.disconnect(q); */
        p = newStmt(curBlk, remoteRef, disconnectRef);
        p = pushArgument(curBlk, p, q);
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
@@ -575,7 +575,7 @@ stmt_bat(backend *be, sql_column *c, int
                s->nr = l[c->colnr+1];
                return s;
        }
-               q = newStmt(mb, sqlRef, bindRef);
+       q = newStmt(mb, sqlRef, bindRef);
        if (q == NULL)
                return NULL;
        if (access == RD_UPD_ID) {
diff --git a/sql/backends/monet5/sql_subquery.c 
b/sql/backends/monet5/sql_subquery.c
--- a/sql/backends/monet5/sql_subquery.c
+++ b/sql/backends/monet5/sql_subquery.c
@@ -18,7 +18,7 @@ zero_or_one_error(ptr ret, const bat *bi
        const void *p;
 
        if ((b = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "zero_or_one", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.zero_or_one", SQLSTATE(HY005) "Cannot access 
column descriptor");
        }
        c = BATcount(b);
        if (c == 0) {
@@ -29,22 +29,22 @@ zero_or_one_error(ptr ret, const bat *bi
        } else {
                p = NULL;
                BBPunfix(b->batCacheid);
-               throw(SQL, "zero_or_one", SQLSTATE(21000) "Cardinality 
violation, scalar value expected");
+               throw(SQL, "sql.zero_or_one", SQLSTATE(21000) "Cardinality 
violation, scalar value expected");
        }
        _s = ATOMsize(ATOMtype(b->ttype));
        if (ATOMextern(b->ttype)) {
                _s = ATOMlen(ATOMtype(b->ttype), p);
                *(ptr *) ret = GDKmalloc(_s);
-               if(*(ptr *) ret == NULL){
+               if (*(ptr *) ret == NULL) {
                        BBPunfix(b->batCacheid);
-                       throw(SQL, "zero_or_one", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+                       throw(SQL, "sql.zero_or_one", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                }
                memcpy(*(ptr *) ret, p, _s);
        } else if (b->ttype == TYPE_bat) {
                bat bid = *(bat *) p;
                if((*(BAT **) ret = BATdescriptor(bid)) == NULL){
                        BBPunfix(b->batCacheid);
-                       throw(SQL, "zero_or_one", SQLSTATE(HY005) "Cannot 
access column descriptor");
+                       throw(SQL, "sql.zero_or_one", SQLSTATE(HY005) "Cannot 
access column descriptor");
                }
        } else if (_s == 4) {
                *(int *) ret = *(int *) p;
@@ -104,8 +104,7 @@ SQLsubzero_or_one(bat *ret, const bat *b
                BATmax(h, &max);
                BBPunfix(h->batCacheid);
                if (max != lng_nil && max > 1)
-                       throw(SQL, "assert", SQLSTATE(M0M29) "zero_or_one: 
cardinality violation, scalar expression expected");
-
+                       throw(SQL, "sql.subzero_or_one", SQLSTATE(M0M29) 
"zero_or_one: cardinality violation, scalar expression expected");
        }
        BBPunfix(g->batCacheid);
        if (r == GDK_SUCCEED) {
@@ -123,7 +122,7 @@ SQLall(ptr ret, const bat *bid)
        const void *p;
 
        if ((b = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "all", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.all", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        c = BATcount(b);
        if (c == 0) {
@@ -154,16 +153,16 @@ SQLall(ptr ret, const bat *bid)
        if (ATOMextern(b->ttype)) {
                _s = ATOMlen(ATOMtype(b->ttype), p);
                *(ptr *) ret = GDKmalloc(_s);
-               if(*(ptr *) ret == NULL){
+               if (*(ptr *) ret == NULL) {
                        BBPunfix(b->batCacheid);
-                       throw(SQL, "SQLall", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                       throw(SQL, "sql.all", SQLSTATE(HY001) MAL_MALLOC_FAIL);
                }
                memcpy(*(ptr *) ret, p, _s);
        } else if (b->ttype == TYPE_bat) {
                bat bid = *(bat *) p;
                if ((*(BAT **) ret = BATdescriptor(bid)) == NULL) {
                        BBPunfix(b->batCacheid);
-                       throw(SQL, "all", SQLSTATE(HY005) "Cannot access column 
descriptor");
+                       throw(SQL, "sql.all", SQLSTATE(HY005) "Cannot access 
column descriptor");
                }
        } else if (_s == 4) {
                *(int *) ret = *(int *) p;
@@ -195,16 +194,16 @@ SQLall_grp(bat *ret, const bat *bid, con
 
        (void)no_nil;
        if ((l = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((g = BATdescriptor(*gp)) == NULL) {
                BBPunfix(l->batCacheid);
-               throw(SQL, "all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((e = BATdescriptor(*gpe)) == NULL) {
                BBPunfix(l->batCacheid);
                BBPunfix(g->batCacheid);
-               throw(SQL, "all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        li = bat_iterator(l);
        ocmp = ATOMcompare(l->ttype);
@@ -212,7 +211,12 @@ SQLall_grp(bat *ret, const bat *bid, con
                BUN q, o, s, offset = 0;
                BATiter gi = bat_iterator(g);
 
-               pos = GDKmalloc(sizeof(BUN)*BATcount(e)); 
+               if ((pos = GDKmalloc(sizeof(BUN)*BATcount(e))) == NULL) {
+                       BBPunfix(l->batCacheid);
+                       BBPunfix(g->batCacheid);
+                       BBPunfix(e->batCacheid);
+                       throw(SQL, "sql.all =", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+               }
                for (s = 0; s < BATcount(e); s++) 
                        pos[s] = -1;
 
@@ -233,7 +237,15 @@ SQLall_grp(bat *ret, const bat *bid, con
                        }
                }
        }
-       res = COLnew(e->hseqbase, l->ttype, BATcount(e), TRANSIENT);
+
+       if ((res = COLnew(e->hseqbase, l->ttype, BATcount(e), TRANSIENT)) == 
NULL) {
+               BBPunfix(l->batCacheid);
+               BBPunfix(g->batCacheid);
+               BBPunfix(e->batCacheid);
+               GDKfree(pos);
+               throw(SQL, "sql.all =", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+       }
+
        const void *nilp = ATOMnilptr(l->ttype);
        for (p = 0; p < (ssize_t)BATcount(e) && !error; p++) {
                const void *v = nilp;
@@ -248,7 +260,7 @@ SQLall_grp(bat *ret, const bat *bid, con
        }
        GDKfree(pos);
        if (error)
-               throw(SQL, "all =", SQLSTATE(HY005) "all append failed");
+               throw(SQL, "sql.all =", SQLSTATE(HY005) "all append failed");
 
        res->hseqbase = g->hseqbase;
        res->tnil = (has_nil)?1:0;
@@ -268,12 +280,12 @@ SQLnil(bit *ret, const bat *bid)
        BAT *b;
 
        if ((b = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "all", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.nil", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        *ret = FALSE;
        if (BATcount(b) == 0)
                *ret = bit_nil;
-       if (BATcount(b) > 0) {
+       else {
                BUN q, o;
                int (*ocmp) (const void *, const void *);
                BATiter bi = bat_iterator(b);
@@ -303,18 +315,23 @@ SQLnil_grp(bat *ret, const bat *bid, con
 
        (void)no_nil;
        if ((l = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((g = BATdescriptor(*gp)) == NULL) {
                BBPunfix(l->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((e = BATdescriptor(*gpe)) == NULL) {
                BBPunfix(l->batCacheid);
                BBPunfix(g->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
-       res = BATconstant(0, TYPE_bit, &F, BATcount(e), TRANSIENT);
+       if ((res = BATconstant(0, TYPE_bit, &F, BATcount(e), TRANSIENT)) == 
NULL) {
+               BBPunfix(l->batCacheid);
+               BBPunfix(g->batCacheid);
+               BBPunfix(e->batCacheid);
+               throw(SQL, "sql.any =", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+       }
        BAThseqbase(res, e->hseqbase);
        offset = g->hseqbase - l->hseqbase;
        if (BATcount(g) > 0) {
@@ -386,11 +403,11 @@ SQLanyequal(bit *ret, const bat *bid1, c
        const void *p;
 
        if ((l = BATdescriptor(*bid1)) == NULL) {
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((r = BATdescriptor(*bid2)) == NULL) {
                BBPunfix(l->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        *ret = FALSE;
        if (BATcount(r) > 0) {
@@ -427,24 +444,30 @@ SQLanyequal_grp(bat *ret, const bat *bid
 
        (void)no_nil;
        if ((l = BATdescriptor(*bid1)) == NULL) {
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((r = BATdescriptor(*bid2)) == NULL) {
                BBPunfix(l->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((g = BATdescriptor(*gp)) == NULL) {
                BBPunfix(l->batCacheid);
                BBPunfix(r->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((e = BATdescriptor(*gpe)) == NULL) {
                BBPunfix(l->batCacheid);
                BBPunfix(r->batCacheid);
                BBPunfix(g->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
-       res = BATconstant(0, TYPE_bit, &F, BATcount(e), TRANSIENT);
+       if ((res = BATconstant(0, TYPE_bit, &F, BATcount(e), TRANSIENT)) == 
NULL) {
+               BBPunfix(l->batCacheid);
+               BBPunfix(r->batCacheid);
+               BBPunfix(g->batCacheid);
+               BBPunfix(e->batCacheid);
+               throw(SQL, "sql.any =", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+       }
        BAThseqbase(res, e->hseqbase);
        assert(BATcount(l) == BATcount(r));
        offset = g->hseqbase - l->hseqbase;
@@ -497,31 +520,38 @@ SQLanyequal_grp2(bat *ret, const bat *bi
 
        (void)no_nil;
        if ((l = BATdescriptor(*bid1)) == NULL) {
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
        }
        if ((r = BATdescriptor(*bid2)) == NULL) {
                BBPunfix(l->batCacheid);
-               throw(SQL, "any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
+               throw(SQL, "sql.any =", SQLSTATE(HY005) "Cannot access column 
descriptor");
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to