summaryrefslogtreecommitdiff
path: root/myisam/mi_extra.c
diff options
context:
space:
mode:
Diffstat (limited to 'myisam/mi_extra.c')
-rw-r--r--myisam/mi_extra.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/myisam/mi_extra.c b/myisam/mi_extra.c
index d7a3aea516d..75057dd4e6a 100644
--- a/myisam/mi_extra.c
+++ b/myisam/mi_extra.c
@@ -55,12 +55,17 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg)
/*
Free buffers and reset the following flags:
EXTRA_CACHE, EXTRA_WRITE_CACHE, EXTRA_KEYREAD, EXTRA_QUICK
+
+ If the row buffer cache is large (for dynamic tables), reduce it
+ to save memory.
*/
if (info->opt_flag & (READ_CACHE_USED | WRITE_CACHE_USED))
{
info->opt_flag&= ~(READ_CACHE_USED | WRITE_CACHE_USED);
error=end_io_cache(&info->rec_cache);
}
+ if (share->base.blobs)
+ mi_alloc_rec_buff(info, -1, &info->rec_buff);
#if defined(HAVE_MMAP) && defined(HAVE_MADVICE)
if (info->opt_flag & MEMMAP_USED)
madvise(share->file_map,share->state.state.data_file_length,MADV_RANDOM);
@@ -358,33 +363,6 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg)
case HA_EXTRA_QUICK:
info->quick_mode=1;
break;
- case HA_EXTRA_BULK_INSERT_BEGIN:
- error=_mi_init_bulk_insert(info, (extra_arg ? *(ulong*) extra_arg :
- myisam_bulk_insert_tree_size));
- break;
- case HA_EXTRA_BULK_INSERT_FLUSH:
- if (info->bulk_insert)
- {
- uint index_to_flush= *(uint*) extra_arg;
- if (is_tree_inited(&info->bulk_insert[index_to_flush]))
- reset_tree(&info->bulk_insert[index_to_flush]);
- }
- break;
- case HA_EXTRA_BULK_INSERT_END:
- if (info->bulk_insert)
- {
- uint i;
- for (i=0 ; i < share->base.keys ; i++)
- {
- if (is_tree_inited(& info->bulk_insert[i]))
- {
- delete_tree(& info->bulk_insert[i]);
- }
- }
- my_free((void *)info->bulk_insert, MYF(0));
- info->bulk_insert=0;
- }
- break;
case HA_EXTRA_NO_ROWS:
if (!share->state.header.uniques)
info->opt_flag|= OPT_NO_ROWS;