X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=8a651400b4363e7f5d638eaea67e3dcbe91fd5e0;hb=26fdcc5e41254131ef755b14243c19d202b14d8e;hp=44d69f7a8d6be75974a16c948bfda649dd8092c9;hpb=7fb350046d29651fbc27cf92aefde03ceff53895;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index 44d69f7..8a65140 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -1,10 +1,24 @@ /* - * Copyright (c) 1995-1998, Index Data + * Copyright (c) 1995-1999, Index Data * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.82 1998-10-20 14:00:30 quinn + * Revision 1.86 1999-02-02 13:57:38 adam + * Uses preprocessor define WIN32 instead of WINDOWS to build code + * for Microsoft WIN32. + * + * Revision 1.85 1998/11/17 09:52:59 adam + * Fixed minor bug (introduced by previous commit). + * + * Revision 1.84 1998/11/16 16:02:32 adam + * Added loggin utilies, log_rpn_query and log_scan_term. These used + * to be part of Zebra. + * + * Revision 1.83 1998/11/03 10:09:36 adam + * Fixed bug regarding YC. + * + * Revision 1.82 1998/10/20 14:00:30 quinn * Fixed Scan * * Revision 1.81 1998/10/13 16:12:24 adam @@ -288,7 +302,7 @@ #include #include #include -#ifdef WINDOWS +#ifdef WIN32 #include #else #include @@ -302,6 +316,7 @@ #include #include #include +#include #include #include @@ -972,7 +987,7 @@ static Z_DiagRecs *diagrecs(association *assoc, int error, char *addinfo) Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (assoc->encode, sizeof(*drec)); Z_DefaultDiagFormat *rec = (Z_DefaultDiagFormat *)odr_malloc (assoc->encode, sizeof(*rec)); - logf(LOG_DEBUG, "DiagRecs: %d -- %s", error, addinfo); + logf(LOG_DEBUG, "DiagRecs: %d -- %s", error, addinfo ? addinfo : ""); bib1.proto = assoc->proto; bib1.oclass = CLASS_DIAGSET; bib1.value = VAL_BIB1; @@ -1004,9 +1019,12 @@ static Z_Records *pack_records(association *a, char *setname, int start, { int oid[OID_SIZE]; int recno, total_length = 0, toget = *num, dumped_records = 0; - Z_Records *records = (Z_Records *)odr_malloc (a->encode, sizeof(*records)); - Z_NamePlusRecordList *reclist = (Z_NamePlusRecordList *)odr_malloc (a->encode, sizeof(*reclist)); - Z_NamePlusRecord **list = (Z_NamePlusRecord **)odr_malloc (a->encode, sizeof(*list) * toget); + Z_Records *records = + (Z_Records *) odr_malloc (a->encode, sizeof(*records)); + Z_NamePlusRecordList *reclist = + (Z_NamePlusRecordList *) odr_malloc (a->encode, sizeof(*reclist)); + Z_NamePlusRecord **list = + (Z_NamePlusRecord **) odr_malloc (a->encode, sizeof(*list) * toget); oident recform; records->which = Z_Records_DBOSD; @@ -1017,7 +1035,7 @@ static Z_Records *pack_records(association *a, char *setname, int start, *num = 0; *next = 0; - logf(LOG_DEBUG, "Request to pack %d+%d", start, toget); + logf(LOG_LOG, "Request to pack %d+%d", start, toget); logf(LOG_DEBUG, "pms=%d, mrs=%d", a->preferredMessageSize, a->maximumRecordSize); for (recno = start; reclist->num_records < toget; recno++) @@ -1186,14 +1204,28 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, int *fd) { Z_SearchRequest *req = reqb->request->u.searchRequest; - bend_search_rr *bsrr = (bend_search_rr *)nmem_malloc (reqb->request_mem, sizeof(*bsrr)); - + bend_search_rr *bsrr = + (bend_search_rr *)nmem_malloc (reqb->request_mem, sizeof(*bsrr)); + logf(LOG_LOG, "Got SearchRequest."); save_referenceId (reqb, req->referenceId); /* store ref id in request */ bsrr->fd = fd; bsrr->request = reqb; bsrr->association = assoc; + + logf (LOG_LOG, "ResultSet '%s'", req->resultSetName); + if (req->databaseNames) + { + int i; + for (i = 0; i < req->num_databaseNames; i++) + logf (LOG_LOG, "Database '%s'", req->databaseNames[i]); + } + switch (req->query->which) + { + case Z_Query_type_1: case Z_Query_type_101: + log_rpn_query (req->query->u.type_1); + } if (assoc->bend_search) { bsrr->setname = req->resultSetName; @@ -1206,7 +1238,8 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrr->errcode = 0; bsrr->hits = 0; bsrr->errstring = NULL; - ((int (*)(void *, bend_search_rr *))(assoc->bend_search))(assoc->backend, bsrr); + ((int (*)(void *, bend_search_rr *))(assoc->bend_search)) + (assoc->backend, bsrr); if (!bsrr->request) return 0; } @@ -1465,10 +1498,12 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) diagrecs_p = diagrecs(assoc, 205, 0); else { - if (req->termListAndStartPoint->term->which == Z_Term_general) - logf(LOG_DEBUG, " term: '%.*s'", - req->termListAndStartPoint->term->u.general->len, - req->termListAndStartPoint->term->u.general->buf); + if (req->databaseNames) + { + int i; + for (i = 0; i < req->num_databaseNames; i++) + logf (LOG_LOG, "Database '%s'", req->databaseNames[i]); + } srq.num_bases = req->num_databaseNames; srq.basenames = req->databaseNames; srq.num_entries = *req->numberOfTermsRequested; @@ -1479,6 +1514,7 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) srq.attributeset = VAL_NONE; else srq.attributeset = attset->value; + log_scan_term (req->termListAndStartPoint, attset->value); srq.term_position = req->preferredPositionInResponse ? *req->preferredPositionInResponse : 1; if (!(srs = bend_scan(assoc->backend, &srq, 0))) @@ -1531,17 +1567,13 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) } else { - Z_Records *zrecords = diagrec (assoc, - srs->entries[i].errcode, - srs->entries[i].errstring); - logf(LOG_DEBUG, " term sd code=%d addinfo=%s", - srs->entries[i].errcode, - (srs->entries[i].errstring?srs->entries[i].errstring : - "")); - assert (zrecords->which == Z_Records_NSD); + Z_DiagRecs *drecs = diagrecs (assoc, + srs->entries[i].errcode, + srs->entries[i].errstring); + assert (drecs->num_diagRecs == 1); e->which = Z_Entry_surrogateDiagnostic; - e->u.surrogateDiagnostic = - zrecords->u.nonSurrogateDiagnostic; + assert (drecs->diagRecs[0]); + e->u.surrogateDiagnostic = drecs->diagRecs[0]; } } }