From 008d2cf0f073cb1e77fe14db18ce07e0c3b5d176 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 20 Apr 2005 10:15:19 +0000 Subject: [PATCH] Fixed bug #281: heap truncation fails. Problem was thattermid parameter was set for "sub" result sets.. that when counting hits/ranking etc is no longer available. termid now only set for top set. --- index/trunc.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/index/trunc.c b/index/trunc.c index 683460c..0a01829 100644 --- a/index/trunc.c +++ b/index/trunc.c @@ -1,4 +1,4 @@ -/* $Id: trunc.c,v 1.53 2005-04-20 08:32:36 adam Exp $ +/* $Id: trunc.c,v 1.54 2005-04-20 10:15:19 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -130,13 +130,14 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length, const struct key_control *kctrl, int scope, TERMID termid) { - RSET result; + RSET result; RSFD result_rsfd; int nn = 0; - result = rstemp_create( rset_nmem,kctrl, scope, - res_get(zi->res, "setTmpDir"), termid); + result = rstemp_create(rset_nmem, kctrl, scope, + res_get(zi->res, "setTmpDir"), termid); result_rsfd = rset_open(result, RSETF_WRITE); + yaz_log(YLOG_LOG, "rset_trunc_r from=%d to=%d result=%p", from, to, result); if (to - from > merge_chunk) { @@ -157,20 +158,20 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length, isam_p, i, i+i_add, merge_chunk, preserve_position, term_type, rset_nmem, - kctrl, scope,termid); + kctrl, scope, 0); else rset[rscur] = rset_trunc_r(zi, term, length, flags, isam_p, i, to, merge_chunk, preserve_position, term_type, rset_nmem, - kctrl, scope,termid); + kctrl, scope, 0); rscur++; } ti = heap_init (rscur, sizeof(struct it_key), key_compare_it); for (i = rscur; --i >= 0; ) { rsfd[i] = rset_open(rset[i], RSETF_READ); - if (rset_read(rsfd[i], ti->tmpbuf,0)) + if (rset_read(rsfd[i], ti->tmpbuf, 0)) heap_insert(ti, ti->tmpbuf, i); else { @@ -365,6 +366,7 @@ static RSET rset_trunc_r(ZebraHandle zi, const char *term, int length, yaz_log(YLOG_WARN, "Unknown isam set in rset_trunc_r"); rset_close(result_rsfd); + yaz_log(YLOG_LOG, "rset_trunc_r returned result=%p", result); return result; } @@ -402,8 +404,9 @@ RSET rset_trunc(ZebraHandle zi, ISAM_P *isam_p, int no, const struct key_control *kctrl, int scope) { TERMID termid; + RSET result; int trunc_chunk; - yaz_log(YLOG_DEBUG, "rset_trunc no=%d", no); + yaz_log(YLOG_LOG, "rset_trunc no=%d", no); if (no < 1) return rsnull_create(rset_nmem,kctrl); termid = rset_term_create(term, length, flags, term_type,rset_nmem); @@ -448,8 +451,10 @@ RSET rset_trunc(ZebraHandle zi, ISAM_P *isam_p, int no, return rsnull_create(rset_nmem, kctrl); } trunc_chunk = atoi(res_get_def(zi->res, "truncchunk", "100")); - return rset_trunc_r(zi, term, length, flags, isam_p, 0, no, trunc_chunk, - preserve_position, term_type, rset_nmem, kctrl, scope, - termid); + result = rset_trunc_r(zi, term, length, flags, isam_p, 0, no, trunc_chunk, + preserve_position, term_type, rset_nmem, kctrl, scope, + termid); + yaz_log(YLOG_LOG, "rset_trunc no=%d returned=%p", no, result); + return result; } -- 1.7.10.4