Changeset: 46ae74af2b14 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=46ae74af2b14
Modified Files:
monetdb5/extras/rapi/Tests/rapi02.malC
monetdb5/extras/rapi/Tests/rapi02.stable.out
monetdb5/extras/rapi/converters.c
monetdb5/extras/rapi/rapi.c
sql/backends/monet5/Tests/rapi09.stable.err
sql/backends/monet5/Tests/simpleSQL.stable.err
sql/backends/monet5/Tests/simpleSQL.stable.out
sql/backends/monet5/sql_execute.c
Branch: embedded
Log Message:
Output conversion fixes
diffs (229 lines):
diff --git a/monetdb5/extras/rapi/Tests/rapi02.malC
b/monetdb5/extras/rapi/Tests/rapi02.malC
--- a/monetdb5/extras/rapi/Tests/rapi02.malC
+++ b/monetdb5/extras/rapi/Tests/rapi02.malC
@@ -62,6 +62,8 @@ bat.append(bhge,1714636915:hge);
rhge:bat[:oid,:dbl] := rapi.eval(nil:ptr,"Re(fft(na.omit(arg1)))",bhge);
io.print(rhge);
+into:int := rapi.eval(nil:ptr, "42L");
+io.print(into);
# floating point
@@ -92,7 +94,8 @@ bat.append(bstr,nil:str);
rstr:bat[:oid,:int] := rapi.eval(nil:ptr,"nchar(arg1)",bstr);
io.print(rstr);
-
+so:str := rapi.eval(nil:ptr,"'asdf'");
+io.print(so);
# output types testing
diff --git a/monetdb5/extras/rapi/Tests/rapi02.stable.out
b/monetdb5/extras/rapi/Tests/rapi02.stable.out
--- a/monetdb5/extras/rapi/Tests/rapi02.stable.out
+++ b/monetdb5/extras/rapi/Tests/rapi02.stable.out
@@ -86,7 +86,7 @@ Ready.
[ 1@0, 122596606 ]
[ 2@0, 924414359 ]
[ 3@0, 122596606 ]
-#io.print(rflt);
+[ 42 ]
#--------------------------#
# h t # name
# void dbl # type
@@ -113,7 +113,7 @@ Ready.
[ 1@0, 20 ]
[ 2@0, 0 ]
[ 3@0, 2 ]
-#io.print(rintbi);
+[ "asdf" ]
#--------------------------#
# h t # name
# void int # type
diff --git a/monetdb5/extras/rapi/converters.c
b/monetdb5/extras/rapi/converters.c
--- a/monetdb5/extras/rapi/converters.c
+++ b/monetdb5/extras/rapi/converters.c
@@ -30,47 +30,22 @@
#define BAT_TO_REALSXP(bat,tpe,retsxp,memcopy)
\
BAT_TO_SXP(bat,tpe,retsxp,NEW_NUMERIC,NUMERIC_POINTER,double,NA_REAL,memcopy)\
-
-#define SCALAR_TO_INTSXP(tpe,retsxp) \
- do {
\
- tpe v;
\
- retsxp = PROTECT(NEW_INTEGER(1));
\
- v = *getArgReference_##tpe(stk,pci,i); \
- if ( v == tpe##_nil)
\
- INTEGER_POINTER(retsxp)[0] = NA_INTEGER; \
- else
\
- INTEGER_POINTER(retsxp)[0] = (int)v; \
- } while (0)
-
-#define SCALAR_TO_REALSXP(tpe,retsxp) \
- do {
\
- tpe v;
\
- retsxp = PROTECT(NEW_NUMERIC(1));
\
- v = * getArgReference_##tpe(stk,pci,i); \
- if ( v == tpe##_nil)
\
- NUMERIC_POINTER(retsxp)[0] = NA_REAL; \
- else
\
- NUMERIC_POINTER(retsxp)[0] = (double)v; \
- } while (0)
-
#define SXP_TO_BAT(tpe,access_fun,na_check)
\
do {
\
- tpe *p, prev = tpe##_nil; int j;
\
+ tpe *p, prev = tpe##_nil; size_t j;
\
b = BATnew(TYPE_void, TYPE_##tpe, cnt, TRANSIENT);
\
BATseqbase(b, 0); b->T->nil = 0; b->T->nonil = 1; b->tkey = 0;
\
- b->tsorted = 1; b->trevsorted = 1;
\
+ b->tsorted = 1; b->trevsorted = 1;b->tdense = 0;
\
p = (tpe*) Tloc(b, BUNfirst(b));
\
- for( j =0; j< (int) cnt; j++, p++){
\
- *p = (tpe) access_fun(s)[j];
\
+ for( j = 0; j < cnt; j++, p++){
\
+ *p = (tpe) access_fun(s)[j];
\
if (na_check){ b->T->nil = 1; b->T->nonil = 0;
*p= tpe##_nil;} \
if (j > 0){
\
if ( *p > prev && b->trevsorted){
\
b->trevsorted = 0;
\
- if (*p != prev +1) b->tdense = 0;
\
} else
\
if ( *p < prev && b->tsorted){
\
b->tsorted = 0;
\
- b->tdense = 0;
\
}
\
}
\
prev = *p;
\
@@ -160,7 +135,7 @@ static SEXP bat_to_sexp(BAT* b) {
static BAT* sexp_to_bat(SEXP s, int type) {
BAT* b = NULL;
- BUN cnt = LENGTH(s);
+ size_t cnt = LENGTH(s);
switch (type) {
case TYPE_int: {
if (!IS_INTEGER(s)) {
@@ -213,7 +188,6 @@ static BAT* sexp_to_bat(SEXP s, int type
b->tkey = 0;
b->tsorted = 0;
b->trevsorted = 0;
- b->tdense = 1;
/* get levels once, since this is a function call */
levels = GET_LEVELS(s);
diff --git a/monetdb5/extras/rapi/rapi.c b/monetdb5/extras/rapi/rapi.c
--- a/monetdb5/extras/rapi/rapi.c
+++ b/monetdb5/extras/rapi/rapi.c
@@ -399,7 +399,7 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
// collect the return values
for (i = 0; i < pci->retc; i++) {
SEXP ret_col = VECTOR_ELT(retval, i);
- int bat_type = ATOMstorage(getColumnType(getArgType(mb,pci,i)));
+ int bat_type = getColumnType(getArgType(mb,pci,i));
if (bat_type == TYPE_any || bat_type == TYPE_void) {
getArgType(mb,pci,i) = bat_type;
msg = createException(MAL, "rapi.eval",
@@ -418,8 +418,9 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
if (isaBatType(getArgType(mb,pci,i))) {
*getArgReference_bat(stk, pci, i) = b->batCacheid;
} else { // single value return, only for non-grouped
aggregations
+ BATiter li = bat_iterator(b);
VALinit(&stk->stk[pci->argv[i]], bat_type,
- Tloc(b, BUNfirst(b)));
+ BUNtail(li, 0)); // TODO BUNtail here
}
msg = MAL_SUCCEED;
}
diff --git a/sql/backends/monet5/Tests/rapi09.stable.err
b/sql/backends/monet5/Tests/rapi09.stable.err
--- a/sql/backends/monet5/Tests/rapi09.stable.err
+++ b/sql/backends/monet5/Tests/rapi09.stable.err
@@ -30,19 +30,19 @@ stderr of test 'rapi09` in directory 'sq
# 11:20:46 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-14205" "--port=36531"
# 11:20:46 >
-MAPI = (monetdb) /var/tmp/mtest-14205/.s.monetdb.36531
+MAPI = (monetdb) /var/tmp/mtest-78330/.s.monetdb.30467
QUERY = SELECT * FROM shouldbeint();
-ERROR = !wrong R column type for column 0, expected INTeger, got REAL.
-MAPI = (monetdb) /var/tmp/mtest-14205/.s.monetdb.36531
+ERROR = !Failed to convert column 0
+MAPI = (monetdb) /var/tmp/mtest-78330/.s.monetdb.30467
QUERY = SELECT * FROM throwerror();
ERROR = !Error running R expression: Error in (function() { : goodbye cruel
world Calls: as.data.frame -> <Anonymous>
-MAPI = (monetdb) /var/tmp/mtest-14205/.s.monetdb.36531
+MAPI = (monetdb) /var/tmp/mtest-78330/.s.monetdb.30467
QUERY = SELECT * FROM suicide();
ERROR = !Error running R expression: Error in quit(save = "no") : We do not
want to call q(uit), it would exit MonetDB, too. You probably want to exit the
R context, so I am calling stop() instead. Calls: as.data.frame -> <Anonymous>
-> quit
-MAPI = (monetdb) /var/tmp/mtest-14205/.s.monetdb.36531
+MAPI = (monetdb) /var/tmp/mtest-78330/.s.monetdb.30467
QUERY = SELECT * FROM suicide2();
ERROR = !Error running R expression: Error in base::quit(save = "no") : We
do not want to call q(uit), it would exit MonetDB, too. You probably want to
exit the R context, so I am calling stop() instead. Calls: as.data.frame ->
<Anonymous> -> <Anonymous>
-MAPI = (monetdb) /var/tmp/mtest-14205/.s.monetdb.36531
+MAPI = (monetdb) /var/tmp/mtest-78330/.s.monetdb.30467
QUERY = SELECT * FROM suicide3();
ERROR = !Error running R expression: Error in .Internal(quit("no", 0, F)) :
there is no .Internal function 'quit' Calls: as.data.frame -> <Anonymous>
diff --git a/sql/backends/monet5/Tests/simpleSQL.stable.err
b/sql/backends/monet5/Tests/simpleSQL.stable.err
--- a/sql/backends/monet5/Tests/simpleSQL.stable.err
+++ b/sql/backends/monet5/Tests/simpleSQL.stable.err
@@ -28,27 +28,8 @@ stderr of test 'simpleSQL` in directory
# 13:03:24 > "mclient" "-lmal" "-ftest" "-Eutf-8"
"--host=/var/tmp/mtest-21282" "--port=38130"
# 13:03:24 >
-MAPI = (monetdb) /var/tmp/mtest-21282/.s.monetdb.38130
-QUERY = #execute simple SQL queries from MAL
- function foo();
- sql.init();
- sql.eval("select 1;",true);
- sql.eval("create table simpleT(i integer);");
- sql.eval("insert into simpleT values(123);");
-
- sql.eval("select * from simpleT;");
- sql.eval("select * from simpleT;",false);
- sql.eval("drop table simpleT;");
-
- #cause an error
- sql.eval("select 1;",false);
- end foo;
- mdb.list("user","foo");
- user.foo();
-ERROR = !SQLException:sql.exportValue:failed
+# 11:30:21 >
+# 11:30:21 > "Done."
+# 11:30:21 >
-# 13:03:24 >
-# 13:03:24 > "Done."
-# 13:03:24 >
-
diff --git a/sql/backends/monet5/Tests/simpleSQL.stable.out
b/sql/backends/monet5/Tests/simpleSQL.stable.out
--- a/sql/backends/monet5/Tests/simpleSQL.stable.out
+++ b/sql/backends/monet5/Tests/simpleSQL.stable.out
@@ -47,11 +47,6 @@ end user.foo;
% int # type
% 3 # length
[ 123 ]
-% sys.simplet # table_name
-% i # name
-% int # type
-% 3 # length
-[ 123 ]
# 23:37:35 >
# 23:37:35 > "Done."
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -207,9 +207,6 @@ SQLstatementIntern(Client c, str *expr,
if (execute) {
MalBlkPtr mb = c->curprg->def;
-
- if (!output)
- sql->out = NULL; /* no output */
msg = runMAL(c, mb, 0, 0);
MSresetInstructions(mb, oldstop);
freeVariables(c, mb, NULL, oldvtop);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list