X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fclient.c;h=5036aab2f9ced65c3c9d9aa9ee93cf20d0ab3f1a;hb=7ab0676c686a45df10325dc96ec42e5f3210d9d7;hp=6a29bac894ade81e189c1f07ab5a7ae2341efcec;hpb=de634461a0500801cd71d6a42aff032fa083a127;p=pazpar2-moved-to-github.git diff --git a/src/client.c b/src/client.c index 6a29bac..5036aab 100644 --- a/src/client.c +++ b/src/client.c @@ -102,7 +102,7 @@ static const char *client_states[] = { "Client_Disconnected" }; -static struct client *client_freelist = 0; +static struct client *client_freelist = 0; /* thread pr */ const char *client_get_state_str(struct client *cl) { @@ -489,6 +489,7 @@ void client_start_search(struct client *cl) const char *opt_requestsyn = session_setting_oneval(sdb, PZ_REQUESTSYNTAX); const char *opt_maxrecs = session_setting_oneval(sdb, PZ_MAXRECS); const char *opt_sru = session_setting_oneval(sdb, PZ_SRU); + const char *opt_sort = session_setting_oneval(sdb, PZ_SORT); assert(link); @@ -527,6 +528,8 @@ void client_start_search(struct client *cl) ZOOM_query q = ZOOM_query_create(); yaz_log(YLOG_LOG, "Search %s CQL: %s", sdb->database->url, cl->cqlquery); ZOOM_query_cql(q, cl->cqlquery); + if (*opt_sort) + ZOOM_query_sortby(q, opt_sort); rs = ZOOM_connection_search(link, q); ZOOM_query_destroy(q); } @@ -644,17 +647,20 @@ static char *make_cqlquery(struct client *cl) char *r; WRBUF wrb = wrbuf_alloc(); int status; + ODR odr_out = odr_createmem(ODR_ENCODE); - zquery = p_query_rpn(global_parameters.odr_out, cl->pquery); + zquery = p_query_rpn(odr_out, cl->pquery); if ((status = cql_transform_rpn2cql_wrbuf(cqlt, wrb, zquery))) { yaz_log(YLOG_WARN, "failed to generate CQL query, code=%d", status); - return 0; + r = 0; } - r = xstrdup(wrbuf_cstr(wrb)); - + else + { + r = xstrdup(wrbuf_cstr(wrb)); + } wrbuf_destroy(wrb); - odr_reset(global_parameters.odr_out); // releases the zquery + odr_destroy(odr_out); cql_transform_close(cqlt); return r; }