mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
bug#47142
merging patches prepared for 5.0 to 5.1-bt. That caused a few changes in the test file
This commit is contained in:
@@ -2295,10 +2295,22 @@ bool Query_log_event::write(IO_CACHE* file)
|
||||
int8store(start, table_map_for_update);
|
||||
start+= 8;
|
||||
}
|
||||
if (master_data_written != 0)
|
||||
{
|
||||
/*
|
||||
Q_MASTER_DATA_WRITTEN_CODE only exists in relay logs where the master
|
||||
has binlog_version<4 and the slave has binlog_version=4. See comment
|
||||
for master_data_written in log_event.h for details.
|
||||
*/
|
||||
*start++= Q_MASTER_DATA_WRITTEN_CODE;
|
||||
int4store(start, master_data_written);
|
||||
start+= 4;
|
||||
}
|
||||
|
||||
/*
|
||||
NOTE: When adding new status vars, please don't forget to update
|
||||
the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update function
|
||||
code_name in this file.
|
||||
the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update the function
|
||||
code_name() in this file.
|
||||
|
||||
Here there could be code like
|
||||
if (command-line-option-which-says-"log_this_variable" && inited)
|
||||
@@ -2374,6 +2386,7 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
|
||||
auto_increment_offset(thd_arg->variables.auto_increment_offset),
|
||||
lc_time_names_number(thd_arg->variables.lc_time_names->number),
|
||||
charset_database_number(0),
|
||||
master_data_written(0),
|
||||
table_map_for_update((ulonglong)thd_arg->table_map_for_update)
|
||||
{
|
||||
time_t end_time;
|
||||
@@ -2498,6 +2511,7 @@ code_name(int code)
|
||||
case Q_LC_TIME_NAMES_CODE: return "Q_LC_TIME_NAMES_CODE";
|
||||
case Q_CHARSET_DATABASE_CODE: return "Q_CHARSET_DATABASE_CODE";
|
||||
case Q_TABLE_MAP_FOR_UPDATE_CODE: return "Q_TABLE_MAP_FOR_UPDATE_CODE";
|
||||
case Q_MASTER_DATA_WRITTEN_CODE: return "Q_MASTER_DATA_WRITTEN_CODE";
|
||||
}
|
||||
sprintf(buf, "CODE#%d", code);
|
||||
return buf;
|
||||
@@ -2535,7 +2549,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
|
||||
flags2_inited(0), sql_mode_inited(0), charset_inited(0),
|
||||
auto_increment_increment(1), auto_increment_offset(1),
|
||||
time_zone_len(0), lc_time_names_number(0), charset_database_number(0),
|
||||
table_map_for_update(0)
|
||||
table_map_for_update(0), master_data_written(0)
|
||||
{
|
||||
ulong data_len;
|
||||
uint32 tmp;
|
||||
@@ -2591,6 +2605,18 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
|
||||
DBUG_PRINT("info", ("Query_log_event has status_vars_len: %u",
|
||||
(uint) status_vars_len));
|
||||
tmp-= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
server version < 5.0 / binlog_version < 4 master's event is
|
||||
relay-logged with storing the original size of the event in
|
||||
Q_MASTER_DATA_WRITTEN_CODE status variable.
|
||||
The size is to be restored at reading Q_MASTER_DATA_WRITTEN_CODE-marked
|
||||
event from the relay log.
|
||||
*/
|
||||
DBUG_ASSERT(description_event->binlog_version < 4);
|
||||
master_data_written= data_written;
|
||||
}
|
||||
/*
|
||||
We have parsed everything we know in the post header for QUERY_EVENT,
|
||||
@@ -2682,6 +2708,11 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
|
||||
table_map_for_update= uint8korr(pos);
|
||||
pos+= 8;
|
||||
break;
|
||||
case Q_MASTER_DATA_WRITTEN_CODE:
|
||||
CHECK_SPACE(pos, end, 4);
|
||||
data_written= master_data_written= uint4korr(pos);
|
||||
pos+= 4;
|
||||
break;
|
||||
default:
|
||||
/* That's why you must write status vars in growing order of code */
|
||||
DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\
|
||||
|
Reference in New Issue
Block a user