Changeset: 2fec8a7e4924 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2fec8a7e4924
Added Files:
sql/backends/monet5/Tests/rapi17.sql
Modified Files:
clients/Tests/SQL-dump.stable.out
clients/Tests/SQL-dump.stable.out.int128
clients/Tests/exports.stable.out
configure.ag
monetdb5/mal/mal_parser.c
monetdb5/modules/mal/Tests/remote12.mal
monetdb5/modules/mal/Tests/remote12.stable.out
monetdb5/modules/mal/bbp.c
monetdb5/modules/mal/bbp.h
monetdb5/modules/mal/bbp.mal
monetdb5/modules/mal/remote.c
monetdb5/optimizer/opt_multiplex.c
sql/backends/monet5/Tests/All
sql/backends/monet5/sql.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_upgrades.c
sql/scripts/25_debug.sql
sql/test/Tests/systemfunctions.stable.out
sql/test/Tests/systemfunctions.stable.out.int128
sql/test/leaks/Tests/check0.sql
sql/test/leaks/Tests/check0.stable.out.int128
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out.int128
sql/test/leaks/Tests/drop3.stable.out.int128
sql/test/leaks/Tests/select1.stable.out.int128
sql/test/leaks/Tests/select2.stable.out.int128
sql/test/leaks/Tests/temp1.stable.out.int128
sql/test/leaks/Tests/temp2.stable.out.int128
sql/test/leaks/Tests/temp3.stable.out.int128
Branch: profiler
Log Message:
Merge default
diffs (truncated from 353 to 300 lines):
diff --git a/clients/Tests/SQL-dump.stable.out
b/clients/Tests/SQL-dump.stable.out
--- a/clients/Tests/SQL-dump.stable.out
+++ b/clients/Tests/SQL-dump.stable.out
@@ -488,7 +488,7 @@ create function area(g geometry) returns
create function astext(g geometry) returns string external name geom."AsText";
-- The BAT buffer pool overview
create function sys.bbp ()
- returns table (id int, name string, htype string,
+ returns table (id int, name string,
ttype string, count bigint, refcnt int, lrefcnt int,
location string, heat int, dirty string,
status string, kind string)
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -995,7 +995,7 @@ str CMDbatSUB(Client cntxt, MalBlkPtr mb
str CMDbatSUBenlarge(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str CMDbatSUBsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
str CMDbatXOR(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str CMDbbp(bat *ID, bat *NS, bat *HT, bat *TT, bat *CNT, bat *REFCNT, bat
*LREFCNT, bat *LOCATION, bat *HEAT, bat *DIRTY, bat *STATUS, bat *KIND);
+str CMDbbp(bat *ID, bat *NS, bat *TT, bat *CNT, bat *REFCNT, bat *LREFCNT, bat
*LOCATION, bat *HEAT, bat *DIRTY, bat *STATUS, bat *KIND);
str CMDbbpCount(bat *ret);
str CMDbbpDirty(bat *ret);
str CMDbbpDiskSpace(lng *ret);
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -1870,8 +1870,8 @@ if test "x$have_pthread" != xno; then
save_LIBS="$LIBS"
save_CPPFLAGS="$CPPFLAGS"
case $GCC-$have_pthread-$CC_ver in
-
yes-auto-clang-5.*|yes-yes-clang-5.*|yes-auto-clang-6.*|yes-yes-clang-6.*)
- # clang 5.*/6.* (Xcode 6.0) does not
+
yes-auto-clang-5.*|yes-yes-clang-5.*|yes-auto-clang-6.*|yes-yes-clang-6.*|yes-auto-clang-7.*|yes-yes-clang-7.*)
+ # clang 5.*/6.*/7.* (Xcode 6.0) does not
# seem to have / require -pthread as compiler
# option; on Mac OS X Yosamite, "Apple LLVM
# version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)"
diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -685,7 +685,6 @@ parseTypeId(Client cntxt, int defaultTyp
advance(cntxt, 5);
if (currChar(cntxt) == ':') {
ht = simpleTypeId(cntxt);
- //kh = typeAlias(cntxt, ht);
if( ht != TYPE_oid){
parseError(cntxt, "':oid' expected\n");
return i;
@@ -727,10 +726,12 @@ parseTypeId(Client cntxt, int defaultTyp
return TYPE_bat;
}
// Headless definition of a column
- if (s[0] == ':' && s[1] == 'c' && s[2] == 'o' && s[3] == 'l' &&
!idCharacter[(int) s[4]]) {
+ if (s[0] == ':' && s[1] == 'c' && s[2] == 'o' && s[3] == 'l' && s[4] ==
'[') {
/* parse default for :col[:any] */
- advance(cntxt, 4);
- return newColumnType(TYPE_any);
+ advance(cntxt, 5);
+ skipSpace(cntxt);
+ tt = simpleTypeId(cntxt);
+ return newColumnType(tt);
}
if (currChar(cntxt) == ':') {
ht = simpleTypeId(cntxt);
diff --git a/monetdb5/modules/mal/Tests/remote12.mal
b/monetdb5/modules/mal/Tests/remote12.mal
--- a/monetdb5/modules/mal/Tests/remote12.mal
+++ b/monetdb5/modules/mal/Tests/remote12.mal
@@ -1,9 +1,9 @@
#causing a segfault
uri := sabaoth.getLocalConnectionURI();
conn:str := remote.connect(uri, "monetdb", "monetdb");
-e := nil:BAT;
+e := nil:bat[:oid,:int];
m:str := remote.put(conn, e);
io.print(m);
-v:BAT := remote.get(conn,m);
+v:bat[:oid,:int] := remote.get(conn,m);
io.print(v);
mdb.var();
diff --git a/monetdb5/modules/mal/Tests/remote12.stable.out
b/monetdb5/modules/mal/Tests/remote12.stable.out
--- a/monetdb5/modules/mal/Tests/remote12.stable.out
+++ b/monetdb5/modules/mal/Tests/remote12.stable.out
@@ -20,14 +20,14 @@ function user.main():void;
#causing a sigfault
uri := sabaoth.getLocalConnectionURI();
conn:str := remote.connect(uri,"monetdb","monetdb");
- e := nil:BAT;
+ e := nil:bat[:oid,:int];
m:str := remote.put(conn,e);
io.print(m);
- v:BAT := remote.get(conn,m);
+ v:bat[:oid,:int] := remote.get(conn,m);
io.print(v);
mdb.var();
end user.main;
-!MALException:remote.put:unsupported type: BAT
+
diff --git a/monetdb5/modules/mal/bbp.c b/monetdb5/modules/mal/bbp.c
--- a/monetdb5/modules/mal/bbp.c
+++ b/monetdb5/modules/mal/bbp.c
@@ -34,7 +34,7 @@ CMDbbpbind(Client cntxt, MalBlkPtr mb, M
str name;
ValPtr lhs;
bat i;
- int ht,tt;
+ int tt;
BAT *b;
(void) cntxt;
@@ -53,12 +53,10 @@ CMDbbpbind(Client cntxt, MalBlkPtr mb, M
throw(MAL, "bbp.bind", RUNTIME_OBJECT_MISSING);
/* check conformity of the actual type and the one requested */
- ht= getHeadType(getArgType(mb,pci,0));
tt= getColumnType(getArgType(mb,pci,0));
- if( b->htype == TYPE_void && ht== TYPE_oid) ht= TYPE_void;
if( b->ttype == TYPE_void && tt== TYPE_oid) tt= TYPE_void;
- if( ht != b->htype || tt != b->ttype){
+ if( tt != b->ttype){
BBPunfix(i);
throw(MAL, "bbp.bind", SEMANTIC_TYPE_MISMATCH );
}
@@ -391,15 +389,14 @@ CMDgetBATlrefcnt(int *res, bat *bid)
return MAL_SUCCEED;
}
-str CMDbbp(bat *ID, bat *NS, bat *HT, bat *TT, bat *CNT, bat *REFCNT, bat
*LREFCNT, bat *LOCATION, bat *HEAT, bat *DIRTY, bat *STATUS, bat *KIND)
+str CMDbbp(bat *ID, bat *NS, bat *TT, bat *CNT, bat *REFCNT, bat *LREFCNT, bat
*LOCATION, bat *HEAT, bat *DIRTY, bat *STATUS, bat *KIND)
{
- BAT *id, *ns, *ht, *tt, *cnt, *refcnt, *lrefcnt, *location, *heat,
*dirty, *status, *kind, *bn;
+ BAT *id, *ns, *tt, *cnt, *refcnt, *lrefcnt, *location, *heat, *dirty,
*status, *kind, *bn;
int i;
char buf[MAXPATHLEN];
id = BATnew(TYPE_void, TYPE_int, getBBPsize(), TRANSIENT);
ns = BATnew(TYPE_void, TYPE_str, getBBPsize(), TRANSIENT);
- ht = BATnew(TYPE_void, TYPE_str, getBBPsize(), TRANSIENT);
tt = BATnew(TYPE_void, TYPE_str, getBBPsize(), TRANSIENT);
cnt = BATnew(TYPE_void, TYPE_lng, getBBPsize(), TRANSIENT);
refcnt = BATnew(TYPE_void, TYPE_int, getBBPsize(), TRANSIENT);
@@ -410,10 +407,9 @@ str CMDbbp(bat *ID, bat *NS, bat *HT, ba
status = BATnew(TYPE_void, TYPE_str, getBBPsize(), TRANSIENT);
kind = BATnew(TYPE_void, TYPE_str, getBBPsize(), TRANSIENT);
- if (!id || !ns || !ht || !tt || !cnt || !refcnt || !lrefcnt ||
!location || !heat || !dirty || !status || !kind) {
+ if (!id || !ns || !tt || !cnt || !refcnt || !lrefcnt || !location ||
!heat || !dirty || !status || !kind) {
BBPreclaim(id);
BBPreclaim(ns);
- BBPreclaim(ht);
BBPreclaim(tt);
BBPreclaim(cnt);
BBPreclaim(refcnt);
@@ -427,7 +423,6 @@ str CMDbbp(bat *ID, bat *NS, bat *HT, ba
}
BATseqbase(id, 0);
BATseqbase(ns, 0);
- BATseqbase(ht, 0);
BATseqbase(tt, 0);
BATseqbase(cnt, 0);
BATseqbase(refcnt, 0);
@@ -453,7 +448,6 @@ str CMDbbp(bat *ID, bat *NS, bat *HT, ba
snprintf(buf, MAXPATHLEN, "%s",
BBP_physical(i));
BUNappend(id, &i, FALSE);
BUNappend(ns, BBP_logical(i), FALSE);
- BUNappend(ht, BATatoms[BAThtype(bn)].name,
FALSE);
BUNappend(tt, BATatoms[BATttype(bn)].name,
FALSE);
BUNappend(cnt, &l, FALSE);
BUNappend(refcnt, &refs, FALSE);
@@ -469,7 +463,6 @@ str CMDbbp(bat *ID, bat *NS, bat *HT, ba
}
BBPkeepref(*ID = id->batCacheid);
BBPkeepref(*NS = ns->batCacheid);
- BBPkeepref(*HT = ht->batCacheid);
BBPkeepref(*TT = tt->batCacheid);
BBPkeepref(*CNT = cnt->batCacheid);
BBPkeepref(*REFCNT = refcnt->batCacheid);
diff --git a/monetdb5/modules/mal/bbp.h b/monetdb5/modules/mal/bbp.h
--- a/monetdb5/modules/mal/bbp.h
+++ b/monetdb5/modules/mal/bbp.h
@@ -53,5 +53,5 @@ bbp_export str CMDbbpLRefCount(bat *ret)
bbp_export str CMDbbpgetIndex(int *res, bat *bid);
bbp_export str CMDgetBATrefcnt(int *res, bat *bid);
bbp_export str CMDgetBATlrefcnt(int *res, bat *bid);
-bbp_export str CMDbbp(bat *ID, bat *NS, bat *HT, bat *TT, bat *CNT, bat
*REFCNT, bat *LREFCNT, bat *LOCATION, bat *HEAT, bat *DIRTY, bat *STATUS, bat
*KIND);
+bbp_export str CMDbbp(bat *ID, bat *NS, bat *TT, bat *CNT, bat *REFCNT, bat
*LREFCNT, bat *LOCATION, bat *HEAT, bat *DIRTY, bat *STATUS, bat *KIND);
#endif /* _BBP_H_*/
diff --git a/monetdb5/modules/mal/bbp.mal b/monetdb5/modules/mal/bbp.mal
--- a/monetdb5/modules/mal/bbp.mal
+++ b/monetdb5/modules/mal/bbp.mal
@@ -18,8 +18,9 @@ command getNames() :bat[:oid,:str]
address CMDbbpNames
comment "Map BAT into its bbp name";
-command get() (id:bat[:oid,:int], ns:bat[:oid,:str],
- ht:bat[:oid,:str], tt:bat[:oid,:str],
+command get() (id:bat[:oid,:int],
+ ns:bat[:oid,:str],
+ tt:bat[:oid,:str],
cnt:bat[:oid,:lng], refcnt:bat[:oid,:int],
lrefcnt:bat[:oid,:int], location:bat[:oid,:str],
heat:bat[:oid,:int], dirty:bat[:oid,:str],
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -678,7 +678,7 @@ str RMTput(Client cntxt, MalBlkPtr mb, M
msg = createException(MAL, "remote.put", "unsupported type:
%s", tpe);
GDKfree(tpe);
return msg;
- } else if (isaBatType(type)) {
+ } else if (isaBatType(type) && *(int*) value != 0) {
BATiter bi;
/* naive approach using bat.new() and bat.insert() calls */
char *tail;
diff --git a/sql/backends/monet5/Tests/All b/sql/backends/monet5/Tests/All
--- a/sql/backends/monet5/Tests/All
+++ b/sql/backends/monet5/Tests/All
@@ -16,6 +16,7 @@ HAVE_LIBR?rapi13
HAVE_LIBR?rapi14
HAVE_LIBR?rapi15
HAVE_LIBR?rapi16
+HAVE_LIBR?rapi17
# should this work?
#inlineUDF
diff --git a/sql/backends/monet5/Tests/rapi17.sql
b/sql/backends/monet5/Tests/rapi17.sql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/rapi17.sql
@@ -0,0 +1,4 @@
+START TRANSACTION;
+create function dt(d date) returns string language R { class(d) };
+select dt( cast('2015-09-21' as date) );
+ROLLBACK;
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
@@ -2149,7 +2149,7 @@ setwritable(BAT *b)
if (BATsetaccess(b, BAT_WRITE) != GDK_SUCCEED) {
if (b->batSharecnt) {
- bn = BATcopy(b, b->htype, b->ttype, TRUE, TRANSIENT);
+ bn = BATcopy(b, TYPE_void, b->ttype, TRUE, TRANSIENT);
if (bn != NULL)
BATsetaccess(bn, BAT_WRITE);
} else {
@@ -2340,7 +2340,7 @@ DELTAsub(bat *result, const bat *col, co
i = u_id;
}
if (isVIEW(res)) {
- BAT *n = BATcopy(res, res->htype, res->ttype, TRUE,
TRANSIENT);
+ BAT *n = BATcopy(res, TYPE_void, res->ttype, TRUE,
TRANSIENT);
BBPunfix(res->batCacheid);
res = n;
if (res == NULL) {
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
@@ -549,7 +549,7 @@ static int
type = newBatType(TYPE_oid, type);
p = newFcnCall(curBlk, batRef, newRef);
- p = pushType(curBlk, p, getHeadType(type));
+ p = pushType(curBlk, p, TYPE_oid);
p = pushType(curBlk, p, getColumnType(type));
setArgType(curBlk, p, 0, type);
lret[i] = getArg(p, 0);
diff --git a/sql/scripts/25_debug.sql b/sql/scripts/25_debug.sql
--- a/sql/scripts/25_debug.sql
+++ b/sql/scripts/25_debug.sql
@@ -36,7 +36,7 @@ create view sys.environment as select *
-- The BAT buffer pool overview
create function sys.bbp ()
- returns table (id int, name string, htype string,
+ returns table (id int, name string,
ttype string, count BIGINT, refcnt int, lrefcnt int,
location string, heat int, dirty string,
status string, kind string)
diff --git a/sql/test/Tests/systemfunctions.stable.out
b/sql/test/Tests/systemfunctions.stable.out
--- a/sql/test/Tests/systemfunctions.stable.out
+++ b/sql/test/Tests/systemfunctions.stable.out
@@ -162,18 +162,17 @@ Ready.
[ "sys", "area", 1, "geometry", "" ]
[ "sys", "astext", 0, "clob", "create function astext(g
geometry) returns string external name geom.\"AsText\";" ]
[ "sys", "astext", 1, "geometry", "" ]
-[ "sys", "bbp", 0, "int", "-- The BAT buffer pool
overview\ncreate function sys.bbp ()\n\treturns table (id int, name string,
htype string,\n\t\tttype string, count bigint, refcnt int, lrefcnt
int,\n\t\tlocation string, heat int, dirty string,\n\t\tstatus string, kind
string)\n\texternal name bbp.get;" ]
+[ "sys", "bbp", 0, "int", "-- The BAT buffer pool
overview\ncreate function sys.bbp ()\n\treturns table (id int, name string,
\n\t\tttype string, count bigint, refcnt int, lrefcnt int,\n\t\tlocation
string, heat int, dirty string,\n\t\tstatus string, kind string)\n\texternal
name bbp.get;" ]
[ "sys", "bbp", 1, "clob", "" ]
[ "sys", "bbp", 2, "clob", "" ]
-[ "sys", "bbp", 3, "clob", "" ]
-[ "sys", "bbp", 4, "bigint", "" ]
+[ "sys", "bbp", 3, "bigint", "" ]
+[ "sys", "bbp", 4, "int", "" ]
[ "sys", "bbp", 5, "int", "" ]
-[ "sys", "bbp", 6, "int", "" ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list