From: Heikki Levanto Date: Mon, 30 Aug 2004 12:32:24 +0000 (+0000) Subject: Using a separate nmem for creating rsets X-Git-Tag: snippet.version.1~383 X-Git-Url: http://sru.miketaylor.org.uk/cgi-bin?a=commitdiff_plain;h=af5941499d0d0fe3f2d41f5aa1f82d6a04190349;p=idzebra-moved-to-github.git Using a separate nmem for creating rsets --- diff --git a/index/index.h b/index/index.h index 43661a8..0132e3d 100644 --- a/index/index.h +++ b/index/index.h @@ -1,4 +1,4 @@ -/* $Id: index.h,v 1.114 2004-08-25 09:23:36 adam Exp $ +/* $Id: index.h,v 1.115 2004-08-30 12:32:24 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -359,7 +359,7 @@ struct term_set_list { struct term_set_entry *last; }; -RSET rpn_search (ZebraHandle zh, NMEM mem, +RSET rpn_search (ZebraHandle zh, NMEM mem, NMEM rset_nmem, Z_RPNQuery *rpn, int num_bases, char **basenames, const char *setname, ZebraSet sset); diff --git a/index/zrpn.c b/index/zrpn.c index f65475d..83ad083 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -1,4 +1,4 @@ -/* $Id: zrpn.c,v 1.145 2004-08-24 14:25:16 heikki Exp $ +/* $Id: zrpn.c,v 1.146 2004-08-30 12:32:24 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -2199,7 +2199,8 @@ static RSET rpn_search_APT (ZebraHandle zh, Z_AttributesPlusTerm *zapt, } static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, - oid_value attributeSet, NMEM stream, + oid_value attributeSet, + NMEM stream, NMEM rset_nmem, Z_SortKeySpecList *sort_sequence, int num_bases, char **basenames) { @@ -2211,13 +2212,13 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, RSET rset_r; rset_l = rpn_search_structure (zh, zs->u.complex->s1, - attributeSet, stream, + attributeSet, stream, rset_nmem, sort_sequence, num_bases, basenames); if (rset_l == NULL) return NULL; rset_r = rpn_search_structure (zh, zs->u.complex->s2, - attributeSet, stream, + attributeSet, stream, rset_nmem, sort_sequence, num_bases, basenames); if (rset_r == NULL) @@ -2229,17 +2230,17 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, switch (zop->which) { case Z_Operator_and: - r = rsbool_create_and( NULL, /* FIXME - use a proper nmem */ + r = rsbool_create_and( rset_nmem, sizeof(struct it_key), key_compare_it, rset_l, rset_r, key_logdump_txt ); break; case Z_Operator_or: - r = rsbool_create_or( NULL, /* FIXME - use a proper nmem */ + r = rsbool_create_or( rset_nmem, sizeof(struct it_key), key_compare_it, rset_l, rset_r, key_logdump_txt ); break; case Z_Operator_and_not: - r = rsbool_create_not( NULL, /* FIXME - use a proper nmem */ + r = rsbool_create_not( rset_nmem, sizeof(struct it_key), key_compare_it, rset_l, rset_r, key_logdump_txt ); break; @@ -2264,7 +2265,7 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, twosets[0] = rset_l; twosets[1] = rset_r; - r=rsprox_create(NULL, /* FIXME - use a proper nmem */ + r=rsprox_create(rset_nmem, sizeof(struct it_key), key_compare_it, key_get_seq, 2, twosets, @@ -2309,7 +2310,7 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, r = resultSetRef (zh, zs->u.simple->u.resultSetId); if (!r) { - r = rsnull_create (NULL); /* FIXME - Use a proper nmem */ + r = rsnull_create (rset_nmem); zh->errCode = 30; zh->errString = nmem_strdup (stream, zs->u.simple->u.resultSetId); @@ -2333,7 +2334,7 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, } -RSET rpn_search (ZebraHandle zh, NMEM nmem, +RSET rpn_search (ZebraHandle zh, NMEM nmem, NMEM rset_nmem, Z_RPNQuery *rpn, int num_bases, char **basenames, const char *setname, ZebraSet sset) @@ -2360,7 +2361,8 @@ RSET rpn_search (ZebraHandle zh, NMEM nmem, attrset = oid_getentbyoid (rpn->attributeSetId); attributeSet = attrset->value; rset = rpn_search_structure (zh, rpn->RPNStructure, attributeSet, - nmem, sort_sequence, num_bases, basenames); + nmem, rset_nmem, + sort_sequence, num_bases, basenames); if (!rset) return 0; diff --git a/index/zsets.c b/index/zsets.c index 11ac101..aa2d16d 100644 --- a/index/zsets.c +++ b/index/zsets.c @@ -1,4 +1,4 @@ -/* $Id: zsets.c,v 1.57 2004-08-20 14:44:46 heikki Exp $ +/* $Id: zsets.c,v 1.58 2004-08-30 12:32:24 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -46,6 +46,7 @@ struct zebra_set { char *name; RSET rset; NMEM nmem; + NMEM rset_nmem; /* for creating the rsets in */ zint hits; int num_bases; char **basenames; @@ -88,6 +89,7 @@ ZebraSet resultSetAddRPN (ZebraHandle zh, NMEM m, zebraSet->locked = 1; zebraSet->rpn = 0; zebraSet->nmem = m; + zebraSet->rset_nmem=nmem_create(); /* FIXME - where to free this ?? */ zebraSet->num_bases = num_bases; zebraSet->basenames = @@ -96,8 +98,8 @@ ZebraSet resultSetAddRPN (ZebraHandle zh, NMEM m, zebraSet->basenames[i] = nmem_strdup (zebraSet->nmem, basenames[i]); - zebraSet->rset = rpn_search (zh, zebraSet->nmem, rpn, - zebraSet->num_bases, + zebraSet->rset = rpn_search (zh, zebraSet->nmem, zebraSet->rset_nmem, + rpn, zebraSet->num_bases, zebraSet->basenames, zebraSet->name, zebraSet); zh->hits = zebraSet->hits; @@ -237,6 +239,7 @@ ZebraSet resultSetAdd (ZebraHandle zh, const char *name, int ov) s->term_entries = 0; s->hits = 0; s->rset = 0; + s->rset_nmem=0; s->nmem = 0; s->rpn = 0; return s; @@ -254,7 +257,7 @@ ZebraSet resultSetGet (ZebraHandle zh, const char *name) NMEM nmem = nmem_create (); yaz_log (LOG_LOG, "research %s", name); s->rset = - rpn_search (zh, nmem, s->rpn, s->num_bases, + rpn_search (zh, nmem, s->rset_nmem, s->rpn, s->num_bases, s->basenames, s->name, s); nmem_destroy (nmem); } @@ -272,6 +275,9 @@ void resultSetInvalidate (ZebraHandle zh) if (s->rset) rset_delete (s->rset); s->rset = 0; + if (s->rset_nmem) + nmem_destroy(s->rset_nmem); + s->rset_nmem=0; } } @@ -312,6 +318,8 @@ void resultSetDestroy (ZebraHandle zh, int num, char **names,int *statuses) nmem_destroy (s->nmem); if (s->rset) rset_delete (s->rset); + if (s->rset_nmem) + nmem_destroy(s->rset_nmem); xfree (s->name); xfree (s); }