projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Print info about limit filter progress if ZEBRA_LIMIT_DEBUG=1.
[idzebra-moved-to-github.git]
/
index
/
limit.c
diff --git
a/index/limit.c
b/index/limit.c
index
36a94f8
..
20dff80
100644
(file)
--- a/
index/limit.c
+++ b/
index/limit.c
@@
-1,4
+1,4
@@
-/* $Id: limit.c,v 1.2 2005-05-09 10:16:13 adam Exp $
+/* $Id: limit.c,v 1.4 2005-10-30 22:31:28 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
Copyright (C) 1995-2005
Index Data ApS
@@
-27,6
+27,8
@@
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include <yaz/diagbib1.h>
#include "index.h"
#include <yaz/diagbib1.h>
#include "index.h"
+#define ZEBRA_LIMIT_DEBUG 1
+
struct zebra_limit {
int complement_flag;
zint *ids;
struct zebra_limit {
int complement_flag;
zint *ids;
@@
-45,10
+47,10
@@
struct zebra_limit *zebra_limit_create(int complement_flag, zint *ids)
{
struct zebra_limit *zl = 0;
size_t i;
{
struct zebra_limit *zl = 0;
size_t i;
- for (i = 0; ids && ids[i]; i++)
- ;
- if (i)
+ if (ids)
{
{
+ for (i = 0; ids[i]; i++)
+ ;
zl = xmalloc(sizeof(*zl));
zl->ids = xmalloc((i+1) * sizeof(*ids));
memcpy(zl->ids, ids, (i+1) * sizeof(*ids));
zl = xmalloc(sizeof(*zl));
zl->ids = xmalloc((i+1) * sizeof(*ids));
memcpy(zl->ids, ids, (i+1) * sizeof(*ids));
@@
-63,12
+65,29
@@
static int zebra_limit_filter_cb(const void *buf, void *data)
const struct it_key *key = buf;
size_t i;
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 (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 (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;
return zl->complement_flag ? 0 : 1;
- 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;
}
static void zebra_limit_destroy_cb(void *data)
}
static void zebra_limit_destroy_cb(void *data)
@@
-81,6
+100,9
@@
void zebra_limit_for_rset(struct zebra_limit *zl,
void (**filter_destroy)(void *data),
void **filter_data)
{
void (**filter_destroy)(void *data),
void **filter_data)
{
+#if ZEBRA_LIMIT_DEBUG
+ yaz_log(YLOG_LOG, "zebra_limit_for_rset debug enabled");
+#endif
if (zl && zl->ids)
{
struct zebra_limit *hl;
if (zl && zl->ids)
{
struct zebra_limit *hl;