X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fzoom-z3950.c;h=fd605f5e30f250847f12596439e286eccabf8740;hp=070feab9e7a6379be4ad20a3b1bebaa82ed0cb07;hb=047d6669724619dd486a9bfa62cde1b909951491;hpb=0c46d2e66bdeea1600e700124a81a5d0a65d349e diff --git a/src/zoom-z3950.c b/src/zoom-z3950.c index 070feab..fd605f5 100644 --- a/src/zoom-z3950.c +++ b/src/zoom-z3950.c @@ -642,6 +642,7 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) ZOOM_resultset r; int lslb, ssub, mspn; const char *syntax; + const char *schema; Z_APDU *apdu = zget_APDU(c->odr_out, Z_APDU_searchRequest); Z_SearchRequest *search_req = apdu->u.searchRequest; const char *elementSetName; @@ -722,6 +723,8 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) /* get syntax (no need to provide unless piggyback is in effect) */ syntax = c->tasks->u.search.syntax; + schema = c->tasks->u.search.schema; + lslb = ZOOM_options_get_int(r->options, "largeSetLowerBound", -1); ssub = ZOOM_options_get_int(r->options, "smallSetUpperBound", -1); mspn = ZOOM_options_get_int(r->options, "mediumSetPresentNumber", -1); @@ -733,7 +736,7 @@ zoom_ret ZOOM_connection_Z3950_send_search(ZOOM_connection c) *search_req->mediumSetPresentNumber = mspn; } else if (c->tasks->u.search.start == 0 && c->tasks->u.search.count > 0 - && r->piggyback && !r->r_sort_spec && !r->schema) + && r->piggyback && !r->r_sort_spec && !schema) { /* Regular piggyback - do it unless we're going to do sort */ *search_req->largeSetLowerBound = 2000000000; @@ -1117,7 +1120,8 @@ static ZOOM_facet_field get_zoom_facet_field(ODR odr, Z_FacetField *facet) { } /* Can be share with SOLR/SRU/SRW requests */ -void handle_facet_list(ZOOM_resultset r, Z_FacetList *fl) { +void ZOOM_handle_facet_list(ZOOM_resultset r, Z_FacetList *fl) +{ int j; r->num_facets = fl->num; yaz_log(YLOG_DEBUG, "Facets found: %d", fl->num); @@ -1143,7 +1147,7 @@ static void handle_facet_result(ZOOM_connection c, ZOOM_resultset r, Z_External *ext = o->list[i]->information.externallyDefinedInfo; if (ext->which == Z_External_userFacets) { - handle_facet_list(r, ext->u.facetList); + ZOOM_handle_facet_list(r, ext->u.facetList); } } } @@ -1458,7 +1462,8 @@ zoom_ret send_Z3950_present(ZOOM_connection c) int i = 0; const char *syntax = 0; const char *elementSetName = 0; - ZOOM_resultset resultset; + const char *schema = 0; + ZOOM_resultset resultset; int *start, *count; if (!c->tasks) @@ -1475,6 +1480,7 @@ zoom_ret send_Z3950_present(ZOOM_connection c) count = &c->tasks->u.search.count; syntax = c->tasks->u.search.syntax; elementSetName = c->tasks->u.search.elementSetName; + schema = c->tasks->u.search.schema; break; case ZOOM_TASK_RETRIEVE: resultset = c->tasks->u.retrieve.resultset; @@ -1482,6 +1488,7 @@ zoom_ret send_Z3950_present(ZOOM_connection c) count = &c->tasks->u.retrieve.count; syntax = c->tasks->u.retrieve.syntax; elementSetName = c->tasks->u.retrieve.elementSetName; + schema = c->tasks->u.retrieve.schema; break; default: return zoom_complete; @@ -1503,7 +1510,7 @@ zoom_ret send_Z3950_present(ZOOM_connection c) { ZOOM_record rec = ZOOM_record_cache_lookup(resultset, i + *start, - syntax, elementSetName); + syntax, elementSetName, schema); if (!rec) break; else @@ -1542,7 +1549,7 @@ zoom_ret send_Z3950_present(ZOOM_connection c) req->preferredRecordSyntax = zoom_yaz_str_to_z3950oid(c, CLASS_RECSYN, syntax); - if (resultset->schema && *resultset->schema) + if (schema && *schema) { Z_RecordComposition *compo = (Z_RecordComposition *) odr_malloc(c->odr_out, sizeof(*compo)); @@ -1560,14 +1567,14 @@ zoom_ret send_Z3950_present(ZOOM_connection c) compo->u.complex->generic->which = Z_Schema_oid; compo->u.complex->generic->schema.oid = (Odr_oid *) - zoom_yaz_str_to_z3950oid (c, CLASS_SCHEMA, resultset->schema); + zoom_yaz_str_to_z3950oid(c, CLASS_SCHEMA, schema); if (!compo->u.complex->generic->schema.oid) { /* OID wasn't a schema! Try record syntax instead. */ compo->u.complex->generic->schema.oid = (Odr_oid *) - zoom_yaz_str_to_z3950oid (c, CLASS_RECSYN, resultset->schema); + zoom_yaz_str_to_z3950oid(c, CLASS_RECSYN, schema); } if (elementSetName && *elementSetName) {