Changeset: 9a08deb62e39 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9a08deb62e39
Modified Files:
        monetdb5/extras/rapi/Makefile.ag
        monetdb5/extras/rapi/rapi.c
        monetdb5/extras/rapi/rapi.h
        monetdb5/extras/rapi/rapi.mal
        sql/server/rel_psm.c
        sql/server/sql_parser.h
        sql/server/sql_parser.y
Branch: RIntegration
Log Message:

Fix the current state
The include file rap.h does not appear where it is expected.
includedir/monetdb


diffs (139 lines):

diff --git a/monetdb5/extras/rapi/Makefile.ag b/monetdb5/extras/rapi/Makefile.ag
--- a/monetdb5/extras/rapi/Makefile.ag
+++ b/monetdb5/extras/rapi/Makefile.ag
@@ -27,10 +27,16 @@ MTSAFE
 lib__rapi = {
        MODULE
        DIR = libdir/monetdb5
-       SOURCES = rapi.h rapi.c
+       SOURCES = rapi.c
        LIBS = $(libr_LIBS)
 }
 
+headers_h = {
+       DIR = includedir/monetdb
+       HEADERS = h
+       SOURCES = rapi.h 
+}
+
 headers_rapi_mal = {
        HEADERS = mal
        DIR = libdir/monetdb5
@@ -44,4 +50,4 @@ headers_autoload = {
 }
 
 EXTRA_DIST_DIR = Tests
-EXTRA_DIST = 50_rapi.mal rapi.mal
+EXTRA_DIST = 50_rapi.mal rapi.mal 
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
@@ -130,6 +130,18 @@ static void RAPIinitialize(void) {
        rapiInitialized++;
 }
 
+str RAPIparser(int *ret, str *rcall){
+       ParseStatus status;
+       str msg = NULL;
+
+       (void) ret;
+       (void) R_ParseVector(mkString(*rcall), INT_MAX, &status, R_NilValue);
+       if (status != PARSE_OK) 
+               msg = createException(MAL, "rapi.eval", "%s", *rcall);
+       free(*rcall);
+       return msg;
+}
+
 str RAPIeval(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) {
        str exprStr = *(str*) getArgReference(stk, pci, pci->retc);
        SEXP x, env,retval;
diff --git a/monetdb5/extras/rapi/rapi.h b/monetdb5/extras/rapi/rapi.h
--- a/monetdb5/extras/rapi/rapi.h
+++ b/monetdb5/extras/rapi/rapi.h
@@ -41,6 +41,7 @@
 
 #define _RAPI_DEBUG_
 
+rapi_export str RAPIparser(int *ret, str *rcall);
 rapi_export str RAPIeval(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 rapi_export str RAPIevalScalar(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 rapi_export str RAPIevalDataframe(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
diff --git a/monetdb5/extras/rapi/rapi.mal b/monetdb5/extras/rapi/rapi.mal
--- a/monetdb5/extras/rapi/rapi.mal
+++ b/monetdb5/extras/rapi/rapi.mal
@@ -17,6 +17,9 @@
 
 module rapi;
 
+command parser(expr:str):bit
+address RAPIparser;
+
 pattern eval(expr:str):any
 address RAPIeval
 comment "Execute a simple R script returning a single value";
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -26,6 +26,10 @@
 #include "rel_exp.h"
 #include "rel_updates.h"
 #include "sql_privileges.h"
+#undef HAVELIBR
+#ifdef HAVE_LIBR
+#include "rapi.h"
+#endif
 
 static sql_rel *
 rel_psm_block(sql_allocator *sa, list *l)
@@ -582,7 +586,14 @@ sequential_block (mvc *sql, sql_subtype 
                }       break;
                case SQL_R_BODY:
                case SQL_C_BODY:
-                       res = sql_error(sql, 01, "Language statement  is not 
yet handled");
+               case SQL_J_BODY:
+#ifdef HAVE_LIBR
+                       res = RAPIparser(s->data.lval); // TBD
+                       if ( res)
+                               res = sql_error(sql, 01, "Language statement  
is not yet handled");
+#else
+                               res = sql_error(sql, 01, "Language extensions 
not supported ");
+#endif
                        break;
                default:
                        res = sql_error(sql, 01, 
diff --git a/sql/server/sql_parser.h b/sql/server/sql_parser.h
--- a/sql/server/sql_parser.h
+++ b/sql/server/sql_parser.h
@@ -176,6 +176,7 @@ typedef enum tokens {
        SQL_XMLVALIDATE,
        SQL_XMLNAMESPACES,
        SQL_R_BODY,
+       SQL_J_BODY,
        SQL_C_BODY
 } tokens;
 
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -1874,15 +1874,18 @@ language_body:
    LANGUAGE IDENT X_BODY { 
                int tpe = 0;
                dlist *l =L(); 
-               append_string(l,$3); 
-               append_int(l,F_FUNC); 
                if (  strcmp($2,"R")== 0 || strcmp($2,"r")==0 )
                        tpe= SQL_R_BODY;
                else
                if (  strcmp($2,"C")== 0 || strcmp($2,"c")==0 )
                        tpe= SQL_C_BODY;
                else
-                       yyerror(m, sql_message("Language name R or C expected, 
received %s", $2));
+               if (  strcmp($2,"J")== 0 || strcmp($2,"j")==0 )
+                       tpe= SQL_J_BODY;
+               else
+                       yyerror(m, sql_message("Language name R, C, or 
J(avascript):expected, received %s", $2));
+               append_string(l,$3); 
+               append_int(l,F_FUNC); 
                append_string(l,$2); 
                $$ = _symbol_create_list( tpe, l );
        }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to