SRU 1.1 sorting for ZOOM_query_sortby2
[yaz-moved-to-github.git] / src / zoom-sru.c
index f9baf44..08a18a2 100644 (file)
@@ -101,14 +101,14 @@ zoom_ret ZOOM_connection_srw_send_scan(ZOOM_connection c)
     {
         sr->u.scan_request->query_type = Z_SRW_query_type_cql;
         sr->u.scan_request->scanClause.cql =
-            ZOOM_query_get_query_string(scan->query);
+            odr_strdup(c->odr_out, ZOOM_query_get_query_string(scan->query));
     }
     else if (z_query->which == Z_Query_type_1
              || z_query->which == Z_Query_type_101)
     {
         sr->u.scan_request->query_type = Z_SRW_query_type_pqf;
         sr->u.scan_request->scanClause.pqf =
-            ZOOM_query_get_query_string(scan->query);
+            odr_strdup(c->odr_out, ZOOM_query_get_query_string(scan->query));
     }
     else
     {
@@ -209,13 +209,21 @@ zoom_ret ZOOM_connection_srw_send_search(ZOOM_connection c)
     {
         sr->u.request->query_type = Z_SRW_query_type_pqf;
         sr->u.request->query.pqf =
-            ZOOM_query_get_query_string(resultset->query);
+            odr_strdup(c->odr_out, 
+                       ZOOM_query_get_query_string(resultset->query));
     }
     else
     {
         ZOOM_set_error(c, ZOOM_ERROR_UNSUPPORTED_QUERY, 0);
         return zoom_complete;
     }
+   
+    option_val = ZOOM_query_get_sru11(resultset->query);
+    if (option_val)
+    {
+        sr->u.request->sort_type = Z_SRW_sort_type_sort;
+        sr->u.request->sort.sortKeys = odr_strdup(c->odr_out, option_val);
+    }
     sr->u.request->startRecord = odr_intdup(c->odr_out, *start + 1);
     sr->u.request->maximumRecords = odr_intdup(
         c->odr_out, (resultset->step > 0 && resultset->step < *count) ?