mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
log_event.cc:
#ifdef USING_TRANSACTIONS ha_innodb.cc: comment rpl_drop_temp.test, rpl_drop_temp.result: cleanup mysql-test/r/rpl_drop_temp.result: cleanup mysql-test/t/rpl_drop_temp.test: cleanup sql/ha_innodb.cc: comment sql/log_event.cc: #ifdef USING_TRANSACTIONS
This commit is contained in:
parent
b3ff091f15
commit
e28dc4c7ef
4 changed files with 25 additions and 1 deletions
|
@ -10,3 +10,4 @@ create temporary table mysqltest.t2 (n int);
|
|||
show status like 'Slave_open_temp_tables';
|
||||
Variable_name Value
|
||||
Slave_open_temp_tables 0
|
||||
drop database mysqltest;
|
||||
|
|
|
@ -11,3 +11,5 @@ disconnect master;
|
|||
connection slave;
|
||||
--real_sleep 3; # time for DROP to be written
|
||||
show status like 'Slave_open_temp_tables';
|
||||
drop database mysqltest;
|
||||
|
||||
|
|
|
@ -1483,7 +1483,7 @@ innobase_commit(
|
|||
/* We were instructed to commit the whole transaction, or
|
||||
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 */
|
||||
trx->mysql_log_file_name = mysql_bin_log.get_log_fname();
|
||||
trx->mysql_log_offset =
|
||||
|
@ -6472,6 +6472,25 @@ innobase_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);
|
||||
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;
|
||||
rli->relay_log.description_event_for_exec= this;
|
||||
|
||||
#ifdef USING_TRANSACTIONS
|
||||
/*
|
||||
As a transaction NEVER spans on 2 or more binlogs:
|
||||
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.");
|
||||
end_trans(thd, ROLLBACK);
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue