Changeset: 9125feb96027 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9125feb96027
Modified Files:
monetdb5/modules/kernel/bat5.c
monetdb5/modules/mal/Tests/mapi07.stable.out
monetdb5/modules/mal/Tests/remote12.stable.out
monetdb5/modules/mal/mal_mapi.c
sql/backends/monet5/UDF/udf.c
Branch: default
Log Message:
merged
diffs (155 lines):
diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -881,7 +881,7 @@ BKCisSortedReverse(bit *res, const bat *
/*
* We must take care of the special case of a nil column
(TYPE_void,seqbase=nil)
- * such nil columns never set hkey (and BUNins will never invalidate it if
set) yet
+ * such nil columns never set hkey
* a nil column of a BAT with <= 1 entries does not contain doubles => return
TRUE.
*/
diff --git a/monetdb5/modules/mal/Tests/mapi07.stable.out
b/monetdb5/modules/mal/Tests/mapi07.stable.out
--- a/monetdb5/modules/mal/Tests/mapi07.stable.out
+++ b/monetdb5/modules/mal/Tests/mapi07.stable.out
@@ -39,7 +39,7 @@ end user.main;
# t t # name
# void int # type
#--------------------------#
-[ 2@0, nil ]
+[ 0@0, nil ]
# 09:12:08 >
# 09:12:08 > Done.
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
@@ -16,25 +16,20 @@ stdout of test 'remote12` in directory '
# Listening for connection requests on mapi:monetdb://eir.ins.cwi.nl:33456/
# MonetDB/GIS module loaded
# MonetDB/SQL module loaded
-!SyntaxException:parseError:e := nil:BAT;
-!SyntaxException:parseError: ^<type identifier> expected
-!SyntaxException:parseError:m:str := remote.put(conn, e);
-!SyntaxException:parseError:^operator expected
-!SyntaxException:parseError:v:BAT := remote.get(conn,m);
-!SyntaxException:parseError: ^<type identifier> expected
-!SyntaxException:parseError:io.print(v);
-!SyntaxException:parseError:^';' expected
function user.main():void;
#causing a sigfault
uri := sabaoth.getLocalConnectionURI();
conn:str := remote.connect(uri,"monetdb","monetdb");
e := nil:BAT;
+ m:str := remote.put(conn,e);
io.print(m);
- v:BAT;
+ v:BAT := remote.get(conn,m);
+ io.print(v);
mdb.var();
end user.main;
+
# 20:06:20 >
# 20:06:20 > Done.
# 20:06:20 >
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -1581,54 +1581,31 @@ SERVERmapi_rpc_bat(Client cntxt, MalBlkP
bat *ret;
int *key;
str *qry,err= MAL_SUCCEED;
- int i;
Mapi mid;
MapiHdl hdl;
- char *fld1, *fld2;
+ char *fld2;
BAT *b;
- ValRecord hval,tval;
- int ht,tt;
+ ValRecord tval;
+ int i=0, tt;
(void) cntxt;
ret= getArgReference_bat(stk,pci,0);
key= getArgReference_int(stk,pci,pci->retc);
qry= getArgReference_str(stk,pci,pci->retc+1);
accessTest(*key, "rpc");
- ht= getHeadType(getVarType(mb,getArg(pci,0)));
tt= getColumnType(getVarType(mb,getArg(pci,0)));
hdl= mapi_query(mid, *qry);
catchErrors("mapi.rpc");
- assert(ht == TYPE_void || ht== TYPE_oid);
b= BATnew(TYPE_void,tt,256, TRANSIENT);
if ( b == NULL)
throw(MAL,"mapi.rpc",MAL_MALLOC_FAIL);
BATseqbase(b,0);
- i= 0;
- if ( mapi_fetch_row(hdl)){
- int oht = ht, ott = tt;
-
- fld1= mapi_fetch_field(hdl,0);
+ while( mapi_fetch_row(hdl)){
fld2= mapi_fetch_field(hdl,1);
- if (fld1 && ht == TYPE_void)
- ht = TYPE_oid;
- if (fld2 && tt == TYPE_void)
- tt = TYPE_oid;
- SERVERfieldAnalysis(fld1, ht, &hval);
SERVERfieldAnalysis(fld2, tt, &tval);
- if (oht != ht)
- BATseqbase(b, hval.val.oval);
- if (ott != tt)
- BATseqbase(BATmirror(b), tval.val.oval);
- BUNins(b,VALptr(&hval),VALptr(&tval), FALSE);
- }
- while( mapi_fetch_row(hdl)){
- fld1= mapi_fetch_field(hdl,0);
- fld2= mapi_fetch_field(hdl,1);
- SERVERfieldAnalysis(fld1, ht, &hval);
- SERVERfieldAnalysis(fld2, tt, &tval);
- BUNins(b,VALptr(&hval),VALptr(&tval), FALSE);
+ BUNappend(b,VALptr(&tval), FALSE);
}
if (!(b->batDirty&2)) BATsetaccess(b, BAT_READ);
*ret = b->batCacheid;
diff --git a/sql/backends/monet5/UDF/udf.c b/sql/backends/monet5/UDF/udf.c
--- a/sql/backends/monet5/UDF/udf.c
+++ b/sql/backends/monet5/UDF/udf.c
@@ -86,8 +86,8 @@ UDFBATreverse_(BAT **ret, BAT *src)
"tail-type of input BAT must be TYPE_str");
}
- /* allocate result BAT */
- bn = BATnew(src->htype, TYPE_str, BATcount(src), TRANSIENT);
+ /* allocate void-headed result BAT */
+ bn = BATnew(TYPE_void, TYPE_str, BATcount(src), TRANSIENT);
if (bn == NULL) {
throw(MAL, "batudf.reverse", MAL_MALLOC_FAIL);
}
@@ -100,8 +100,6 @@ UDFBATreverse_(BAT **ret, BAT *src)
BATloop(src, p, q) {
char *tr = NULL, *err = NULL;
- /* get original head & tail value */
- ptr h = BUNhead(li, p);
const char *t = (const char *) BUNtail(li, p);
/* revert tail value */
@@ -115,9 +113,8 @@ UDFBATreverse_(BAT **ret, BAT *src)
/* assert logical sanity */
assert(tr != NULL);
- /* insert original head and reversed tail in result BAT */
- /* BUNins() takes care of all necessary administration */
- BUNins(bn, h, tr, FALSE);
+ /* append reversed tail in result BAT */
+ BUNappend(bn, tr, FALSE);
/* free memory allocated in UDFreverse_() */
GDKfree(tr);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list