X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=rset%2Frset.c;h=3da4bd6220f55f037e06aac3bd556cd26fb7b504;hb=0052fb5520062c328006dc3537f39d28e88f3579;hp=5a187422e3337bc6677003b580e82c1eaff3234d;hpb=97a7adeb9e5059463f039495cc01cfa448463a27;p=idzebra-moved-to-github.git diff --git a/rset/rset.c b/rset/rset.c index 5a18742..3da4bd6 100644 --- a/rset/rset.c +++ b/rset/rset.c @@ -1,5 +1,5 @@ /* This file is part of the Zebra server. - Copyright (C) 1995-2008 Index Data + Copyright (C) 1994-2011 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -17,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include @@ -27,6 +30,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA static int log_level = 0; static int log_level_initialized = 0; + /** \brief Common constuctor for RFDs \param rs Result set handle. @@ -83,6 +87,7 @@ static void rset_close_int(RSET rs, RSFD rfd) void rset_set_hits_limit(RSET rs, zint l) { + yaz_log(log_level, "rset_set_hits_limit %p l=" ZINT_FORMAT, rs, l); rs->hits_limit = l; } @@ -99,7 +104,7 @@ void rset_close(RSFD rfd) TERMID termid; char buf[100]; - while(rfd->counted_items <= rs->hits_limit + while (rfd->counted_items <= rs->hits_limit && rset_default_read(rfd, buf, &termid)) ; @@ -108,7 +113,7 @@ void rset_close(RSFD rfd) " hits_limit=" ZINT_FORMAT, rs, rs->hits_count, rs->hits_limit); rs->hits_approx = 0; - if (rs->hits_count > rs->hits_limit) + if (rs->hits_count > rs->hits_limit && rs->hits_limit > 0) { double cur, tot; zint est; @@ -134,7 +139,8 @@ void rset_close(RSFD rfd) rs->hits_approx = 1; } } - yaz_log(log_level, "rset_close p=%p count=" ZINT_FORMAT, rs, + yaz_log(log_level, "rset_close(%s) p=%p count=" ZINT_FORMAT, + rs->control->desc, rs, rs->hits_count); } rset_close_int(rs, rfd); @@ -170,9 +176,8 @@ RSET rset_create_base(const struct rset_control *sel, rset = (RSET) nmem_malloc(nmem, sizeof(*rset)); yaz_log(log_level, "rs_create(%s) rs=%p (nm=%p)", sel->desc, rset, nmem); - yaz_log(log_level, " ref_id=%s limit=" ZINT_FORMAT, - (term && term->ref_id ? term->ref_id : "null"), - rset->hits_limit); + yaz_log(log_level, " ref_id=%s", + (term && term->ref_id ? term->ref_id : "null")); rset->nmem = nmem; rset->control = sel; rset->refcount = 1; @@ -315,6 +320,11 @@ struct ord_list *ord_list_dup(NMEM nmem, struct ord_list *list) return n; } +void ord_list_print(struct ord_list *list) +{ + for (; list; list = list->next) + yaz_log(YLOG_LOG, "ord_list %d", list->ord); +} /** \brief Creates a TERMID entry. \param name Term/Name buffer with given length @@ -400,12 +410,12 @@ int rset_default_forward(RSFD rfd, void *buf, TERMID *term, while ((more = rset_read(rfd, buf, term)) > 0) { - if ((rfd->rset->keycontrol->cmp)(untilbuf, buf) <= 1) + if ((rfd->rset->keycontrol->cmp)(untilbuf, buf) < rset->scope) break; } if (log_level) - yaz_log (log_level, "rset_default_forward exiting m=%d c=%d", - more, rset->scope); + yaz_log(log_level, "rset_default_forward exiting rfd=%p scope=%d m=%d c=%d", + rfd, rset->scope, more, rset->scope); return more; } @@ -423,6 +433,7 @@ void rset_visit(RSET rset, int level) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab