mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Merge
This commit is contained in:
commit
7681e62422
3 changed files with 39 additions and 15 deletions
|
@ -658,6 +658,7 @@ extern int init_io_cache(IO_CACHE *info,File file,uint cachesize,
|
||||||
extern my_bool reinit_io_cache(IO_CACHE *info,enum cache_type type,
|
extern my_bool reinit_io_cache(IO_CACHE *info,enum cache_type type,
|
||||||
my_off_t seek_offset,pbool use_async_io,
|
my_off_t seek_offset,pbool use_async_io,
|
||||||
pbool clear_cache);
|
pbool clear_cache);
|
||||||
|
extern void setup_io_cache(IO_CACHE* info);
|
||||||
extern int _my_b_read(IO_CACHE *info,byte *Buffer,uint Count);
|
extern int _my_b_read(IO_CACHE *info,byte *Buffer,uint Count);
|
||||||
#ifdef THREAD
|
#ifdef THREAD
|
||||||
extern int _my_b_read_r(IO_CACHE *info,byte *Buffer,uint Count);
|
extern int _my_b_read_r(IO_CACHE *info,byte *Buffer,uint Count);
|
||||||
|
|
|
@ -70,9 +70,40 @@ static void my_aiowait(my_aio_result *result);
|
||||||
#define IO_ROUND_UP(X) (((X)+IO_SIZE-1) & ~(IO_SIZE-1))
|
#define IO_ROUND_UP(X) (((X)+IO_SIZE-1) & ~(IO_SIZE-1))
|
||||||
#define IO_ROUND_DN(X) ( (X) & ~(IO_SIZE-1))
|
#define IO_ROUND_DN(X) ( (X) & ~(IO_SIZE-1))
|
||||||
|
|
||||||
static void
|
|
||||||
init_functions(IO_CACHE* info, enum cache_type type)
|
/*
|
||||||
|
Setup internal pointers inside IO_CACHE
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
setup_io_cache()
|
||||||
|
info IO_CACHE handler
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
This is called on automaticly on init or reinit of IO_CACHE
|
||||||
|
It must be called externally if one moves or copies an IO_CACHE
|
||||||
|
object.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void setup_io_cache(IO_CACHE* info)
|
||||||
{
|
{
|
||||||
|
/* Ensure that my_b_tell() and my_b_bytes_in_cache works */
|
||||||
|
if (info->type == WRITE_CACHE)
|
||||||
|
{
|
||||||
|
info->current_pos= &info->write_pos;
|
||||||
|
info->current_end= &info->write_end;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
info->current_pos= &info->read_pos;
|
||||||
|
info->current_end= &info->read_end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
init_functions(IO_CACHE* info)
|
||||||
|
{
|
||||||
|
enum cache_type type= info->type;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case READ_NET:
|
case READ_NET:
|
||||||
/*
|
/*
|
||||||
|
@ -96,17 +127,7 @@ init_functions(IO_CACHE* info, enum cache_type type)
|
||||||
info->write_function = _my_b_write;
|
info->write_function = _my_b_write;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ensure that my_b_tell() and my_b_bytes_in_cache works */
|
setup_io_cache(info);
|
||||||
if (type == WRITE_CACHE)
|
|
||||||
{
|
|
||||||
info->current_pos= &info->write_pos;
|
|
||||||
info->current_end= &info->write_end;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
info->current_pos= &info->read_pos;
|
|
||||||
info->current_end= &info->read_end;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -236,7 +257,7 @@ int init_io_cache(IO_CACHE *info, File file, uint cachesize,
|
||||||
info->end_of_file= end_of_file;
|
info->end_of_file= end_of_file;
|
||||||
info->error=0;
|
info->error=0;
|
||||||
info->type= type;
|
info->type= type;
|
||||||
init_functions(info,type);
|
init_functions(info);
|
||||||
#ifdef HAVE_AIOWAIT
|
#ifdef HAVE_AIOWAIT
|
||||||
if (use_async_io && ! my_disable_async_io)
|
if (use_async_io && ! my_disable_async_io)
|
||||||
{
|
{
|
||||||
|
@ -358,7 +379,7 @@ my_bool reinit_io_cache(IO_CACHE *info, enum cache_type type,
|
||||||
}
|
}
|
||||||
info->type=type;
|
info->type=type;
|
||||||
info->error=0;
|
info->error=0;
|
||||||
init_functions(info,type);
|
init_functions(info);
|
||||||
|
|
||||||
#ifdef HAVE_AIOWAIT
|
#ifdef HAVE_AIOWAIT
|
||||||
if (use_async_io && ! my_disable_async_io &&
|
if (use_async_io && ! my_disable_async_io &&
|
||||||
|
|
|
@ -803,6 +803,8 @@ int merge_many_buff(SORTPARAM *param, uchar *sort_buffer,
|
||||||
if (flush_io_cache(to_file))
|
if (flush_io_cache(to_file))
|
||||||
break; /* purecov: inspected */
|
break; /* purecov: inspected */
|
||||||
temp=from_file; from_file=to_file; to_file=temp;
|
temp=from_file; from_file=to_file; to_file=temp;
|
||||||
|
setup_io_cache(from_file);
|
||||||
|
setup_io_cache(to_file);
|
||||||
*maxbuffer= (uint) (lastbuff-buffpek)-1;
|
*maxbuffer= (uint) (lastbuff-buffpek)-1;
|
||||||
}
|
}
|
||||||
close_cached_file(to_file); // This holds old result
|
close_cached_file(to_file); // This holds old result
|
||||||
|
|
Loading…
Reference in a new issue