fixed bugs in IO_CACHE and Load_event constructor. The code now passes
replication test suite
This commit is contained in:
parent
02ee743425
commit
d528126359
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
void my_b_seek(IO_CACHE *info,my_off_t pos)
|
void my_b_seek(IO_CACHE *info,my_off_t pos)
|
||||||
{
|
{
|
||||||
info->seek_not_done=0;
|
info->seek_not_done=1;
|
||||||
info->pos_in_file=pos;
|
info->pos_in_file=pos;
|
||||||
info->rc_pos=info->rc_end=info->buffer;
|
info->rc_pos=info->rc_end=info->buffer;
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ void Log_event::print_header(FILE* file)
|
|||||||
{
|
{
|
||||||
fputc('#', file);
|
fputc('#', file);
|
||||||
print_timestamp(file);
|
print_timestamp(file);
|
||||||
fprintf(file, " server id %ld ", server_id);
|
fprintf(file, " server id %d ", server_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Log_event::print_timestamp(FILE* file, time_t* ts)
|
void Log_event::print_timestamp(FILE* file, time_t* ts)
|
||||||
@ -418,7 +418,7 @@ Query_log_event::Query_log_event(IO_CACHE* file, time_t when_arg,
|
|||||||
Query_log_event::Query_log_event(const char* buf, int event_len):
|
Query_log_event::Query_log_event(const char* buf, int event_len):
|
||||||
Log_event(buf),data_buf(0), query(NULL), db(NULL)
|
Log_event(buf),data_buf(0), query(NULL), db(NULL)
|
||||||
{
|
{
|
||||||
if (event_len < QUERY_EVENT_OVERHEAD)
|
if ((uint)event_len < QUERY_EVENT_OVERHEAD)
|
||||||
return;
|
return;
|
||||||
ulong data_len;
|
ulong data_len;
|
||||||
buf += EVENT_LEN_OFFSET;
|
buf += EVENT_LEN_OFFSET;
|
||||||
@ -577,10 +577,10 @@ Load_log_event::Load_log_event(const char* buf, int event_len):
|
|||||||
{
|
{
|
||||||
ulong data_len;
|
ulong data_len;
|
||||||
|
|
||||||
if(event_len < (LOAD_EVENT_OVERHEAD + LOG_EVENT_HEADER_LEN))
|
if((uint)event_len < (LOAD_EVENT_OVERHEAD + LOG_EVENT_HEADER_LEN))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
buf += EVENT_LEN_OFFSET;
|
buf += EVENT_LEN_OFFSET;
|
||||||
|
memcpy(&sql_ex, buf + LOAD_HEADER_LEN + 4, sizeof(sql_ex));
|
||||||
data_len = event_len;
|
data_len = event_len;
|
||||||
|
|
||||||
if(!(data_buf = (char*)my_malloc(data_len + 1, MYF(MY_WME))))
|
if(!(data_buf = (char*)my_malloc(data_len + 1, MYF(MY_WME))))
|
||||||
@ -671,7 +671,7 @@ void Load_log_event::print(FILE* file, bool short_form)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if((int)skip_lines > 0)
|
if((int)skip_lines > 0)
|
||||||
fprintf(file, " IGNORE %ld LINES ", skip_lines);
|
fprintf(file, " IGNORE %d LINES ", skip_lines);
|
||||||
|
|
||||||
if (num_fields)
|
if (num_fields)
|
||||||
{
|
{
|
||||||
|
@ -240,12 +240,17 @@ int _my_b_read(register IO_CACHE *info, byte *Buffer, uint Count)
|
|||||||
{
|
{
|
||||||
uint length,diff_length,left_length;
|
uint length,diff_length,left_length;
|
||||||
my_off_t max_length, pos_in_file;
|
my_off_t max_length, pos_in_file;
|
||||||
|
|
||||||
memcpy(Buffer,info->rc_pos,
|
if((left_length=(uint) (info->rc_end-info->rc_pos)))
|
||||||
(size_t) (left_length=(uint) (info->rc_end-info->rc_pos)));
|
{
|
||||||
Buffer+=left_length;
|
if(Count < left_length)
|
||||||
Count-=left_length;
|
left_length = Count;
|
||||||
pos_in_file=info->pos_in_file+(uint) (info->rc_end - info->buffer);
|
memcpy(Buffer,info->rc_pos,
|
||||||
|
(size_t) (left_length));
|
||||||
|
Buffer+=left_length;
|
||||||
|
Count-=left_length;
|
||||||
|
}
|
||||||
|
pos_in_file=info->pos_in_file+ left_length;
|
||||||
if (info->seek_not_done)
|
if (info->seek_not_done)
|
||||||
{ /* File touched, do seek */
|
{ /* File touched, do seek */
|
||||||
VOID(my_seek(info->file,pos_in_file,MY_SEEK_SET,MYF(0)));
|
VOID(my_seek(info->file,pos_in_file,MY_SEEK_SET,MYF(0)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user