From: Heikki Levanto Date: Wed, 3 Nov 2004 16:04:45 +0000 (+0000) Subject: Fixed bug #203, rank-1 crashed with isam-c X-Git-Tag: snippet.version.1~273 X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=commitdiff_plain;h=24a64bbffcb21e463e21c714fa8bfdb76eda6b42 Fixed bug #203, rank-1 crashed with isam-c The fix was to add a TERMID to rstemp, then everything works fine. --- diff --git a/include/rset.h b/include/rset.h index 0fc191f..f9ef08b 100644 --- a/include/rset.h +++ b/include/rset.h @@ -1,4 +1,4 @@ -/* $Id: rset.h,v 1.41 2004-10-22 11:33:28 heikki Exp $ +/* $Id: rset.h,v 1.42 2004-11-03 16:04:45 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Index Data Aps @@ -216,7 +216,7 @@ zint rset_count(RSET rs); RSET rstemp_create( NMEM nmem, const struct key_control *kcontrol, int scope, - const char *temp_path); + const char *temp_path, TERMID term); RSET rsnull_create(NMEM nmem, const struct key_control *kcontrol); diff --git a/index/trunc.c b/index/trunc.c index 893e1c0..0b6f12d 100644 --- a/index/trunc.c +++ b/index/trunc.c @@ -1,4 +1,4 @@ -/* $Id: trunc.c,v 1.47 2004-10-20 14:32:28 heikki Exp $ +/* $Id: trunc.c,v 1.48 2004-11-03 16:04:45 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -127,7 +127,8 @@ static RSET rset_trunc_r (ZebraHandle zi, const char *term, int length, const char *flags, ISAMS_P *isam_p, int from, int to, int merge_chunk, int preserve_position, int term_type, NMEM rset_nmem, - const struct key_control *kctrl, int scope) + const struct key_control *kctrl, int scope, + TERMID termid) { RSET result; RSFD result_rsfd; @@ -141,7 +142,7 @@ static RSET rset_trunc_r (ZebraHandle zi, const char *term, int length, result = rset_create (rset_kind_temp, &parms); */ result=rstemp_create( rset_nmem,kctrl, scope, - res_get (zi->res, "setTmpDir")); + res_get (zi->res, "setTmpDir"), termid); result_rsfd = rset_open (result, RSETF_WRITE); if (to - from > merge_chunk) @@ -163,13 +164,13 @@ 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); + kctrl, scope,termid); else rset[rscur] = rset_trunc_r (zi, term, length, flags, isam_p, i, to, merge_chunk, preserve_position, term_type, rset_nmem, - kctrl, scope); + kctrl, scope,termid); rscur++; } ti = heap_init (rscur, sizeof(struct it_key), key_compare_it); @@ -451,6 +452,7 @@ RSET rset_trunc (ZebraHandle zi, ISAMS_P *isam_p, int no, return rsnull_create (rset_nmem, kctrl); } return rset_trunc_r (zi, term, length, flags, isam_p, 0, no, 100, - preserve_position, term_type, rset_nmem,kctrl,scope); + preserve_position, term_type, rset_nmem,kctrl,scope, + termid); } diff --git a/index/zrpn.c b/index/zrpn.c index c185b95..9de1921 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -1,4 +1,4 @@ -/* $Id: zrpn.c,v 1.158 2004-10-26 15:32:11 heikki Exp $ +/* $Id: zrpn.c,v 1.159 2004-11-03 16:04:45 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps @@ -1739,7 +1739,7 @@ static RSET rpn_search_APT_local (ZebraHandle zh, Z_AttributesPlusTerm *zapt, struct it_key key; int sys; result = rstemp_create( rset_nmem,key_it_ctrl,key_it_ctrl->scope, - res_get (zh->res, "setTmpDir") ); + res_get (zh->res, "setTmpDir"),0 ); rsfd = rset_open (result, RSETF_WRITE); sys = atoi(termz); diff --git a/rset/rstemp.c b/rset/rstemp.c index 621addf..29d4ffc 100644 --- a/rset/rstemp.c +++ b/rset/rstemp.c @@ -1,4 +1,4 @@ -/* $Id: rstemp.c,v 1.52 2004-10-22 10:12:52 heikki Exp $ +/* $Id: rstemp.c,v 1.53 2004-11-03 16:04:46 heikki Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Index Data Aps @@ -48,7 +48,7 @@ static const struct rset_control control = { "temp", r_delete, - rset_get_no_terms, + rset_get_one_term, r_open, r_close, rset_default_forward, @@ -81,9 +81,9 @@ struct rset_temp_rfd { RSET rstemp_create( NMEM nmem, const struct key_control *kcontrol, int scope, - const char *temp_path) + const char *temp_path,TERMID term) { - RSET rnew=rset_create_base(&control, nmem, kcontrol, scope,0); + RSET rnew=rset_create_base(&control, nmem, kcontrol, scope,term); struct rset_temp_info *info; info = (struct rset_temp_info *) nmem_malloc(rnew->nmem, sizeof(*info));