From f3fb9ca751f7bca28706c951df4ea9d22106c6a8 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 27 May 1998 16:57:44 +0000 Subject: [PATCH] Zebra returns surrogate diagnostic for single records when appropriate. --- index/zebraapi.c | 11 +++++++++-- index/zserver.c | 18 ++++++++++++++---- index/zserver.h | 8 +++++++- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/index/zebraapi.c b/index/zebraapi.c index 10a7ef7..a87ee4a 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zebraapi.c,v $ - * Revision 1.2 1998-05-20 10:12:19 adam + * Revision 1.3 1998-05-27 16:57:44 adam + * Zebra returns surrogate diagnostic for single records when + * appropriate. + * + * Revision 1.2 1998/05/20 10:12:19 adam * Implemented automatic EXPLAIN database maintenance. * Modified Zebra to work with ASN.1 compiled version of YAZ. * @@ -190,6 +194,7 @@ void zebra_records_retrieve (ZebraHandle zh, ODR stream, ZebraPosSet poset; int i, *pos_array; + zh->errCode = 0; pos_array = xmalloc (sizeof(*pos_array)); for (i = 0; ierrCode = + recs[i].errCode = zebra_record_fetch (zh, poset[i].sysno, poset[i].score, stream, input_format, comp, &recs[i].format, &recs[i].buf, &recs[i].len, &recs[i].base); + recs[i].errString = NULL; } } zebraPosSetDestroy (zh, poset, num_recs); @@ -233,6 +239,7 @@ void zebra_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, int *position, int *num_entries, ZebraScanEntry **entries, int *is_partial) { + zh->errCode = 0; zebra_register_lock (zh); rpn_scan (zh, stream, zapt, attributeset, num_bases, basenames, position, diff --git a/index/zserver.c b/index/zserver.c index 8aabcfa..b1d14ef 100644 --- a/index/zserver.c +++ b/index/zserver.c @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zserver.c,v $ - * Revision 1.57 1998-04-03 14:45:18 adam + * Revision 1.58 1998-05-27 16:57:46 adam + * Zebra returns surrogate diagnostic for single records when + * appropriate. + * + * Revision 1.57 1998/04/03 14:45:18 adam * Fixed setting of last_in_set in bend_fetch. * * Revision 1.56 1998/03/05 08:45:13 adam @@ -285,13 +289,19 @@ bend_fetchresult *bend_fetch (void *handle, bend_fetchrequest *q, int *num) r->last_in_set = 0; zebra_records_retrieve (zh, q->stream, q->setname, q->comp, q->format, 1, &retrievalRecord); - - if (zh->errCode) + if (zh->errCode) /* non Surrogate Diagnostic */ { r->errcode = zh->errCode; r->errstring = zh->errString; } - else + else if (retrievalRecord.errCode) /* Surrogate Diagnostic */ + { + q->surrogate_flag = 1; + r->errcode = retrievalRecord.errCode; + r->errstring = retrievalRecord.errString; + r->basename = retrievalRecord.base; + } + else /* Database Record */ { r->errcode = 0; r->basename = retrievalRecord.base; diff --git a/index/zserver.h b/index/zserver.h index 31ef9c7..098ab50 100644 --- a/index/zserver.h +++ b/index/zserver.h @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zserver.h,v $ - * Revision 1.31 1998-05-20 10:12:23 adam + * Revision 1.32 1998-05-27 16:57:47 adam + * Zebra returns surrogate diagnostic for single records when + * appropriate. + * + * Revision 1.31 1998/05/20 10:12:23 adam * Implemented automatic EXPLAIN database maintenance. * Modified Zebra to work with ASN.1 compiled version of YAZ. * @@ -252,6 +256,8 @@ void zebra_search_rpn (ZebraHandle zh, ODR stream, const char *setname); typedef struct { + int errCode; + char *errString; int position; char *buf; int len; -- 1.7.10.4