Automerge
This commit is contained in:
commit
262f6b4f25
@ -10,3 +10,4 @@ create temporary table mysqltest.t2 (n int);
|
|||||||
show status like 'Slave_open_temp_tables';
|
show status like 'Slave_open_temp_tables';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Slave_open_temp_tables 0
|
Slave_open_temp_tables 0
|
||||||
|
drop database mysqltest;
|
||||||
|
@ -11,3 +11,6 @@ disconnect master;
|
|||||||
connection slave;
|
connection slave;
|
||||||
--real_sleep 3; # time for DROP to be written
|
--real_sleep 3; # time for DROP to be written
|
||||||
show status like 'Slave_open_temp_tables';
|
show status like 'Slave_open_temp_tables';
|
||||||
|
connection default;
|
||||||
|
drop database mysqltest;
|
||||||
|
|
||||||
|
@ -1483,7 +1483,7 @@ innobase_commit(
|
|||||||
/* We were instructed to commit the whole transaction, or
|
/* We were instructed to commit the whole transaction, or
|
||||||
this is an SQL statement end and autocommit is on */
|
this is an SQL statement end and autocommit is on */
|
||||||
|
|
||||||
/* We need current binlog position for HotBackup to work.
|
/* We need current binlog position for ibbackup to work.
|
||||||
Note, the position is current because of prepare_commit_mutex */
|
Note, the position is current because of prepare_commit_mutex */
|
||||||
trx->mysql_log_file_name = mysql_bin_log.get_log_fname();
|
trx->mysql_log_file_name = mysql_bin_log.get_log_fname();
|
||||||
trx->mysql_log_offset =
|
trx->mysql_log_offset =
|
||||||
@ -6472,6 +6472,25 @@ innobase_xa_prepare(
|
|||||||
|
|
||||||
if (thd->lex->sql_command != SQLCOM_XA_PREPARE) {
|
if (thd->lex->sql_command != SQLCOM_XA_PREPARE) {
|
||||||
|
|
||||||
|
/* For ibbackup to work the order of transactions in binlog
|
||||||
|
and InnoDB must be the same. Consider the situation
|
||||||
|
|
||||||
|
thread1> prepare; write to binlog; ...
|
||||||
|
<context switch>
|
||||||
|
thread2> prepare; write to binlog; commit
|
||||||
|
thread1> ... commit
|
||||||
|
|
||||||
|
To ensure this will not happen we're taking the mutex on
|
||||||
|
prepare, and releasing it on commit.
|
||||||
|
|
||||||
|
Note: only do it for normal commits, done via ha_commit_trans.
|
||||||
|
If 2pc protocol is executed by external transaction
|
||||||
|
coordinator, it will be just a regular MySQL client
|
||||||
|
executing XA PREPARE and XA COMMIT commands.
|
||||||
|
In this case we cannot know how many minutes or hours
|
||||||
|
will be between XA PREPARE and XA COMMIT, and we don't want
|
||||||
|
to block for undefined period of time.
|
||||||
|
*/
|
||||||
pthread_mutex_lock(&prepare_commit_mutex);
|
pthread_mutex_lock(&prepare_commit_mutex);
|
||||||
trx->active_trans = 2;
|
trx->active_trans = 2;
|
||||||
}
|
}
|
||||||
|
@ -2012,6 +2012,7 @@ int Format_description_log_event::exec_event(struct st_relay_log_info* rli)
|
|||||||
delete rli->relay_log.description_event_for_exec;
|
delete rli->relay_log.description_event_for_exec;
|
||||||
rli->relay_log.description_event_for_exec= this;
|
rli->relay_log.description_event_for_exec= this;
|
||||||
|
|
||||||
|
#ifdef USING_TRANSACTIONS
|
||||||
/*
|
/*
|
||||||
As a transaction NEVER spans on 2 or more binlogs:
|
As a transaction NEVER spans on 2 or more binlogs:
|
||||||
if we have an active transaction at this point, the master died
|
if we have an active transaction at this point, the master died
|
||||||
@ -2033,6 +2034,7 @@ int Format_description_log_event::exec_event(struct st_relay_log_info* rli)
|
|||||||
"to its binary log.");
|
"to its binary log.");
|
||||||
end_trans(thd, ROLLBACK);
|
end_trans(thd, ROLLBACK);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
If this event comes from ourselves, there is no cleaning task to perform,
|
If this event comes from ourselves, there is no cleaning task to perform,
|
||||||
we don't call Start_log_event_v3::exec_event() (this was just to update the
|
we don't call Start_log_event_v3::exec_event() (this was just to update the
|
||||||
|
Loading…
x
Reference in New Issue
Block a user