X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzserver.c;h=41527cf4e068a6692e3cdc1f1ee1518aa4c5d4a6;hb=edf40cf79512700f2a60fce30e0cfee4b5c8d890;hp=cfa6587a2a05bebbb7463b96dba8b2aa57f99a70;hpb=1e869b75dd665a3ac79648269e1416bf7e04dcdd;p=idzebra-moved-to-github.git diff --git a/index/zserver.c b/index/zserver.c index cfa6587..41527cf 100644 --- a/index/zserver.c +++ b/index/zserver.c @@ -1,4 +1,4 @@ -/* $Id: zserver.c,v 1.114 2004-03-29 15:48:14 adam Exp $ +/* $Id: zserver.c,v 1.121 2004-08-25 09:17:33 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -170,15 +170,16 @@ bend_initresult *bend_init (bend_initrequest *q) static void search_terms (ZebraHandle zh, bend_search_rr *r) { - int count; + zint count = 0; int no_terms; int i; - int type; + int type = Z_Term_general struct Z_External *ext; Z_SearchInfoReport *sr; /* get no of terms for result set */ - no_terms = zebra_resultSetTerms (zh, r->setname, 0, 0, 0, 0, 0); + no_terms = 0; /* zebra_resultSetTerms (zh, r->setname, 0, 0, 0, 0, 0); */ + /* FIXME - Rsets don't know number of terms no more ??? */ if (!no_terms) return; @@ -208,9 +209,11 @@ static void search_terms (ZebraHandle zh, bend_search_rr *r) Z_Term *term; char outbuf[1024]; size_t len = sizeof(outbuf); + /* FIXME - Can we just skip this ??? */ + /* zebra_resultSetTerms (zh, r->setname, i, &count, &type, outbuf, &len); - + */ sr->elements[i] = odr_malloc (r->stream, sizeof(**sr->elements)); sr->elements[i]->subqueryId = 0; sr->elements[i]->fullQuery = odr_malloc (r->stream, @@ -246,7 +249,9 @@ static void search_terms (ZebraHandle zh, bend_search_rr *r) sr->elements[i]->subqueryExpression->u.term->termComment = 0; sr->elements[i]->subqueryInterpretation = 0; sr->elements[i]->subqueryRecommendation = 0; - sr->elements[i]->subqueryCount = odr_intdup (r->stream, count); + if (count > 2000000000) + count = 2000000000; + sr->elements[i]->subqueryCount = odr_intdup (r->stream, (int) count); sr->elements[i]->subqueryWeight = 0; sr->elements[i]->resultsByDB = 0; } @@ -329,6 +334,11 @@ static int bend_scan (void *handle, bend_scan_rr *r) zebra_result (zh, &r->errcode, &r->errstring); return 0; } + if (r->step_size != 0 && *r->step_size != 0) { + r->errcode = 205; /* "Only zero step size supported for Scan" */ + r->errstring = 0; + return 0; + } r->entries = (struct scan_entry *) odr_malloc (r->stream, sizeof(*r->entries) * r->num_entries); zebra_scan (zh, r->stream, r->term, @@ -378,6 +388,10 @@ int bend_delete (void *handle, bend_delete_rr *rr) static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r) { + if (r->toKeep->databaseName) + { + yaz_log(LOG_LOG, "adm request database %s", r->toKeep->databaseName); + } switch (r->toKeep->which) { case Z_ESAdminOriginPartToKeep_reIndex: @@ -404,6 +418,9 @@ static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r) break; case Z_ESAdminOriginPartToKeep_commit: yaz_log(LOG_LOG, "adm-commit"); + if (r->toKeep->databaseName) + zebra_select_database(zh, r->toKeep->databaseName); + zebra_commit(zh); break; case Z_ESAdminOriginPartToKeep_shutdown: yaz_log(LOG_LOG, "shutdown"); @@ -416,10 +433,6 @@ static int es_admin_request (ZebraHandle zh, Z_AdminEsRequest *r) default: yaz_log(LOG_LOG, "unknown admin"); } - if (r->toKeep->databaseName) - { - yaz_log(LOG_LOG, "database %s", r->toKeep->databaseName); - } return 0; } @@ -534,7 +547,7 @@ int bend_esrequest (void *handle, bend_esrequest_rr *rr) Z_External *rec = notToKeep->elements[i]->record; struct oident *oident = 0; Odr_oct *opaque_recid = 0; - int sysno = 0; + SYSNO sysno = 0; if (notToKeep->elements[i]->u.opaque) { @@ -633,7 +646,8 @@ int bend_esrequest (void *handle, bend_esrequest_rr *rr) 0, /* match */ 0, /* fname */ rec->u.octet_aligned->buf, - rec->u.octet_aligned->len); + rec->u.octet_aligned->len, + 0); if (r) { rr->errcode = 224; @@ -695,7 +709,7 @@ static void bend_start (struct statserv_options_block *sob) { if (sob->handle) zebra_stop((ZebraService) sob->handle); - sob->handle = zebra_start(sob->configname, 0, 0); + sob->handle = zebra_start(sob->configname); if (!sob->handle) { yaz_log (LOG_FATAL, "Failed to read config `%s'", sob->configname);