X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=rset%2Frset.c;h=3da4bd6220f55f037e06aac3bd556cd26fb7b504;hp=f97b8fb8ed24b7c9adf34f23498ce644f84a02a0;hb=732870c555c7d32c5d2b6a4914c6fa7232eb26b2;hpb=dfecbd92db8f9581ec24f1cd29c48198e1413546 diff --git a/rset/rset.c b/rset/rset.c index f97b8fb..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; @@ -405,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; } @@ -428,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