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

Reply via email to