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