bug#19402 SQL close to the size of the max_allowed_packet fails on the slave

ver 5.0 and 5.1 refinement.
adding to the MAX_SIZE_LOG_EVENT_STATUS estimation status vars and 
EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN
parent 7aa562ad
...@@ -1212,6 +1212,7 @@ bool Query_log_event::write(IO_CACHE* file) ...@@ -1212,6 +1212,7 @@ bool Query_log_event::write(IO_CACHE* file)
/* Store length of status variables */ /* Store length of status variables */
status_vars_len= (uint) (start-start_of_status); status_vars_len= (uint) (start-start_of_status);
DBUG_ASSERT(status_vars_len <= MAX_SIZE_LOG_EVENT_STATUS);
int2store(buf + Q_STATUS_VARS_LEN_OFFSET, status_vars_len); int2store(buf + Q_STATUS_VARS_LEN_OFFSET, status_vars_len);
/* /*
......
...@@ -202,11 +202,21 @@ struct sql_ex_info ...@@ -202,11 +202,21 @@ struct sql_ex_info
/* /*
Max number of possible extra bytes in a replication event compared to a Max number of possible extra bytes in a replication event compared to a
packet (i.e. a query) sent from client to master. packet (i.e. a query) sent from client to master;
First, an auxiliary log_event status vars estimation:
*/ */
#define MAX_LOG_EVENT_HEADER (LOG_EVENT_HEADER_LEN + /* write_header */ \ #define MAX_SIZE_LOG_EVENT_STATUS (4 /* flags2 */ + \
QUERY_HEADER_LEN + /* write_data */ \ 8 /* sql mode */ + \
NAME_LEN + 1) 1 + 1 + 255 /* catalog */ + \
4 /* autoinc */ + \
6 /* charset */ + \
MAX_TIME_ZONE_NAME_LENGTH)
#define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \
LOG_EVENT_HEADER_LEN + /* write_header */ \
QUERY_HEADER_LEN + /* write_data */ \
EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN + /*write_post_header_for_derived */ \
MAX_SIZE_LOG_EVENT_STATUS + /* status */ \
NAME_LEN + 1)
/* /*
Event header offsets; Event header offsets;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment