X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isamb%2Fisamb.c;h=13bb0cf62a6480870e76a2e11334fbb99456b003;hb=ce0c8ffd1c3471504b638f6b47a0e85bf1b6f24f;hp=3b724645ab120b08a221e97f94ccc1cc9bc649c5;hpb=73920b6f7f49407da60018dfbba8f7a458c155c6;p=idzebra-moved-to-github.git diff --git a/isamb/isamb.c b/isamb/isamb.c index 3b72464..13bb0cf 100644 --- a/isamb/isamb.c +++ b/isamb/isamb.c @@ -1,8 +1,5 @@ -/* $Id: isamb.c,v 1.95 2007-11-28 10:38:10 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2009 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -50,14 +47,17 @@ struct ISAMB_head { #define INT_ENCODE 1 /* maximum size of encoded buffer */ -#define DST_ITEM_MAX 256 +#define DST_ITEM_MAX 5000 + +/* max page size for _any_ isamb use */ +#define ISAMB_MAX_PAGE 32768 #define ISAMB_MAX_LEVEL 10 /* approx 2*max page + max size of item */ -#define DST_BUF_SIZE (2*4096+300) +#define DST_BUF_SIZE (2*ISAMB_MAX_PAGE+DST_ITEM_MAX+100) /* should be maximum block size of multiple thereof */ -#define ISAMB_CACHE_ENTRY_SIZE 4096 +#define ISAMB_CACHE_ENTRY_SIZE ISAMB_MAX_PAGE /* CAT_MAX: _must_ be power of 2 */ #define CAT_MAX 4 @@ -789,7 +789,7 @@ int insert_int(ISAMB b, struct ISAMB_block *p, void *lookahead_item, #if INT_ENCODE const char *sub_item_ptr = sub_item; #endif - assert(sub_size < 128 && sub_size > 1); + assert(sub_size < DST_ITEM_MAX && sub_size > 1); memcpy(dst, startp, src - startp); @@ -1294,7 +1294,7 @@ void isamb_merge(ISAMB b, ISAM_P *pos, ISAMC_I *stream) #endif encode_ptr(&dst, p->pos); - assert(sub_size < 128 && sub_size > 1); + assert(sub_size < DST_ITEM_MAX && sub_size > 1); #if INT_ENCODE (*b->method->codec.reset)(c1); (*b->method->codec.encode)(c1, &dst, &sub_item_ptr); @@ -1640,6 +1640,7 @@ int isamb_pp_forward(ISAMB_PP pp, void *buf, const void *untilb) dst = dst0; if (p->offset == p->size) goto again; } + pp->returned_numbers++; return 1; } @@ -1667,6 +1668,7 @@ void isamb_set_root_ptr(ISAMB b, zint root_ptr) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab