X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Ftrunc.c;h=7632b1ec06252e315077e11b3cd11fec4f042301;hb=3db15cf883ad80b6a4b0e960f3c3b59c86b59c6b;hp=d1deaa100dd49399bf62dacff6e07174651bebac;hpb=75a4bfb9aee40405a751320769d74fd890f2c0b4;p=idzebra-moved-to-github.git diff --git a/index/trunc.c b/index/trunc.c index d1deaa1..7632b1e 100644 --- a/index/trunc.c +++ b/index/trunc.c @@ -1,10 +1,26 @@ /* - * Copyright (C) 1994-1996, Index Data I/S + * Copyright (C) 1994-1998, Index Data I/S * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: trunc.c,v $ - * Revision 1.4 1996-12-23 15:30:44 adam + * Revision 1.9 1998-01-12 15:04:09 adam + * The test option (-s) only uses read-lock (and not write lock). + * + * Revision 1.8 1997/10/31 12:34:27 adam + * Bug fix: memory leak. + * + * Revision 1.7 1997/09/29 09:07:29 adam + * Minor change. + * + * Revision 1.6 1997/09/22 12:39:06 adam + * Added get_pos method for the ranked result sets. + * + * Revision 1.5 1997/09/17 12:19:17 adam + * Zebra version corresponds to YAZ version 1.4. + * Changed Zebra server so that it doesn't depend on global common_resource. + * + * Revision 1.4 1996/12/23 15:30:44 adam * Work on truncation. * Bug fix: result sets weren't deleted after server shut down. * @@ -96,9 +112,9 @@ static void heap_insert (struct trunc_info *ti, const char *buf, int indx) } } -static -struct trunc_info *heap_init (int size, int key_size, - int (*cmp)(const void *p1, const void *p2)) +static struct trunc_info *heap_init (int size, int key_size, + int (*cmp)(const void *p1, + const void *p2)) { struct trunc_info *ti = xmalloc (sizeof(*ti)); int i; @@ -128,6 +144,7 @@ static void heap_close (struct trunc_info *ti) xfree (ti->heap); xfree (ti->swapbuf); xfree (ti->tmpbuf); + xfree (ti->buf); xfree (ti); } @@ -139,6 +156,7 @@ static RSET rset_trunc_r (ZServerInfo *zi, ISAM_P *isam_p, int from, int to, rset_temp_parms parms; parms.key_size = sizeof(struct it_key); + parms.temp_path = res_get (zi->res, "setTmpDir"); result = rset_create (rset_kind_temp, &parms); result_rsfd = rset_open (result, RSETF_WRITE|RSETF_SORT_SYSNO); @@ -337,7 +355,7 @@ static int isamc_trunc_cmp (const void *p1, const void *p2) RSET rset_trunc (ZServerInfo *zi, ISAM_P *isam_p, int no) { - logf (LOG_LOG, "rset_trunc no=%d", no); + logf (LOG_DEBUG, "rset_trunc no=%d", no); if (zi->isam) { if (no < 1) @@ -382,7 +400,10 @@ RSET rset_trunc (ZServerInfo *zi, ISAM_P *isam_p, int no) qsort (isam_p, no, sizeof(*isam_p), isamc_trunc_cmp); } else - logf (LOG_FATAL, "Neither isam nor isamc set in rset_trunc"); + { + logf (LOG_WARN, "Neither isam nor isamc set in rset_trunc"); + return rset_create (rset_kind_null, NULL); + } return rset_trunc_r (zi, isam_p, 0, no, 100); }