- Z_APDU *new_apdu;
- logf (LOG_LOG, "query match");
- new_apdu = create_Z_PDU(Z_APDU_searchResponse);
+ // medium Set
+ yaz_log (LOG_LOG, "Yaz_Proxy::result_set_optimize medium set");
+ Z_APDU *new_apdu = create_Z_PDU(Z_APDU_presentRequest);
+ Z_PresentRequest *pr = new_apdu->u.presentRequest;
+ pr->referenceId = sr->referenceId;
+ pr->resultSetId = sr->resultSetName;
+ pr->preferredRecordSyntax = sr->preferredRecordSyntax;
+ *pr->numberOfRecordsRequested = *sr->mediumSetPresentNumber;
+ if (sr->mediumSetElementSetNames)
+ {
+ pr->recordComposition = (Z_RecordComposition *)
+ odr_malloc(odr_encode(), sizeof(Z_RecordComposition));
+ pr->recordComposition->which = Z_RecordComp_simple;
+ pr->recordComposition->u.simple = sr->mediumSetElementSetNames;
+ }
+ m_client->m_sr_transform = 1;
+ return new_apdu;
+ }
+ else if (m_client->m_last_resultCount >= *sr->largeSetLowerBound ||
+ m_client->m_last_resultCount == 0)
+ {
+ // large set
+ yaz_log (LOG_LOG, "Yaz_Proxy::result_set_optimize large set");
+ Z_APDU *new_apdu = create_Z_PDU(Z_APDU_searchResponse);