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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list