Changeset: c302ce01d883 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c302ce01d883
Modified Files:
        sql/backends/monet5/rest/rest_jsonstore_handle_get.c
Branch: default
Log Message:

working client context and code cleanup


diffs (200 lines):

diff --git a/sql/backends/monet5/rest/rest_jsonstore_handle_get.c 
b/sql/backends/monet5/rest/rest_jsonstore_handle_get.c
--- a/sql/backends/monet5/rest/rest_jsonstore_handle_get.c
+++ b/sql/backends/monet5/rest/rest_jsonstore_handle_get.c
@@ -21,12 +21,14 @@
 #include <stdio.h>
 #include "mal_mapi.h"
 #include "mal_client.h"
+#include "mal_linker.h"
 #include "stream.h"
 #include "sql_scenario.h"
 #include <mapi.h>
 #include <rest_jsonstore_handle_get.h>
 
 static str RESTsqlQuery(char **result, char * query);
+char * result_ok = "select true as ok;";
 
 static str
 RESTsqlQuery(char **result, char * query)
@@ -35,134 +37,120 @@ RESTsqlQuery(char **result, char * query
        str qmsg = MAL_SUCCEED;
        char * resultstring = NULL;
        struct buffer * resultbuffer;
-       stream * oldstream;
        stream * resultstream;
        Client c;
+       bstream *fin = NULL;
+       int len = 0;
 
        resultbuffer = buffer_create(BLOCK);
        resultstream = buffer_wastream(resultbuffer, "resultstring");
 
-       c = mal_clients;
-       oldstream = c->fdout;
-       c->fdout = resultstream;
+       c = MCinitClient(CONSOLE, fin, resultstream);
+       c->nspace = newModule(NULL, putName("user", 4));
+
+       // TODO: lookup user_id in bat
+       c->user = 1;
+       initLibraries();
        msg = setScenario(c, "sql");
+       msg = SQLinitClient(c);
+       MSinitClientPrg(c, "user", "main");
+       (void) MCinitClientThread(c);
+
        qmsg = SQLstatementIntern(c, &query, "rest", TRUE, TRUE);
-
-       resultstring = buffer_get_buf(resultbuffer);
-       *result = GDKstrdup(resultstring);
-       msg = setScenario(c, "mal");
-       c->fdout = oldstream;
-       free(resultstring);
+       if (qmsg == MAL_SUCCEED) {
+               resultstring = buffer_get_buf(resultbuffer);
+               *result = GDKstrdup(resultstring);
+               free(resultstring);
+       } else {
+               len = strlen(qmsg) + 19;
+               resultstring = malloc(len);
+               snprintf(resultstring, len, "{ \"error\": \"%s\" }\n", qmsg);
+               *result = GDKstrdup(resultstring);
+               free(resultstring);
+       }
        buffer_destroy(resultbuffer);
-
-       if (qmsg != MAL_SUCCEED) {
-               return qmsg;
-       } else {
-               return msg;
-       }
+       msg = SQLexitClient(c);
+       return msg;
 }
 
 str RESTwelcome(char **result)
 {
        str msg = MAL_SUCCEED;
-       char * querytext = "select '{ \"monetdb jsonstore\": \"Welcome\", 
\"version\":\"(unreleased)\" }';";
-
+       // TODO: get version from variable
+       char * querytext = "select 'Welcome' as jsonstore, '(unreleased)' as 
version;";
        msg = RESTsqlQuery(result, querytext);
-
        return msg;
 }
 
 str RESTallDBs(char **result)
 {
        str msg = MAL_SUCCEED;
-       char * querytext = "select name from tables where name like 'json_%';";
-
+       char * querytext = "select substring(name, 6, length(name) -5) from 
tables where name like 'json_%';";
        msg = RESTsqlQuery(result, querytext);
-
        return msg;
 }
 
 str RESTuuid(char **result)
 {
        str msg = MAL_SUCCEED;
-       char * querytext = "select uuid();";
-
+       char * querytext = "select uuid() as uuid;";
        msg = RESTsqlQuery(result, querytext);
-
        return msg;
 }
 
 str RESTcreateDB(char ** result, char * dbname)
 {
        str msg = MAL_SUCCEED;
-       str qmsg = MAL_SUCCEED;
        int len = strlen(dbname) + 45;
-       char * committext = "commit;";
-       char * rollbacktext = "rollback;";
        char * querytext = NULL;
 
        querytext = malloc(len);
-       sprintf(querytext, "CREATE TABLE sys.json_%s (u uuid, r int, js 
json);", dbname);
+       snprintf(querytext, len, "CREATE TABLE json_%s (u uuid, r int, js 
json);", dbname);
 
-       qmsg = RESTsqlQuery(result, querytext);
-       if (qmsg == MAL_SUCCEED) {
-               msg = RESTsqlQuery(result, committext);
-       } else {
-               msg = RESTsqlQuery(result, rollbacktext);
-       }
-       if (msg) {};
+       msg = RESTsqlQuery(result, querytext);
        if (querytext != NULL) {
                free(querytext);
        }
-       return qmsg;
+       if (strcmp(*result,"") == 0) {
+         msg = RESTsqlQuery(result, result_ok);
+       }
+       return msg;
 }
 
 str RESTdeleteDB(char ** result, char * dbname)
 {
        str msg = MAL_SUCCEED;
-       str qmsg = MAL_SUCCEED;
        int len = strlen(dbname) + 23;
-       char * committext = "commit;";
-       char * rollbacktext = "rollback;";
        char * querytext = NULL;
 
        querytext = malloc(len);
-       sprintf(querytext, "DROP TABLE json_%s;", dbname);
+       snprintf(querytext, len, "DROP TABLE json_%s;", dbname);
 
-       qmsg = RESTsqlQuery(result, querytext);
-       if (qmsg == MAL_SUCCEED) {
-               msg = RESTsqlQuery(result, committext);
-       } else {
-               msg = RESTsqlQuery(result, rollbacktext);
-       }
-       if (msg) {};
+       msg = RESTsqlQuery(result, querytext);
        if (querytext != NULL) {
                free(querytext);
        }
-       return qmsg;
+       if (strcmp(*result,"") == 0) {
+         msg = RESTsqlQuery(result, result_ok);
+       }
+       return msg;
 }
 
 str RESTcreateDoc(char ** result, char * dbname, const char * doc)
 {
        str msg = MAL_SUCCEED;
-       str qmsg = MAL_SUCCEED;
        int len = strlen(dbname) + strlen(doc)+ 52;
-       char * committext = "commit;";
-       char * rollbacktext = "rollback;";
        char * querytext = NULL;
 
        querytext = malloc(len);
-       sprintf(querytext, "INSERT INTO json_%s (u, r, js) VALUES (uuid(), 1, 
'%s');", dbname, doc);
+       snprintf(querytext, len, "INSERT INTO json_%s (u, r, js) VALUES 
(uuid(), 1, '%s');", dbname, doc);
 
-       qmsg = RESTsqlQuery(result, querytext);
-       if (qmsg == MAL_SUCCEED) {
-               msg = RESTsqlQuery(result, committext);
-       } else {
-               msg = RESTsqlQuery(result, rollbacktext);
-       }
-       if (msg) {};
+       msg = RESTsqlQuery(result, querytext);
        if (querytext != NULL) {
                free(querytext);
        }
-       return qmsg;
+       if (strcmp(*result,"") == 0) {
+         msg = RESTsqlQuery(result, result_ok);
+       }
+       return msg;
 }
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to