CCL: fix use of "term" field in sub queries
[yaz-moved-to-github.git] / src / zoom-sru.c
index d52372f..d7f19cb 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2012 Index Data
  * See the file LICENSE for details.
  */
 /**
@@ -61,6 +61,8 @@ static zoom_ret send_srw(ZOOM_connection c, Z_SRW_PDU *sr)
         return zoom_complete;
     if (c->odr_print)
         z_GDU(c->odr_print, &gdu, 0, 0);
+    if (c->odr_save)
+        z_GDU(c->odr_save, &gdu, 0, 0);
     c->buf_out = odr_getbuf(c->odr_out, &c->len_out, 0);
         
     event = ZOOM_Event_create(ZOOM_EVENT_SEND_APDU);
@@ -217,6 +219,13 @@ zoom_ret ZOOM_connection_srw_send_search(ZOOM_connection c)
         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) ? 
@@ -299,6 +308,9 @@ static zoom_ret handle_srw_response(ZOOM_connection c,
         if (res->numberOfRecords) {
             resultset->size = *res->numberOfRecords;
         }
+        if (res->suggestions) {
+            ZOOM_resultset_option_set(resultset, "suggestions", res->suggestions);
+        }
         for (i = 0; i<res->num_records; i++)
         {
             int pos;