Changeset: 4af7dcab3680 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4af7dcab3680
Added Files:
        sql/backends/monet5/sql_subquery.c
        sql/backends/monet5/sql_subquery.h
        sql/backends/monet5/sql_subquery.mal
Modified Files:
        MonetDB5/optimizer/opt_mitosis.c
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        sql/backends/monet5/Makefile.ag
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_rank.mal
Branch: gdk-tracer
Log Message:

Merge branch default


diffs (truncated from 2301 to 300 lines):

diff --git a/MonetDB5/optimizer/opt_mitosis.c b/MonetDB5/optimizer/opt_mitosis.c
--- a/MonetDB5/optimizer/opt_mitosis.c
+++ b/MonetDB5/optimizer/opt_mitosis.c
@@ -276,7 +276,6 @@ OPTmitosisImplementation(Client cntxt, M
                if (upd)
                        pushInstruction(mb, matr);
        }
-       assert (i == limit) /*TODO: remove after succesful nightly testweb 
run*/;
        for (; i<slimit; i++) 
                if (old[i])
                        freeInstruction(old[i]);
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -66,6 +66,7 @@ stdout of test 'MAL-signatures` in direc
 % clob,        clob,   clob,   clob,   clob # type
 % 11,  28,     364,    38,     874 # length
 [ "aggr",      "allnotequal",  "command aggr.allnotequal(l:bat[:any_1], 
r:bat[:any_1]):bit ",  "SQLallnotequal;",      "if all values in r are not 
equal to l return true, else if r has nil nil else false"   ]
+[ "aggr",      "anyequal",     "pattern aggr.anyequal(l:any_1, r:any_1):bit ", 
"CMDvarEQ;",    ""      ]
 [ "aggr",      "anyequal",     "command aggr.anyequal(l:bat[:any_1], 
r:bat[:any_1]):bit ",     "SQLanyequal;", "if any value in r is equal to l 
return true, else if r has nil nil else false" ]
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
bte"   ]
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
dbl"   ]
@@ -128,6 +129,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:any_1] ",     "AGGRmin3;",    ""      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2]):any_2 ",       
"ALGminany;",   "Return the lowest tail value or nil."  ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGminany_skipnil;",   "Return the lowest tail value or nil."  ]
+[ "aggr",      "not_anyequal", "pattern aggr.not_anyequal(l:any_1, 
r:any_1):bit ",     "CMDvarNE;",    ""      ]
 [ "aggr",      "not_exist",    "command aggr.not_exist(b:bat[:any_2]):bit ",   
"SQLnot_exist;",        ""      ]
 [ "aggr",      "not_exist",    "pattern aggr.not_exist(v:any_2):bit ", 
"SQLnot_exist_val;",    ""      ]
 [ "aggr",      "prod", "command aggr.prod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:bte] ",        "AGGRprod3_bte;",       "Grouped tail 
product on bte"   ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -70,6 +70,7 @@ stdout of test 'MAL-signatures` in direc
 % clob,        clob,   clob,   clob,   clob # type
 % 11,  28,     364,    38,     874 # length
 [ "aggr",      "allnotequal",  "command aggr.allnotequal(l:bat[:any_1], 
r:bat[:any_1]):bit ",  "SQLallnotequal;",      "if all values in r are not 
equal to l return true, else if r has nil nil else false"   ]
+[ "aggr",      "anyequal",     "pattern aggr.anyequal(l:any_1, r:any_1):bit ", 
"CMDvarEQ;",    ""      ]
 [ "aggr",      "anyequal",     "command aggr.anyequal(l:bat[:any_1], 
r:bat[:any_1]):bit ",     "SQLanyequal;", "if any value in r is equal to l 
return true, else if r has nil nil else false" ]
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
bte"   ]
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
dbl"   ]
@@ -136,6 +137,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:any_1] ",     "AGGRmin3;",    ""      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2]):any_2 ",       
"ALGminany;",   "Return the lowest tail value or nil."  ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGminany_skipnil;",   "Return the lowest tail value or nil."  ]
+[ "aggr",      "not_anyequal", "pattern aggr.not_anyequal(l:any_1, 
r:any_1):bit ",     "CMDvarNE;",    ""      ]
 [ "aggr",      "not_exist",    "command aggr.not_exist(b:bat[:any_2]):bit ",   
"SQLnot_exist;",        ""      ]
 [ "aggr",      "not_exist",    "pattern aggr.not_exist(v:any_2):bit ", 
"SQLnot_exist_val;",    ""      ]
 [ "aggr",      "prod", "command aggr.prod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:bte] ",        "AGGRprod3_bte;",       "Grouped tail 
product on bte"   ]
diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag
--- a/sql/backends/monet5/Makefile.ag
+++ b/sql/backends/monet5/Makefile.ag
@@ -47,7 +47,7 @@ lib__sql = {
                sql_orderidx.c sql_orderidx.h \
                wlr.c wlr.h \
                sql_datetrunc.c \
-               sql_rank.c sql_rank.h
+               sql_rank.c sql_rank.h sql_subquery.c sql_subquery.h
        # libmapi on Windows for mcrypt_*
        LIBS = ../../server/libsqlserver \
                ../../storage/libstore \
@@ -65,7 +65,7 @@ headers_mal = {
        DIR = libdir/monetdb5
        SOURCES = sql_aggr_bte.mal  sql_aggr_flt.mal sql_aggr_dbl.mal  
sql_aggr_int.mal  sql_aggr_lng.mal \
                sql_aggr_sht.mal  sql_decimal.mal  sql_inspect.mal wlr.mal \
-               sql_rank.mal sqlcatalog.mal sql_transaction.mal  sql.mal 
sql_session.mal
+               sql_subquery.mal sql_rank.mal sqlcatalog.mal 
sql_transaction.mal  sql.mal sql_session.mal
 }
 
 headers_mal_hge = {
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -2295,7 +2295,6 @@ BATleftproject(bat *Res, const bat *Col,
        return MAL_SUCCEED;
 }
 
-
 /* str SQLtid(bat *result, mvc *m, str *sname, str *tname) */
 str
 SQLtid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -3437,756 +3436,6 @@ mvc_bin_import_table_wrap(Client cntxt, 
 }
 
 str
-zero_or_one_error(ptr ret, const bat *bid, const bit *err)
-{
-       BAT *b;
-       BUN c;
-       size_t _s;
-       const void *p;
-
-       if ((b = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "zero_or_one", SQLSTATE(HY005) "Cannot access column 
descriptor");
-       }
-       c = BATcount(b);
-       if (c == 0) {
-               p = ATOMnilptr(b->ttype);
-       } else if (c == 1 || (c > 1 && *err == false)) {
-               BATiter bi = bat_iterator(b);
-               p = BUNtail(bi, 0);
-       } else {
-               p = NULL;
-               BBPunfix(b->batCacheid);
-               throw(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){
-                       BBPunfix(b->batCacheid);
-                       throw(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");
-               }
-       } else if (_s == 4) {
-               *(int *) ret = *(int *) p;
-       } else if (_s == 1) {
-               *(bte *) ret = *(bte *) p;
-       } else if (_s == 2) {
-               *(sht *) ret = *(sht *) p;
-       } else if (_s == 8) {
-               *(lng *) ret = *(lng *) p;
-#ifdef HAVE_HGE
-       } else if (_s == 16) {
-               *(hge *) ret = *(hge *) p;
-#endif
-       } else {
-               memcpy(ret, p, _s);
-       }
-       BBPunfix(b->batCacheid);
-       return MAL_SUCCEED;
-}
-
-str
-zero_or_one_error_bat(ptr ret, const bat *bid, const bat *err)
-{
-       bit t = FALSE;
-       (void)err;
-       return zero_or_one_error(ret, bid, &t);
-}
-
-str
-zero_or_one(ptr ret, const bat *bid)
-{
-       bit t = TRUE;
-       return zero_or_one_error(ret, bid, &t);
-}
-
-str
-SQLsubzero_or_one(bat *ret, const bat *bid, const bat *gid, const bat *eid, 
bit *no_nil)
-{
-       gdk_return r;
-       BAT *ng = NULL, *h = NULL, *g, *b;
-
-       (void)no_nil;
-       (void)eid;
-
-       g = gid ? BATdescriptor(*gid) : NULL;
-       if (g == NULL) {
-               if (g)
-                       BBPunfix(g->batCacheid);
-               throw(MAL, "sql.subzero_or_one", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-       }
-
-       if ((r = BATgroup(&ng, NULL, &h, g, NULL, NULL, NULL, NULL)) == 
GDK_SUCCEED) {
-               lng max = 0;
-
-               if (ng)
-                       BBPunfix(ng->batCacheid);
-               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");
-
-       }
-       BBPunfix(g->batCacheid);
-       if (r == GDK_SUCCEED) {
-               b = bid ? BATdescriptor(*bid) : NULL;
-               BBPkeepref(*ret = b->batCacheid);
-       }
-       return MAL_SUCCEED;
-}
-
-str
-SQLall(ptr ret, const bat *bid)
-{
-       BAT *b;
-       BUN c, _s;
-       const void *p;
-
-       if ((b = BATdescriptor(*bid)) == NULL) {
-               throw(SQL, "all", SQLSTATE(HY005) "Cannot access column 
descriptor");
-       }
-       c = BATcount(b);
-       if (c == 0) {
-               p = ATOMnilptr(b->ttype);
-       } else if (c == 1 || (b->tsorted && b->trevsorted)) {
-               BATiter bi = bat_iterator(b);
-               p = BUNtail(bi, 0);
-       } else if (b->ttype == TYPE_void && is_oid_nil(b->tseqbase)) {
-               p = ATOMnilptr(b->ttype);
-       } else {
-               BUN q, r;
-               int (*ocmp) (const void *, const void *);
-               const void *n = ATOMnilptr(b->ttype);
-               BATiter bi = bat_iterator(b);
-               r = BUNlast(b);
-               p = BUNtail(bi, 0);
-               ocmp = ATOMcompare(b->ttype);
-               for (q = 1; q < r; q++) {
-                       const void *c = BUNtail(bi, q);
-                       if (ocmp(p, c) != 0) {
-                               if (ocmp(n, c) != 0) 
-                                       p = ATOMnilptr(b->ttype);
-                               break;
-                       }
-               }
-       }
-       _s = ATOMsize(ATOMtype(b->ttype));
-       if (ATOMextern(b->ttype)) {
-               _s = ATOMlen(ATOMtype(b->ttype), p);
-               *(ptr *) ret = GDKmalloc(_s);
-               if(*(ptr *) ret == NULL){
-                       BBPunfix(b->batCacheid);
-                       throw(SQL, "SQLall", 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");
-               }
-       } else if (_s == 4) {
-               *(int *) ret = *(int *) p;
-       } else if (_s == 1) {
-               *(bte *) ret = *(bte *) p;
-       } else if (_s == 2) {
-               *(sht *) ret = *(sht *) p;
-       } else if (_s == 8) {
-               *(lng *) ret = *(lng *) p;
-#ifdef HAVE_HGE
-       } else if (_s == 16) {
-               *(hge *) ret = *(hge *) p;
-#endif
-       } else {
-               memcpy(ret, p, _s);
-       }
-       BBPunfix(b->batCacheid);
-       return MAL_SUCCEED;
-}
-
-str
-SQLall_grp(bat *ret, const bat *bid, const bat *gp, const bat *gpe, bit 
*no_nil)
-{
-       BAT *l, *g, *e, *res;
-       BATiter li;
-       ssize_t p, *pos = NULL;
-       int error = 0, has_nil = 0;
-       int (*ocmp) (const void *, const void *);
-
-       (void)no_nil;
-       if ((l = BATdescriptor(*bid)) == NULL) {
-               throw(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");
-       }
-       if ((e = BATdescriptor(*gpe)) == NULL) {
-               BBPunfix(l->batCacheid);
-               BBPunfix(g->batCacheid);
-               throw(SQL, "all =", SQLSTATE(HY005) "Cannot access column 
descriptor");
-       }
-       li = bat_iterator(l);
-       ocmp = ATOMcompare(l->ttype);
-       if (BATcount(g) > 0) {
-               BUN q, o, s, offset = 0;
-               BATiter gi = bat_iterator(g);
-
-               pos = GDKmalloc(sizeof(BUN)*BATcount(e)); 
-               for (s = 0; s < BATcount(e); s++) 
-                       pos[s] = -1;
-
-               offset = g->hseqbase - l->hseqbase;
-               o = BUNlast(g);
-               for (q = offset, s = 0; s < o; q++, s++) {
-                       oid id = *(oid*)BUNtail(gi, s);
-                       if (pos[id] == -2)
-                               continue;
-                       else if (pos[id] == -1)
-                               pos[id] = q;
-                       else {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to