From 154c6dacd76fe573d1d6ee3bc7284a05f0445bc6 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 11 Mar 1998 11:18:18 +0000 Subject: [PATCH] Changed the isc_merge to take into account the mfill (minimum-fill). --- isamc/isamc.c | 13 ++++++++----- isamc/merge.c | 17 ++++++++++------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/isamc/isamc.c b/isamc/isamc.c index b1e8fe2..9cd4471 100644 --- a/isamc/isamc.c +++ b/isamc/isamc.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: isamc.c,v $ - * Revision 1.9 1998-03-06 13:54:02 adam + * Revision 1.10 1998-03-11 11:18:18 adam + * Changed the isc_merge to take into account the mfill (minimum-fill). + * + * Revision 1.9 1998/03/06 13:54:02 adam * Fixed two nasty bugs in isc_merge. * * Revision 1.8 1997/09/17 12:19:20 adam @@ -65,10 +68,10 @@ ISAMC_M isc_getmethod (void) { 32, 28, 0, 3 }, { 64, 54, 30, 0 }, #else - { 32, 28, 0, 20 }, - { 512, 490, 100, 20 }, - { 4096, 3950, 1000, 20 }, - {32768, 32000, 10000, 0 }, + { 32, 28, 20, 20 }, + { 512, 490, 340, 20 }, + { 4096, 3950, 3200, 20 }, + {32768, 32000, 30000, 0 }, #endif }; ISAMC_M m = xmalloc (sizeof(*m)); diff --git a/isamc/merge.c b/isamc/merge.c index b2092c1..2728194 100644 --- a/isamc/merge.c +++ b/isamc/merge.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: merge.c,v $ - * Revision 1.6 1998-03-06 13:54:03 adam + * Revision 1.7 1998-03-11 11:18:18 adam + * Changed the isc_merge to take into account the mfill (minimum-fill). + * + * Revision 1.6 1998/03/06 13:54:03 adam * Fixed two nasty bugs in isc_merge. * * Revision 1.5 1997/02/12 20:42:43 adam @@ -190,18 +193,18 @@ ISAMC_P isc_merge (ISAMC is, ISAMC_P ipos, ISAMC_I data) { /* the resulting output is of the same category as the the original - */ - if (mb[ptr].offset == r_offset) + */ + if (r_offset <= mb[ptr].offset +is->method->filecat[cat].mfill) { - /* the resulting output block is empty. Delete + /* the resulting output block is too small/empty. Delete the original (if any) - */ + */ if (is->method->debug > 3) logf (LOG_LOG, "isc: release A"); if (mb[ptr].block) isc_release_block (is, pp->cat, mb[ptr].block); mb[ptr].block = pp->pos; - mb[ptr].dirty = 2; + mb[ptr].dirty = 1; if (ptr > 0) mb[ptr-1].dirty = 1; } @@ -256,7 +259,7 @@ ISAMC_P isc_merge (ISAMC is, ISAMC_P ipos, ISAMC_I data) /* is next input item the same as current except for the delete flag? */ cmp = (*is->method->compare_item)(i_item, f_item); - if (!cmp && i_mode) + if (!cmp && i_mode) /* delete/insert nop? */ { /* yes! insert as if it was an insert only */ memcpy (r_item, i_item, i_item_ptr - i_item); -- 1.7.10.4