1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Merge MDEV-6589 and MDEV-6403 into 10.1.

Conflicts:
	sql/log.cc
	sql/rpl_rli.cc
	sql/sql_repl.cc
This commit is contained in:
Kristian Nielsen
2015-03-04 13:48:28 +01:00
13 changed files with 666 additions and 14 deletions

View File

@ -2320,6 +2320,30 @@ static int send_format_descriptor_event(binlog_send_info *info,
info->current_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
fix_checksum(packet, ev_offset);
}
else if (info->using_gtid_state)
{
/*
If this event has the field `created' set, then it will cause the
slave to delete all active temporary tables. This must not happen
if the slave received any later GTIDs in a previous connect, as
those GTIDs might have created new temporary tables that are still
needed.
So here, we check if the starting GTID position was already
reached before this format description event. If not, we clear the
`created' flag to preserve temporary tables on the slave. (If the
slave connects at a position past this event, it means that it
already received and handled it in a previous connect).
*/
if (!info.gtid_state.is_pos_reached())
{
int4store((char*) packet->ptr()+LOG_EVENT_MINIMAL_HEADER_LEN+
ST_CREATED_OFFSET+ev_offset, (ulong) 0);
if (info.current_checksum_alg != BINLOG_CHECKSUM_ALG_OFF &&
info.current_checksum_alg != BINLOG_CHECKSUM_ALG_UNDEF)
fix_checksum(packet, ev_offset);
}
}
/* send it */
if (my_net_write(info->net, (uchar*) packet->ptr(), packet->length()))