X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Flimit.c;h=972d77ed238a770b6b336d744988434ded7b8c63;hb=04ecd9c7e5f10487439020b866406c58e1196ca6;hp=462726e4fc13f2bdb687200effaeaf8ea6a5064b;hpb=984155e880a57de40cd6ed2f4e7be33aecef52fa;p=idzebra-moved-to-github.git diff --git a/index/limit.c b/index/limit.c index 462726e..972d77e 100644 --- a/index/limit.c +++ b/index/limit.c @@ -1,4 +1,4 @@ -/* $Id: limit.c,v 1.3 2005-05-09 10:28:09 adam Exp $ +/* $Id: limit.c,v 1.6 2005-11-29 09:37:04 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -27,6 +27,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include "index.h" +#define ZEBRA_LIMIT_DEBUG 0 + struct zebra_limit { int complement_flag; zint *ids; @@ -63,11 +65,28 @@ static int zebra_limit_filter_cb(const void *buf, void *data) const struct it_key *key = buf; size_t i; +#if ZEBRA_LIMIT_DEBUG + yaz_log(YLOG_LOG, "zebra_limit_filter_cb zl=%p key->len=%d", zl, key->len); +#endif if (key->len != 3) return 1; for (i = 0; zl->ids[i]; i++) + { +#if ZEBRA_LIMIT_DEBUG + yaz_log(YLOG_LOG, " i=%d ids=" ZINT_FORMAT " mem=" ZINT_FORMAT, + i, zl->ids[i], key->mem[1]); +#endif if (zl->ids[i] == key->mem[1]) + { +#if ZEBRA_LIMIT_DEBUG + yaz_log(YLOG_LOG, " match. Ret=%d", zl->complement_flag ? 0:1); +#endif return zl->complement_flag ? 0 : 1; + } + } +#if ZEBRA_LIMIT_DEBUG + yaz_log(YLOG_LOG, " no match. Ret=%d", zl->complement_flag ? 1:0); +#endif return zl->complement_flag ? 1 : 0; } @@ -81,10 +100,16 @@ void zebra_limit_for_rset(struct zebra_limit *zl, void (**filter_destroy)(void *data), void **filter_data) { +#if ZEBRA_LIMIT_DEBUG + yaz_log(YLOG_LOG, "zebra_limit_for_rset debug enabled zl=%p", zl); +#endif if (zl && zl->ids) { struct zebra_limit *hl; +#if ZEBRA_LIMIT_DEBUG + yaz_log(YLOG_LOG, "enable limit"); +#endif hl = zebra_limit_create(zl->complement_flag, zl->ids); *filter_data = hl; *filter_func = zebra_limit_filter_cb;