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

improve json export function


diffs (65 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
@@ -55,10 +55,10 @@ RESTsqlQuery(char **result, char * query
        initLibraries();
        msg = setScenario(c, "sql");
        msg = SQLinitClient(c);
+       MSinitClientPrg(c, "user", "main");
+       (void) MCinitClientThread(c);
        be = (backend*)c->sqlcontext;
        be->output_format = OFMT_JSON;
-       MSinitClientPrg(c, "user", "main");
-       (void) MCinitClientThread(c);
 
        qmsg = SQLstatementIntern(c, &query, "rest", TRUE, TRUE);
        if (qmsg == MAL_SUCCEED) {
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -1097,6 +1097,7 @@ mvc_export_table(backend *b, stream *s, 
        struct time_res *tres;
        int csv = (b->output_format == OFMT_CSV);
        int json = (b->output_format == OFMT_JSON);
+       char * bj;
 
        if (!t)
                return -1;
@@ -1129,15 +1130,22 @@ mvc_export_table(backend *b, stream *s, 
                        fmt[i].seplen = _strlen(fmt[i].sep);
                }
                if (json) {
-                       res_col *p = t->cols + (i - 2);
+                       res_col *p = t->cols + (i - 1);
 
                        /* TODO name: 
                         * if i == 1 -> { name :
                         * if i > 1 -> , name :
                         */
-                       fmt[i-1].sep = p->name;
-                       fmt[i-1].seplen = _strlen(fmt[i-1].sep);
-                       if (i ==  t->nr_cols) {
+                       if (i == 1) {
+                               bj = SA_NEW_ARRAY(m->sa, char, strlen(p->name) 
+ 6);
+                               snprintf(bj, strlen(p->name) + 6, "{ %s , ", 
p->name); 
+                               fmt[i-1].sep = bj;
+                               fmt[i-1].seplen = _strlen(fmt[i-1].sep);
+                       } else if (i <= t->nr_cols) {
+                               fmt[i-1].sep = p->name;
+                               fmt[i-1].seplen = _strlen(fmt[i-1].sep);
+                       } 
+                       if (i == t->nr_cols)  {
                                fmt[i].sep = " }\n";
                                fmt[i].seplen = _strlen(fmt[i].sep);
                        }
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1072,6 +1072,7 @@ SQLstatementIntern(Client c, str *expr, 
        m->type= Q_PARSE;
        be = sql;
        sql = backend_create(m, c);
+       sql->output_format = be->output_format;
        m->qc = NULL;
        m->caching = 0;
        m->user_id = m->role_id = USER_MONETDB;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to