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:
@ -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()))
|
||||
|
Reference in New Issue
Block a user