From: Marc Alff Date: March 1 2011 4:39pm Subject: bzr commit into mysql-5.5 branch (marc.alff:3357) Bug#11766528 List-Archive: http://lists.mysql.com/commits/132230 X-Bug: 11766528 Message-Id: <201103011640.p21GeSdl011991@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6660271560377575993==" --===============6660271560377575993== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/malff/BZR_TREE/mysql-5.5-bug11766528/ based on revid:tor.didriksen@stripped 3357 Marc Alff 2011-03-01 Bug#11766528 PERFORMANCE_SCHEMA TRACKS BOTH BINARY AND RELAY LOGS IN THE SAME EVENTS Before this fix, all the performance schema instrumentation for both the binary log and the relay log would use the following instruments: - wait/io/file/sql/binlog - wait/io/file/sql/binlog_index - wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index - wait/synch/cond/sql/MYSQL_BIN_LOG::update_cond This instrumentation is too general and can be more specific. With this fix, the binlog instrumentation is identical, and the relay log instrumentation is changed to: - wait/io/file/sql/relaylog - wait/io/file/sql/relaylog_index - wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_index - wait/synch/cond/sql/MYSQL_RELAY_LOG::update_cond With this change, the performance instrumentation for the binary log and the relay log, which share the same structure but have different uses, is more detailed. This is especially important for hosts in the middle of a replication chain, that are both masters (binlog) and slaves (relaylog). added: mysql-test/suite/perfschema/r/relaylog.result mysql-test/suite/perfschema/t/relaylog.test modified: sql/log.cc sql/log.h sql/mysqld.cc sql/mysqld.h sql/rpl_rli.cc === added file 'mysql-test/suite/perfschema/r/relaylog.result' --- a/mysql-test/suite/perfschema/r/relaylog.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/perfschema/r/relaylog.result 2011-03-01 16:39:28 +0000 @@ -0,0 +1,98 @@ +include/master-slave.inc +[connection master] +drop table if exists test.t1; +reset master; +create table test.t1(a int); +drop table test.t1; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Query # # use `test`; create table test.t1(a int) +slave-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ +"============ Performance schema on master ============" +select * from performance_schema.file_summary_by_instance +where file_name like "%master-%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +[DATADIR]master-bin.000001 wait/io/file/sql/binlog 6 4 221 329 +[DATADIR]master-bin.index wait/io/file/sql/binlog_index 0 2 0 40 +select * from performance_schema.file_summary_by_instance +where file_name like "%slave-%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +select * from performance_schema.file_summary_by_instance +where event_name like "%binlog%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +[DATADIR]master-bin.000001 wait/io/file/sql/binlog 6 4 221 329 +[DATADIR]master-bin.index wait/io/file/sql/binlog_index 0 2 0 40 +select * from performance_schema.file_summary_by_event_name +where event_name like "%binlog%" order by event_name; +EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +wait/io/file/sql/binlog 6 4 221 329 +wait/io/file/sql/binlog_index 0 2 0 40 +select event_name, count_star +from performance_schema.events_waits_summary_global_by_event_name +where event_name like "%MYSQL_BIN_LOG%" order by event_name; +event_name count_star +wait/synch/cond/sql/MYSQL_BIN_LOG::COND_prep_xids 0 +wait/synch/cond/sql/MYSQL_BIN_LOG::update_cond 1 +wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index 3 +wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_prep_xids 0 +select * from performance_schema.file_summary_by_instance +where event_name like "%relaylog%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +select * from performance_schema.file_summary_by_event_name +where event_name like "%relaylog%" order by event_name; +EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +wait/io/file/sql/relaylog 0 0 0 0 +wait/io/file/sql/relaylog_index 0 0 0 0 +select * from performance_schema.events_waits_summary_global_by_event_name +where event_name like "%MYSQL_RELAY_LOG%" order by event_name; +EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT +wait/synch/cond/sql/MYSQL_RELAY_LOG::update_cond 0 0 0 0 0 +wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_index 0 0 0 0 0 +"============ Performance schema on slave ============" +select * from performance_schema.file_summary_by_instance +where file_name like "%master-%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +select * from performance_schema.file_summary_by_instance +where file_name like "%slave-%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +[DATADIR]slave-bin.000001 wait/io/file/sql/binlog 3 8 602 631 +[DATADIR]slave-bin.index wait/io/file/sql/binlog_index 0 3 0 57 +[DATADIR]slave-relay-bin.000001 wait/io/file/sql/relaylog 4 3 370 263 +[DATADIR]slave-relay-bin.000002 wait/io/file/sql/relaylog 2 4 368 368 +[DATADIR]slave-relay-bin.index wait/io/file/sql/relaylog_index 2 4 50 125 +select * from performance_schema.file_summary_by_instance +where event_name like "%binlog%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +[DATADIR]slave-bin.000001 wait/io/file/sql/binlog 3 8 602 631 +[DATADIR]slave-bin.index wait/io/file/sql/binlog_index 0 3 0 57 +select * from performance_schema.file_summary_by_event_name +where event_name like "%binlog%" order by event_name; +EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +wait/io/file/sql/binlog 3 8 602 631 +wait/io/file/sql/binlog_index 0 3 0 57 +select event_name, count_star +from performance_schema.events_waits_summary_global_by_event_name +where event_name like "%MYSQL_BIN_LOG%" order by event_name; +event_name count_star +wait/synch/cond/sql/MYSQL_BIN_LOG::COND_prep_xids 0 +wait/synch/cond/sql/MYSQL_BIN_LOG::update_cond 0 +wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index 5 +wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_prep_xids 0 +select * from performance_schema.file_summary_by_instance +where event_name like "%relaylog%" order by file_name; +FILE_NAME EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +[DATADIR]slave-relay-bin.000001 wait/io/file/sql/relaylog 4 3 370 263 +[DATADIR]slave-relay-bin.000002 wait/io/file/sql/relaylog 2 4 368 368 +[DATADIR]slave-relay-bin.index wait/io/file/sql/relaylog_index 2 4 50 125 +select * from performance_schema.file_summary_by_event_name +where event_name like "%relaylog%" order by event_name; +EVENT_NAME COUNT_READ COUNT_WRITE SUM_NUMBER_OF_BYTES_READ SUM_NUMBER_OF_BYTES_WRITE +wait/io/file/sql/relaylog 6 7 738 631 +wait/io/file/sql/relaylog_index 2 4 50 125 +select event_name, count_star +from performance_schema.events_waits_summary_global_by_event_name +where event_name like "%MYSQL_RELAY_LOG%" order by event_name; +event_name count_star +wait/synch/cond/sql/MYSQL_RELAY_LOG::update_cond 2 +wait/synch/mutex/sql/MYSQL_RELAY_LOG::LOCK_index 12 +include/stop_slave.inc === added file 'mysql-test/suite/perfschema/t/relaylog.test' --- a/mysql-test/suite/perfschema/t/relaylog.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/perfschema/t/relaylog.test 2011-03-01 16:39:28 +0000 @@ -0,0 +1,112 @@ +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + +# Tests for PERFORMANCE_SCHEMA + +--source include/have_log_bin.inc +--source include/not_embedded.inc +--source include/have_perfschema.inc +--source include/master-slave.inc + +--disable_warnings +drop table if exists test.t1; +--sync_slave_with_master +reset master; +--enable_warnings + +create table test.t1(a int); +drop table test.t1; + +--source include/show_binlog_events.inc + +connection master; +-- echo "============ Performance schema on master ============" + +let $MYSQLD_DATADIR= `SELECT @@datadir`; + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where file_name like "%master-%" order by file_name; + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where file_name like "%slave-%" order by file_name; + +# Expect a master binlog + binlog_index + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where event_name like "%binlog%" order by file_name; + +select * from performance_schema.file_summary_by_event_name + where event_name like "%binlog%" order by event_name; + +select event_name, count_star + from performance_schema.events_waits_summary_global_by_event_name + where event_name like "%MYSQL_BIN_LOG%" order by event_name; + +# Expect no slave relay log. + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where event_name like "%relaylog%" order by file_name; + +select * from performance_schema.file_summary_by_event_name + where event_name like "%relaylog%" order by event_name; + +select * from performance_schema.events_waits_summary_global_by_event_name + where event_name like "%MYSQL_RELAY_LOG%" order by event_name; + +sync_slave_with_master; +-- echo "============ Performance schema on slave ============" + +let $MYSQLD_DATADIR= `SELECT @@datadir`; + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where file_name like "%master-%" order by file_name; + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where file_name like "%slave-%" order by file_name; + +# Expect a slave binlog + binlog_index + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where event_name like "%binlog%" order by file_name; + +select * from performance_schema.file_summary_by_event_name + where event_name like "%binlog%" order by event_name; + +select event_name, count_star + from performance_schema.events_waits_summary_global_by_event_name + where event_name like "%MYSQL_BIN_LOG%" order by event_name; + +# Expect a slave relay log. + +--replace_result $MYSQLD_DATADIR [DATADIR] +select * from performance_schema.file_summary_by_instance + where event_name like "%relaylog%" order by file_name; + +select * from performance_schema.file_summary_by_event_name + where event_name like "%relaylog%" order by event_name; + +select event_name, count_star + from performance_schema.events_waits_summary_global_by_event_name + where event_name like "%MYSQL_RELAY_LOG%" order by event_name; + +--source include/stop_slave.inc + === modified file 'sql/log.cc' --- a/sql/log.cc 2011-02-08 15:47:33 +0000 +++ b/sql/log.cc 2011-03-01 16:39:28 +0000 @@ -2861,11 +2861,9 @@ void MYSQL_BIN_LOG::init(bool no_auto_ev void MYSQL_BIN_LOG::init_pthread_objects() { - DBUG_ASSERT(inited == 0); - inited= 1; - mysql_mutex_init(key_LOG_LOCK_log, &LOCK_log, MY_MUTEX_INIT_SLOW); - mysql_mutex_init(key_BINLOG_LOCK_index, &LOCK_index, MY_MUTEX_INIT_SLOW); - mysql_cond_init(key_BINLOG_update_cond, &update_cond, 0); + MYSQL_LOG::init_pthread_objects(); + mysql_mutex_init(m_key_LOCK_index, &LOCK_index, MY_MUTEX_INIT_SLOW); + mysql_cond_init(m_key_update_cond, &update_cond, 0); } @@ -2888,7 +2886,7 @@ bool MYSQL_BIN_LOG::open_index_file(cons } fn_format(index_file_name, index_file_name_arg, mysql_data_home, ".index", opt); - if ((index_file_nr= mysql_file_open(key_file_binlog_index, + if ((index_file_nr= mysql_file_open(m_key_file_log_index, index_file_name, O_RDWR | O_CREAT | O_BINARY, MYF(MY_WME))) < 0 || @@ -3004,7 +3002,7 @@ bool MYSQL_BIN_LOG::open(const char *log /* open the main log file */ if (MYSQL_LOG::open( #ifdef HAVE_PSI_INTERFACE - key_file_binlog, + m_key_file_log, #endif log_name, log_type_arg, new_name, io_cache_type_arg)) { @@ -3874,7 +3872,7 @@ int MYSQL_BIN_LOG::purge_index_entry(THD /* Get rid of the trailing '\n' */ log_info.log_file_name[length-1]= 0; - if (!mysql_file_stat(key_file_binlog, log_info.log_file_name, &s, MYF(0))) + if (!mysql_file_stat(m_key_file_log, log_info.log_file_name, &s, MYF(0))) { if (my_errno == ENOENT) { @@ -4049,7 +4047,7 @@ int MYSQL_BIN_LOG::purge_logs_before_dat !is_active(log_info.log_file_name) && !log_in_use(log_info.log_file_name)) { - if (!mysql_file_stat(key_file_binlog, + if (!mysql_file_stat(m_key_file_log, log_info.log_file_name, &stat_area, MYF(0))) { if (my_errno == ENOENT) === modified file 'sql/log.h' --- a/sql/log.h 2010-12-07 16:11:13 +0000 +++ b/sql/log.h 2011-03-01 16:39:28 +0000 @@ -274,6 +274,16 @@ private: class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG { private: +#ifdef HAVE_PSI_INTERFACE + /** The instrumentation key to use for @ LOCK_index. */ + PSI_mutex_key m_key_LOCK_index; + /** The instrumentation key to use for @ update_cond. */ + PSI_cond_key m_key_update_cond; + /** The instrumentation key to use for opening the log file. */ + PSI_file_key m_key_file_log; + /** The instrumentation key to use for opening the log index file. */ + PSI_file_key m_key_file_log_index; +#endif /* LOCK_log and LOCK_index are inited by init_pthread_objects() */ mysql_mutex_t LOCK_index; mysql_mutex_t LOCK_prep_xids; @@ -362,6 +372,19 @@ public: on exit() - but only during the correct shutdown process */ +#ifdef HAVE_PSI_INTERFACE + void set_psi_keys(PSI_mutex_key key_LOCK_index, + PSI_cond_key key_update_cond, + PSI_file_key key_file_log, + PSI_file_key key_file_log_index) + { + m_key_LOCK_index= key_LOCK_index; + m_key_update_cond= key_update_cond; + m_key_file_log= key_file_log; + m_key_file_log_index= key_file_log_index; + } +#endif + int open(const char *opt_name); void close(); int log_xid(THD *thd, my_xid xid); === modified file 'sql/mysqld.cc' --- a/sql/mysqld.cc 2011-02-16 16:27:35 +0000 +++ b/sql/mysqld.cc 2011-03-01 16:39:28 +0000 @@ -3122,6 +3122,18 @@ static int init_common_variables() */ global_system_variables.time_zone= my_tz_SYSTEM; +#ifdef HAVE_PSI_INTERFACE + /* + Complete the mysql_bin_log initialization. + Instrumentation keys are known only after the performance schema initialization, + and can not be set in the MYSQL_BIN_LOG constructor (called before main()). + */ + mysql_bin_log.set_psi_keys(key_BINLOG_LOCK_index, + key_BINLOG_update_cond, + key_file_binlog, + key_file_binlog_index); +#endif + /* Init mutexes for the global MYSQL_BIN_LOG objects. As safe_mutex depends on what MY_INIT() does, we can't init the mutexes of @@ -7690,6 +7702,7 @@ PSI_mutex_key key_BINLOG_LOCK_index, key key_structure_guard_mutex, key_TABLE_SHARE_LOCK_ha_data, key_LOCK_error_messages, key_LOG_INFO_lock, key_LOCK_thread_count, key_PARTITION_LOCK_auto_inc; +PSI_mutex_key key_RELAYLOG_LOCK_index; static PSI_mutex_info all_server_mutexes[]= { @@ -7706,6 +7719,7 @@ static PSI_mutex_info all_server_mutexes { &key_BINLOG_LOCK_index, "MYSQL_BIN_LOG::LOCK_index", 0}, { &key_BINLOG_LOCK_prep_xids, "MYSQL_BIN_LOG::LOCK_prep_xids", 0}, + { &key_RELAYLOG_LOCK_index, "MYSQL_RELAY_LOG::LOCK_index", 0}, { &key_delayed_insert_mutex, "Delayed_insert::mutex", 0}, { &key_hash_filo_lock, "hash_filo::lock", 0}, { &key_LOCK_active_mi, "LOCK_active_mi", PSI_FLAG_GLOBAL}, @@ -7773,6 +7787,7 @@ PSI_cond_key key_BINLOG_COND_prep_xids, key_relay_log_info_start_cond, key_relay_log_info_stop_cond, key_TABLE_SHARE_cond, key_user_level_lock_cond, key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache; +PSI_cond_key key_RELAYLOG_update_cond; static PSI_cond_info all_server_conds[]= { @@ -7786,6 +7801,7 @@ static PSI_cond_info all_server_conds[]= #endif /* HAVE_MMAP */ { &key_BINLOG_COND_prep_xids, "MYSQL_BIN_LOG::COND_prep_xids", 0}, { &key_BINLOG_update_cond, "MYSQL_BIN_LOG::update_cond", 0}, + { &key_RELAYLOG_update_cond, "MYSQL_RELAY_LOG::update_cond", 0}, { &key_COND_cache_status_changed, "Query_cache::COND_cache_status_changed", 0}, { &key_COND_manager, "COND_manager", PSI_FLAG_GLOBAL}, { &key_COND_rpl_status, "COND_rpl_status", PSI_FLAG_GLOBAL}, @@ -7849,6 +7865,7 @@ PSI_file_key key_file_binlog, key_file_b key_file_pid, key_file_relay_log_info, key_file_send_file, key_file_tclog, key_file_trg, key_file_trn, key_file_init; PSI_file_key key_file_query_log, key_file_slow_log; +PSI_file_key key_file_relaylog, key_file_relaylog_index; static PSI_file_info all_server_files[]= { @@ -7857,6 +7874,8 @@ static PSI_file_info all_server_files[]= #endif /* HAVE_MMAP */ { &key_file_binlog, "binlog", 0}, { &key_file_binlog_index, "binlog_index", 0}, + { &key_file_relaylog, "relaylog", 0}, + { &key_file_relaylog_index, "relaylog_index", 0}, { &key_file_casetest, "casetest", 0}, { &key_file_dbopt, "dbopt", 0}, { &key_file_des_key_file, "des_key_file", 0}, === modified file 'sql/mysqld.h' --- a/sql/mysqld.h 2011-01-14 13:21:46 +0000 +++ b/sql/mysqld.h 2011-03-01 16:39:28 +0000 @@ -241,6 +241,7 @@ extern PSI_mutex_key key_BINLOG_LOCK_ind key_relay_log_info_log_space_lock, key_relay_log_info_run_lock, key_structure_guard_mutex, key_TABLE_SHARE_LOCK_ha_data, key_LOCK_error_messages, key_LOCK_thread_count, key_PARTITION_LOCK_auto_inc; +extern PSI_mutex_key key_RELAYLOG_LOCK_index; extern PSI_rwlock_key key_rwlock_LOCK_grant, key_rwlock_LOCK_logger, key_rwlock_LOCK_sys_init_connect, key_rwlock_LOCK_sys_init_slave, @@ -260,6 +261,7 @@ extern PSI_cond_key key_BINLOG_COND_prep key_relay_log_info_start_cond, key_relay_log_info_stop_cond, key_TABLE_SHARE_cond, key_user_level_lock_cond, key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache; +extern PSI_cond_key key_RELAYLOG_update_cond; extern PSI_thread_key key_thread_bootstrap, key_thread_delayed_insert, key_thread_handle_manager, key_thread_kill_server, key_thread_main, @@ -277,6 +279,7 @@ extern PSI_file_key key_file_binlog, key key_file_pid, key_file_relay_log_info, key_file_send_file, key_file_tclog, key_file_trg, key_file_trn, key_file_init; extern PSI_file_key key_file_query_log, key_file_slow_log; +extern PSI_file_key key_file_relaylog, key_file_relaylog_index; void init_server_psi_keys(); #endif /* HAVE_PSI_INTERFACE */ === modified file 'sql/rpl_rli.cc' --- a/sql/rpl_rli.cc 2010-11-11 17:11:05 +0000 +++ b/sql/rpl_rli.cc 2011-03-01 16:39:28 +0000 @@ -54,6 +54,13 @@ Relay_log_info::Relay_log_info(bool is_s { DBUG_ENTER("Relay_log_info::Relay_log_info"); +#ifdef HAVE_PSI_INTERFACE + relay_log.set_psi_keys(key_RELAYLOG_LOCK_index, + key_RELAYLOG_update_cond, + key_file_relaylog, + key_file_relaylog_index); +#endif + group_relay_log_name[0]= event_relay_log_name[0]= group_master_log_name[0]= 0; until_log_name[0]= ign_master_log_name_end[0]= 0; @@ -356,7 +363,7 @@ static inline int add_relay_log(Relay_lo { MY_STAT s; DBUG_ENTER("add_relay_log"); - if (!mysql_file_stat(key_file_binlog, + if (!mysql_file_stat(key_file_relaylog, linfo->log_file_name, &s, MYF(0))) { sql_print_error("log %s listed in the index, but failed to stat", --===============6660271560377575993== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marc.alff@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-5.5-bug11766528/ # testament_sha1: b9c0aec2c9a265487b9f9236130aead3de5128c3 # timestamp: 2011-03-01 17:39:33 +0100 # base_revision_id: tor.didriksen@stripped\ # qmhcbs7oyzdgiyyy # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWQDyQqkACpn/gGBwUiB/f/// f+//6v////pgFdz7O0nbqmuu5e83t5YOSW2lQornbYFUKSNG7AK3Y6UAULs7Pc0CiqTso3rSMJRN JomARkwpmhBqmTPVNNpqeptQaGg0DQaaAGgShMgQJoamJpNNU8U8k9QBo/VPRGgGh6ag9IAHqA0p +opqephqYBMEaYjCYQ0ZGExBgQGEGjASakRMo00TU8jaj1MRNoJtTTTRoGh6gANDQDRoaHBkGjQB k0xDTQZBiGEDQGjExGgAACpJAmgCZMkxGTUwjEJo0BlDNRkPU8iMgGT0mcDiIa+YD/CjeP8+3GvL UCick5ZY84pjThRMSpbsy8EvL5yx2zI5pibUMplolS4aJhHHt5To8UT8ZKGzavfdvYExJ/deXuBw Nqyz7vvn4h2M85DwepnF57CHjNZb2aCdTxEyrydEMqPZVVZ7/1t/b1bT99Zft3HIWlA6765D2RIy Moj949L+0P5SMc8g3gHODS86ZYI8cwt0bwSUekv/5St+Ovy8lXzhQyWoeeUt6OLVarPb6cWrn+q+ 6/NJlLc6djFS9W/J5Ge2tgAwUQ83vkZKmKZhr68vIjaxBwmRrkstaylOJzKQRDvKHS2FZclBm4Y6 AM0jwJNNJtFNvRParh1WZ22LPda67Vxt1ecNPwkDWknOgXg2sD+aK+Ip5Hbfu3XXImk1Ydy38qOy TzxwilFFiyKQ0+jnoPPANOOqxrS3HxK2mfW5Neg7e9iSheG8FxW9GqphJipKUrLRXWtuvpk5EUwd l0LSrLGoznEszPJCT++bGlVU3Hi9bsNv1+PLX1dTgminOKg/0poEfPpmlMaq31GPDHl5YVRV4+wP 9p48IwKYfT78s+wFM9PFqwO4poO6GCnh96uW32+UshI61oTPTH2O9ArTOiQAKnwtc/h/rQT0WSPc LpIBFE3gGvAX5IREcAmMi40kjfCIPKncIJ+Fa77cKUJGi2nRZuJlqqtRagq03OfBrfceHPcuG31m CqaBq2iAFhGDqDSLrQX4PXBWNC6+KJWu2FFt8eITwPC4AMsmibwaC2NRr0X4jz4Saq47+7Sz6Vhj P2KlKhgLgIik9t6Ww3bUc7BWk+7JHlRlF3A+W3rzB5vhbsAicAPqiWlzxPSnfD3/L2+Vs3/NV5+y Jdv3gBZ5DEa980s0+ThkeTw1p/16YAd/quXeJL9C2otJFBZD6yXkC6Bch4JYFBDkCoIxO6AD0Q9r p9S0I9OCsawgrddXc/GiK2VzN/T5CM9HWEwghQMABbSYUeKiLJJJWuoGFOHBImqEEBtl+zAbLQRe cuuv63QXPmlKtIfY8GvoXTyWY53PyCxSHi/Fyiq70NhoXlLLMPU2bmxy1+09RopuZPATiaAIiegY TFBaCVZDWaqd8+jBW8rnmMUBDDsyuiBzt6skYYwRBNU+MAHhFHTFnxdRKcPu1R6aOyS08k9MTzpJ 3DQiamSJnpuhgM7bGUlhhagscEGMZYJMgDgIdwk4IzwDA13K7DyojDpSGCaGbECY2ea2Vqoh2M8b EP2I1GSilZ+RV2rO8yKXlSYFJFrlXCAyMVVyhNJzi6gRAwIjkC98NIfCQuliZQhIR4LzlHU+uXBa oF0n5S4ZnnLk+OA24F9pdFEb0OImYqKbMYLqTnff2I8/TEsw3Kgy/teSIiSDsG6j+byPkU4KAHR2 4HPDRyEw1ag8KIHj300uVp2VSQuwxcdN8OvVu1aPtZHunBjCx/LqgOxBRVFulIzx1x27Si/RfAQL iKbY55DN5sL9cpx0StDWE0y5hrRFcSjFRqQwSo0j84gJruYCtNw/TSKdI1wivPjvnTddcICyMIOo IjExZxJG6L2/LXKZkliiZ1pbF/IUCySJpBz+Imj1C4N3bhsha694xqUp1UiAyJiM+hVTJsiWvZCJ hDiT0HEn1sSV7sSBx4MhcBqtqdLpMnq5XOgzq8cN5IxJolGEQVwMFQUgdITukdo+Kc+nTdckXctE iq5MWBVHi069fBtQ5tbqbIzdHBvc2gxrQwub2UdTkhwEDuNQhXTVrauxzOc1LpVJEotJEcgaHF4z 0VTUYcsMMrYG3TmYlCiWsU9R/2KClOzHMzIGJSIYXABZCEHGZISEVqnah/3EQOk3azzFg8qpqFsi TDKqNYNhucdKtskRreZeFLPNGFAygulL62M0NaG+D1PajonfFsjJM95xwoGRvTGCxB1JmVocM44V DPF5zbWTmoiLSUasmNBOZHUR1nHUE9kzpx2+WD4F1FHiqSNCxzJYy3sdmK1CBAe1zgZD+s25YV1N jkZ8iAyoLmc/O97bkCgdDFhTU0PMaiBU0RIOGGt9Y1wdOW6sLQmEJUIhhfiepvcqdUOfLmaaGhnx a9dtbhQ1WkpCrRUku9Ql2DxLUsKWwQJiMiIg5CBaUmF3URmJOSJxNhca0xoqei8eUttpzd+SiA0O ORDO/IryguL3FGOg3QuDVpoKSrIzh6k6Ys08zPLLfcmQUKGJoQP03GJKyhXBsno6qoSk+xKMyCk9 2ZcQJGB7MdBSQQDQQxxtpCyhoSmks1FZab+YcVwOAgZbZ7YInaiBTgiEOcOGvOnYNW5Z3AraSArL AECFJ2Zkyk1B9gmbydZ8TTaBXgsVVyyPPMcYT77YFpcyO57HRhyeMB+AD5Tc1O7q7uepiqIJpkwo RVqkZh6jUV+mTRuvP1vf44W3a57pD93/jOvtf3HX8wCSAD8ofrQQrQr9FWp/mvtt9AAVDxvRBCx2 8YsSMVuBPuv6YBVUBN7G3NgGk3ukW9EIYNkJm/9/205CadaP6pFwL96MG6I6yfzKJbjhv4Ccbloi 5e/BJjkc31iXGq8TXxHOLtYzNrBifJtNAuWdBLRRJUpMqi0z0WLWU7RssX25UoqSbfMDkahO3Pfw 5IdXTckfx7Yj8EbrO6HfJ1R/TlaLlElvNtoqpt0kl55tNq4t+0TkkYbS/Xd/RB/MO6Qqgqd5jbOB OlnlCDtTYbLSyGqmEyhP1TIS/APNEXCVJDscO2eHbfCeOO/dZlmFdPz0jSeZpJxM6pIFG9m7xDg2 +DSBM6IsngJoePPTNKRiSafw2dMtetq/I6IXeCQ1W4QlhMrUbDo0+N+8G3ES80iY7MsOOstdlakS qiWjkpaaqE0wmiE24W+Lck2xdqMFCaWGGutPFncKSHaJYls4ZSTxZEh5jrSTrgTWQ9PAGGuKM3Z1 IiiMpTRayqqb4nAbhNYli4nWTQNBL17Rno1ZmBMyfD9r3fvqxsKKItIW3H4rwGKWIhK93C0BiBwe HLJGCD2MpFiIiLBBQVRFMvcyAKlGINUV4yTyy5GdFY2hh9zXsNOuQYlCopKUpSioUKlY0u1vMwL4 PzaJncC9J/B/otDO+RMhdr7JVKlwvMj6uLJ4pxe+WsVKgB7D85oAfOYfoIwNTYr7iCWRZj3HvdE7 eHtoZnMdfWSftX/n3ran+bo16EXunT0oTcwOfMfwkPTNV9rYTkRNdJI14yg1yQwx/XXzKnPPcx0V UPu92mQ4M2VukHVaaNzIGVRGS+W7nXGQNO/ffxIdXFerMxJBGSakkD2dmk++uE+4YnPNm8nNziMU gSIfdmPGHGAER0DzgdBij733bODa+88vvR+ikpk+ySj+8fJevS9Vv69XU9cNRWTW7MJ/E2YPJoYX INQPUPjST15TGb6S10h7nc97vebuYLnFc7169TwegyeDe6Nu/jLel8zW4PZOXhD5bm3k2hzSpLCg eb07Tm7lsIK4T4SQxXU0WokwGyRPR50npFI9H26h9kq5/rrSG+q8EObYbqYFPdZdcWuq0nGLLXJa yMMe5ptx8WPJ3TwxbLsWMjvZw23alRlJKTT2qn3vhIXtyt+Xu4jS93sMPACSfAcCCbzfyRxwR4Vg Q75ISVvo5/TSl4Kh1EvusuvZU7qTopSdXhclylJ/EH0bXRknU0PKrjBwCkCXkQLXg2HKRDRhmAFi nkcWVVFFoI9p0qk6oYzvFBa42RN2IBS6CIwZjJKKRKafF4rMvj+KPD3sWXhpZbuN3H4aGhtepe6g deuS0nX1eQrWukKicUVJyoFVDoIqJLOmTTwqc3rW8HJmiVKSvJ7NV+e3ZW3wxhdhQHdjYLw5Ge2J 2ckob0Mic6+F92kLY5lMz83FAhMwdgj5e1p7qwnt/kfnm135N5rhmgfEjnaLULoZVE8LqmAKqkV1 WS7lHADnmT6gVADDTIhI9jfyHtFRzqnRY8EX43ohaRpks4ruB1afincFpJFfMNKNEI2CpFRgqSYz xgNs3Hwo6by66VPd7R2LU9fnZRZ72b2XrP7HvWkKXe1ZsLx86u3BgtIYQwyQ8Y3/Bh+aTo5yfSid 66SkKFUFJO8Tdc7Xu4uuOp6JijreiSFn0eCyblVQl/PlMssuN6Tcomkq0lV6rRItJa0zoHc5sdUi stbV2Pe1tXDbOY+Rpj0Hq4Ta2eEZPNxo7UtBp7G1DBfqCpVnF3PKXNT51onsKibdHp0yQ+gGBXfa ZFXtasrqVwbvRIl0aZfZYZzYHOEqQMp5XCpoe7zh3oubLZszciJldWm4Ip6Hhh9Sj5y6HCtrIFTg QPLrt3XammZVLnVEekXTtqV7kcUl6Ul9Cfnwtp5lnhizgb7wuiaPjxz+JE7e/hJKqqoeSGp3MNUp SlVK67+XwRZ3sJ1OaIrLs+1zL2vLIW9Pa8tikpLERXnhXKYrqKRx0ZlBId4AKkNoiaQ2+xzKpbzW P+qjAwKVFUwwwuVVS6iwnfN7qF+zuGuew5MTnO631hMjp5hxZetgmLIUnSRkSXoTNenTZJreiosu kSoGX01ZEi9UAMZbvQY+3NECNUWyQcAA1lNIo1V9e9vAD5E6kRiu3Qqa2mxQoiIiLZRq1S1HRrFL y4xDDpWojGJaqpjMW2W/q25CumAoMqb3gwECJCrDsWuU8qbFBSiSSWkRADGREApiECpNvzekHLKf rPwMl19Gc0+rfIJzka+jB6po6PVu+ONbSDn5/yxmbdow2tCcBwjDI/rK6e2OLlnnK2rSR52ix6iN FMYBVe6IFRsW2SJGqS5HiyElBYYpclClCvxrkXI+3qYVeRMzmxsl3+NF2Kzhg3Lo9bC0DH5FNs43 34xv7M40mIZ1DXWq+0qENsKklqIutOxxU+lo4fli/FE9bztsYX/S+b4x1Y8uPOPl+to1M5IT9FMp q3WgfAk/fuJrUpTOiXg/HnhdMMvBRZz6sV/eZastbGp51F0+eQiQuAHCXXYkIe0YTor5t3YLums6 /a8uPb/Byh50v07nyu9C93Ya3xTGxXXnE+CF7mdPhUlQ6vbIaBbH5c31F00SDxt7Yov801jTVO7L XdFjObLT4lXe11Nbvco0m9JJ751tsfXsevvk32aaiCoAJKaJ4ElRmYhpTYfjhCFxom7x6X6iOCZA tLWXAusqq9HjObQ5ea0N4j3JN/xAePZC10Vg0GrcgHEGYGdn9LEfpnhdeNEI6q2svVh6p7foefGZ ojyXRpNrxjXwnOBnrLvBy5M9Ktlq0xLRa5V1WBoCjjOvjj6m0SlVnaZnaU3nkx7zfDwkDsy12AX7 evYk4AA4dHU9UUWLsADuTjwywaHM9XCTW4IkZLfw7k5wITRNUOqlUPMFjxEJ4qqkTM2cT0Rsqqqq rfffHbgiKSXpOQZxO4j5PDJyR1MtVSM8b1pGYMXJr4aQ7xk9nRE3djJjLJ3EzakKPOFr1nJRXSde EyhDIkxBDiie/9iH2NXfqZiGuZ9ElyNTB0k0Ml8GiomKNG/GY3Z3EX4nopHbUacZbHdL5NzREsk3 +1ua454fBUJq9JYw7fpjbne48u9hI8yjNPS10l8JRDRPcophMxp2JjY2sAKgD2gvrl+WkxL0Pc2B 5Eu5y2o5gPWdmULvBC/VYLeiEyIKAFjWwNcnDD1r1DDshiR+0wk3bs54TVD2zoo4zXlv8ZJPHqve ZjvqA+rxlkYt+dyO9mvpD5zkK5R4TmRxopGmgaaGkFFFB4gOKJW6JcRERERERERji3HiLUeus2CO KobF6wbHqQ6mkvZb3E1/mwQ9jF7HN2ZemgXWyRZ2RY568bjcwTGfuvklhMAtJFhYL7orqlJDohz+ GrVkeKIlxqJU0pgnZxpeRJm5EuFaaB4CVi8sEuD/xdyRThQkADyQqkA= --===============6660271560377575993==--