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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list