From: Bjorn Munch Date: September 20 2010 9:16am Subject: bzr push into mysql-trunk-mtr branch (bjorn.munch:2967 to 2969) List-Archive: http://lists.mysql.com/commits/118574 Message-Id: <201009200917.o8K9HNhe029214@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2031916216==" --===============2031916216== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 2969 Bjorn Munch 2010-09-20 [merge] upmerge 56753,56787 modified: client/mysqltest.cc mysql-test/lib/mtr_report.pm mysql-test/r/mysqltest.result mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test mysql-test/suite/sys_vars/t/div_precision_increment_func.test mysql-test/t/mysqltest.test 2968 Bjorn Munch 2010-09-20 [merge] merge from trunk modified: client/CMakeLists.txt include/CMakeLists.txt include/Makefile.am mysql-test/r/sp-destruct.result mysql-test/t/sp-destruct.test scripts/CMakeLists.txt scripts/make_win_bin_dist sql/CMakeLists.txt sql/mdl.cc sql/mdl.h sql/sp.cc sql/sql_base.cc sql/sql_base.h sql/table.cc 2967 Bjorn Munch 2010-09-14 [merge] upmerge 55426(55546), 56647 modified: client/mysqltest.cc === modified file 'client/CMakeLists.txt' --- a/client/CMakeLists.txt 2010-08-12 15:19:57 +0000 +++ b/client/CMakeLists.txt 2010-09-06 11:26:23 +0000 @@ -64,7 +64,10 @@ MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS") TARGET_LINK_LIBRARIES(mysqlslap mysqlclient) -ADD_EXECUTABLE(echo echo.c) +# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/". +IF(WIN32) + MYSQL_ADD_EXECUTABLE(echo echo.c) +ENDIF(WIN32) SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap PROPERTIES HAS_CXX TRUE) === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-09-14 12:23:53 +0000 +++ b/client/mysqltest.cc 2010-09-20 08:24:39 +0000 @@ -2185,8 +2185,14 @@ void var_query_set(VAR *var, const char DBUG_ENTER("var_query_set"); LINT_INIT(res); + /* Only white space or ) allowed past ending ` */ while (end > query && *end != '`') + { + if (*end && (*end != ' ' && *end != '\t' && *end != '\n' && *end != ')')) + die("Spurious text after `query` expression"); --end; + } + if (query == end) die("Syntax error in query, missing '`'"); ++query; === modified file 'include/CMakeLists.txt' --- a/include/CMakeLists.txt 2010-08-12 15:27:53 +0000 +++ b/include/CMakeLists.txt 2010-09-13 10:26:57 +0000 @@ -54,6 +54,7 @@ SET(HEADERS keycache.h m_ctype.h my_attribute.h + my_compiler.h ${HEADERS_GEN_CONFIGURE} ) === modified file 'include/Makefile.am' --- a/include/Makefile.am 2010-09-01 13:05:01 +0000 +++ b/include/Makefile.am 2010-09-13 10:36:27 +0000 @@ -32,8 +32,9 @@ pkginclude_HEADERS = $(HEADERS_ABI) my_d decimal.h errmsg.h my_global.h my_net.h \ my_getopt.h sslopt-longopts.h my_dir.h \ sslopt-vars.h sslopt-case.h sql_common.h keycache.h \ - m_ctype.h my_attribute.h $(HEADERS_GEN_CONFIGURE) \ - $(HEADERS_GEN_MAKE) probes_mysql.h probes_mysql_nodtrace.h + m_ctype.h my_attribute.h my_compiler.h \ + $(HEADERS_GEN_CONFIGURE) $(HEADERS_GEN_MAKE) \ + probes_mysql.h probes_mysql_nodtrace.h noinst_HEADERS = lf.h my_bit.h \ heap.h my_bitmap.h my_uctype.h password.h \ @@ -47,7 +48,7 @@ noinst_HEADERS = lf.h my_bit.h \ my_user.h my_atomic.h atomic/nolock.h \ atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \ atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \ - atomic/solaris.h mysql/innodb_priv.h my_compiler.h + atomic/solaris.h mysql/innodb_priv.h pkgpsiinclude_HEADERS = mysql/psi/psi.h mysql/psi/mysql_thread.h \ mysql/psi/mysql_file.h \ === modified file 'mysql-test/lib/mtr_report.pm' --- a/mysql-test/lib/mtr_report.pm 2010-06-10 08:34:16 +0000 +++ b/mysql-test/lib/mtr_report.pm 2010-09-20 08:12:39 +0000 @@ -229,7 +229,8 @@ sub mtr_report_stats ($$;$) { # Find out how we where doing # ---------------------------------------------------------------------- - my $tot_skiped= 0; + my $tot_skipped= 0; + my $tot_skipdetect= 0; my $tot_passed= 0; my $tot_failed= 0; my $tot_tests= 0; @@ -246,8 +247,9 @@ sub mtr_report_stats ($$;$) { } elsif ( $tinfo->{'result'} eq 'MTR_RES_SKIPPED' ) { - # Test was skipped - $tot_skiped++; + # Test was skipped (disabled not counted) + $tot_skipped++ unless $tinfo->{'disable'}; + $tot_skipdetect++ if $tinfo->{'skip_detected_by_test'}; } elsif ( $tinfo->{'result'} eq 'MTR_RES_PASSED' ) { @@ -376,6 +378,9 @@ sub mtr_report_stats ($$;$) { print "All $tot_tests tests were successful.\n\n"; } + print "$tot_skipped tests were skipped, ". + "$tot_skipdetect by the test itself.\n\n" if $tot_skipped; + if ( $tot_failed != 0 || $found_problems) { mtr_error("there were failing test cases") unless $dont_error; === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2010-09-01 14:02:56 +0000 +++ b/mysql-test/r/mysqltest.result 2010-09-20 08:24:39 +0000 @@ -177,6 +177,9 @@ mysqltest: At line 1: End of line junk d " mysqltest: At line 1: Extra delimiter ";" found mysqltest: At line 1: Extra delimiter ";" found +mysqltest: At line 1: Spurious text after `query` expression +mysqltest: At line 1: Spurious text after `query` expression +mysqltest: At line 2: Spurious text after `query` expression mysqltest: At line 1: Missing argument(s) to 'error' mysqltest: At line 1: Missing argument(s) to 'error' mysqltest: At line 1: The sqlstate definition must start with an uppercase S === modified file 'mysql-test/r/sp-destruct.result' --- a/mysql-test/r/sp-destruct.result 2010-03-03 09:24:53 +0000 +++ b/mysql-test/r/sp-destruct.result 2010-09-13 09:58:11 +0000 @@ -134,3 +134,19 @@ Warning 1405 Failed to revoke all privil # Restore the procs_priv table RENAME TABLE procs_priv_backup TO mysql.procs_priv; FLUSH TABLE mysql.procs_priv; +# +# Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from +# 5.1.50 to 5.5.6". +# +drop database if exists mysqltest; +# Backup mysql.proc. +flush table mysql.proc; +create database mysqltest; +# Corrupt mysql.proc to make it unusable by current version of server. +alter table mysql.proc drop column type; +# The below statement should not cause assertion failure. +drop database mysqltest; +Warnings: +Error 1695 Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted +# Restore mysql.proc. +drop table mysql.proc; === modified file 'mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test' --- a/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test 2010-01-14 10:49:40 +0000 +++ b/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test 2010-09-15 12:56:22 +0000 @@ -205,7 +205,7 @@ DROP TABLE `t1`; -- echo === Using mysqlbinlog to detect failure. Before the patch mysqlbinlog would find a corrupted event, thence would fail. --- let $MYSQLD_DATADIR= `SELECT @@datadir`; +-- let $MYSQLD_DATADIR= `SELECT @@datadir` -- exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug42749.binlog -- remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug42749.binlog @@ -330,7 +330,7 @@ while($ntables) -- echo ### assertion: check that binlog is not corrupt. Using mysqlbinlog to -- echo ### detect failure. Before the patch mysqlbinlog would find -- echo ### a corrupted event, thence would fail. --- let $MYSQLD_DATADIR= `SELECT @@datadir`; +-- let $MYSQLD_DATADIR= `SELECT @@datadir` -- exec $MYSQL_BINLOG -v --hex $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug50018.binlog ## clean up === modified file 'mysql-test/suite/sys_vars/t/div_precision_increment_func.test' --- a/mysql-test/suite/sys_vars/t/div_precision_increment_func.test 2009-12-22 09:35:56 +0000 +++ b/mysql-test/suite/sys_vars/t/div_precision_increment_func.test 2010-09-20 08:21:55 +0000 @@ -19,7 +19,7 @@ # # ################################################################################ -let $save_div_precision_increment = `SELECT @@global.div_precision_increment` +let $save_div_precision_increment = `SELECT @@global.div_precision_increment`; #SET @save_div_precision_increment = @@global.div_precision_increment; === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2010-09-01 14:02:56 +0000 +++ b/mysql-test/t/mysqltest.test 2010-09-20 08:24:39 +0000 @@ -494,6 +494,23 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqlt --error 1 --exec echo "--disable_query_log;" | $MYSQL_TEST 2>&1 +# +# Extra text after `` +# +--error 1 +-- exec echo "let \$x= \`select 1\` BOO ;" | $MYSQL_TEST 2>&1 +--error 1 +-- exec echo "--let \$x= \`select 1\`;" | $MYSQL_TEST 2>&1 +--write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql +# Missing ; in next line should be detected and cause failure +let $x= `select 1` +let $x= 2; +echo $x; +EOF +--error 1 +--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.sql 2>&1 +remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; + # Allow trailing # comment --sleep 1 # Wait for insert delayed to be executed. === modified file 'mysql-test/t/sp-destruct.test' --- a/mysql-test/t/sp-destruct.test 2010-04-16 14:24:06 +0000 +++ b/mysql-test/t/sp-destruct.test 2010-09-13 09:58:11 +0000 @@ -222,3 +222,33 @@ SHOW WARNINGS; --echo # Restore the procs_priv table RENAME TABLE procs_priv_backup TO mysql.procs_priv; FLUSH TABLE mysql.procs_priv; + + +--echo # +--echo # Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from +--echo # 5.1.50 to 5.5.6". +--echo # +--disable_warnings +drop database if exists mysqltest; +--enable_warnings +--echo # Backup mysql.proc. +flush table mysql.proc; +let $MYSQLD_DATADIR= `select @@datadir`; +--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm +--copy_file $MYSQLD_DATADIR/mysql/proc.MYD $MYSQLTEST_VARDIR/tmp/proc.MYD +--copy_file $MYSQLD_DATADIR/mysql/proc.MYI $MYSQLTEST_VARDIR/tmp/proc.MYI + +create database mysqltest; +--echo # Corrupt mysql.proc to make it unusable by current version of server. +alter table mysql.proc drop column type; +--echo # The below statement should not cause assertion failure. +drop database mysqltest; + +--echo # Restore mysql.proc. +drop table mysql.proc; +--copy_file $MYSQLTEST_VARDIR/tmp/proc.frm $MYSQLD_DATADIR/mysql/proc.frm +--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYD $MYSQLD_DATADIR/mysql/proc.MYD +--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYI $MYSQLD_DATADIR/mysql/proc.MYI +--remove_file $MYSQLTEST_VARDIR/tmp/proc.frm +--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYD +--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYI === modified file 'scripts/CMakeLists.txt' --- a/scripts/CMakeLists.txt 2010-08-23 17:01:12 +0000 +++ b/scripts/CMakeLists.txt 2010-09-13 10:26:57 +0000 @@ -139,6 +139,7 @@ ELSE() ENDIF() SET(HOSTNAME "hostname") +SET(MYSQLD_USER "mysql") # Required for mysqlbug until autotools are deprecated, once done remove these # and expand default cmake variables === modified file 'scripts/make_win_bin_dist' --- a/scripts/make_win_bin_dist 2010-07-23 20:14:04 +0000 +++ b/scripts/make_win_bin_dist 2010-08-31 14:33:19 +0000 @@ -260,6 +260,7 @@ cp include/mysql.h \ include/keycache.h \ include/m_ctype.h \ include/my_attribute.h \ + include/my_compiler.h \ include/mysqld_error.h \ include/sql_state.h \ include/mysqld_ername.h \ === modified file 'sql/CMakeLists.txt' --- a/sql/CMakeLists.txt 2010-08-20 08:48:59 +0000 +++ b/sql/CMakeLists.txt 2010-09-13 09:58:11 +0000 @@ -289,8 +289,7 @@ IF(WIN32 AND MYSQLD_EXECUTABLE) COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_initial_db.cmake WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data - COMMAND ${CMAKE_COMMAND} -E touch initdb.dep - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep DEPENDS mysqld ) ADD_CUSTOM_TARGET(initial_database === modified file 'sql/mdl.cc' --- a/sql/mdl.cc 2010-08-20 08:48:59 +0000 +++ b/sql/mdl.cc 2010-09-13 10:26:57 +0000 @@ -124,7 +124,6 @@ public: Deadlock_detection_visitor(MDL_context *start_node_arg) : m_start_node(start_node_arg), m_victim(NULL), - m_current_search_depth(0), m_found_deadlock(FALSE) {} virtual bool enter_node(MDL_context *node); @@ -133,6 +132,8 @@ public: virtual bool inspect_edge(MDL_context *dest); MDL_context *get_victim() const { return m_victim; } + + void abort_traversal(MDL_context *node); private: /** Change the deadlock victim to a new one if it has lower deadlock @@ -147,13 +148,6 @@ private: MDL_context *m_start_node; /** If a deadlock is found, the context that identifies the victim. */ MDL_context *m_victim; - /** Set to the 0 at start. Increased whenever - we descend into another MDL context (aka traverse to the next - wait-for graph node). When MAX_SEARCH_DEPTH is reached, we - assume that a deadlock is found, even if we have not found a - loop. - */ - uint m_current_search_depth; /** TRUE if we found a deadlock. */ bool m_found_deadlock; /** @@ -187,7 +181,7 @@ private: bool Deadlock_detection_visitor::enter_node(MDL_context *node) { - m_found_deadlock= ++m_current_search_depth >= MAX_SEARCH_DEPTH; + m_found_deadlock= m_current_search_depth >= MAX_SEARCH_DEPTH; if (m_found_deadlock) { DBUG_ASSERT(! m_victim); @@ -207,7 +201,6 @@ bool Deadlock_detection_visitor::enter_n void Deadlock_detection_visitor::leave_node(MDL_context *node) { - --m_current_search_depth; if (m_found_deadlock) opt_change_victim_to(node); } @@ -252,6 +245,21 @@ Deadlock_detection_visitor::opt_change_v /** + Abort traversal of a wait-for graph and report a deadlock. + + @param node Node which we were about to visit when abort + was initiated. +*/ + +void Deadlock_detection_visitor::abort_traversal(MDL_context *node) +{ + DBUG_ASSERT(! m_victim); + m_found_deadlock= TRUE; + opt_change_victim_to(node); +} + + +/** Get a bit corresponding to enum_mdl_type value in a granted/waiting bitmaps and compatibility matrices. */ @@ -2056,8 +2064,13 @@ bool MDL_lock::visit_subgraph(MDL_ticket are visiting it but this is OK: in the worst case we might do some extra work and one more context might be chosen as a victim. */ + ++gvisitor->m_current_search_depth; + if (gvisitor->enter_node(src_ctx)) + { + --gvisitor->m_current_search_depth; goto end; + } /* We do a breadth-first search first -- that is, inspect all @@ -2114,6 +2127,7 @@ bool MDL_lock::visit_subgraph(MDL_ticket end_leave_node: gvisitor->leave_node(src_ctx); + --gvisitor->m_current_search_depth; end: mysql_prlock_unlock(&m_rwlock); === modified file 'sql/mdl.h' --- a/sql/mdl.h 2010-08-20 08:48:59 +0000 +++ b/sql/mdl.h 2010-09-13 10:26:57 +0000 @@ -385,7 +385,10 @@ public: virtual bool inspect_edge(MDL_context *dest) = 0; virtual ~MDL_wait_for_graph_visitor(); - MDL_wait_for_graph_visitor() :m_lock_open_count(0) {} + MDL_wait_for_graph_visitor() :m_lock_open_count(0), + m_current_search_depth(0) + { } + virtual void abort_traversal(MDL_context *node) = 0; public: /** XXX, hack: During deadlock search, we may need to @@ -396,6 +399,17 @@ public: LOCK_open since it has significant performance impacts. */ uint m_lock_open_count; + /** + Set to the 0 at start. Increased whenever + we descend into another MDL context (aka traverse to the next + wait-for graph node). When MAX_SEARCH_DEPTH is reached, we + assume that a deadlock is found, even if we have not found a + loop. + + XXX: This member belongs to this class only temporarily until + bug #56405 is fixed. + */ + uint m_current_search_depth; }; /** === modified file 'sql/sp.cc' --- a/sql/sp.cc 2010-07-29 13:37:49 +0000 +++ b/sql/sp.cc 2010-09-13 09:58:11 +0000 @@ -440,6 +440,7 @@ static TABLE *open_proc_table_for_update { TABLE_LIST table_list; TABLE *table; + MDL_ticket *mdl_savepoint= thd->mdl_context.mdl_savepoint(); DBUG_ENTER("open_proc_table_for_update"); table_list.init_one_table("mysql", 5, "proc", 4, "proc", TL_WRITE); @@ -450,6 +451,9 @@ static TABLE *open_proc_table_for_update if (!proc_table_intact.check(table, &proc_table_def)) DBUG_RETURN(table); + close_thread_tables(thd); + thd->mdl_context.rollback_to_savepoint(mdl_savepoint); + DBUG_RETURN(NULL); } === modified file 'sql/sql_base.cc' --- a/sql/sql_base.cc 2010-08-20 08:48:59 +0000 +++ b/sql/sql_base.cc 2010-09-13 10:26:57 +0000 @@ -100,6 +100,8 @@ bool No_such_table_error_handler::safely TABLE_SHAREs, refresh_version and the table id counter. */ mysql_mutex_t LOCK_open; +mysql_mutex_t LOCK_dd_owns_lock_open; +uint dd_owns_lock_open= 0; #ifdef HAVE_PSI_INTERFACE static PSI_mutex_key key_LOCK_open; @@ -298,6 +300,7 @@ bool table_def_init(void) init_tdc_psi_keys(); #endif mysql_mutex_init(key_LOCK_open, &LOCK_open, MY_MUTEX_INIT_FAST); + mysql_mutex_init(NULL, &LOCK_dd_owns_lock_open, MY_MUTEX_INIT_FAST); oldest_unused_share= &end_of_unused_share; end_of_unused_share.prev= &oldest_unused_share; @@ -341,6 +344,7 @@ void table_def_free(void) table_def_inited= 0; /* Free table definitions. */ my_hash_free(&table_def_cache); + mysql_mutex_destroy(&LOCK_dd_owns_lock_open); mysql_mutex_destroy(&LOCK_open); } DBUG_VOID_RETURN; === modified file 'sql/sql_base.h' --- a/sql/sql_base.h 2010-08-20 08:48:59 +0000 +++ b/sql/sql_base.h 2010-09-13 10:26:57 +0000 @@ -71,6 +71,8 @@ enum enum_tdc_remove_table_type {TDC_RT_ bool check_dup(const char *db, const char *name, TABLE_LIST *tables); extern mysql_mutex_t LOCK_open; +extern mysql_mutex_t LOCK_dd_owns_lock_open; +extern uint dd_owns_lock_open; bool table_cache_init(void); void table_cache_free(void); bool table_def_init(void); === modified file 'sql/table.cc' --- a/sql/table.cc 2010-08-26 15:17:35 +0000 +++ b/sql/table.cc 2010-09-13 10:26:57 +0000 @@ -3092,7 +3092,30 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo holding a write-lock on MDL_lock::m_rwlock. */ if (gvisitor->m_lock_open_count++ == 0) + { + /* + To circumvent bug #56405 "Deadlock in the MDL deadlock detector" + we don't try to lock LOCK_open mutex if some thread doing + deadlock detection already owns it and current search depth is + greater than 0. Instead we report a deadlock. + + TODO/FIXME: The proper fix for this bug is to use rwlocks for + protection of table shares/instead of LOCK_open. + Unfortunately it requires more effort/has significant + performance effect. + */ + mysql_mutex_lock(&LOCK_dd_owns_lock_open); + if (gvisitor->m_current_search_depth > 0 && dd_owns_lock_open > 0) + { + mysql_mutex_unlock(&LOCK_dd_owns_lock_open); + --gvisitor->m_lock_open_count; + gvisitor->abort_traversal(src_ctx); + return TRUE; + } + ++dd_owns_lock_open; + mysql_mutex_unlock(&LOCK_dd_owns_lock_open); mysql_mutex_lock(&LOCK_open); + } I_P_List_iterator tables_it(used_tables); @@ -3107,8 +3130,12 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo goto end; } + ++gvisitor->m_current_search_depth; if (gvisitor->enter_node(src_ctx)) + { + --gvisitor->m_current_search_depth; goto end; + } while ((table= tables_it++)) { @@ -3131,10 +3158,16 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo end_leave_node: gvisitor->leave_node(src_ctx); + --gvisitor->m_current_search_depth; end: if (gvisitor->m_lock_open_count-- == 1) + { mysql_mutex_unlock(&LOCK_open); + mysql_mutex_lock(&LOCK_dd_owns_lock_open); + --dd_owns_lock_open; + mysql_mutex_unlock(&LOCK_dd_owns_lock_open); + } return result; } --===============2031916216== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/bjorn.munch@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: bjorn.munch@stripped # target_branch: file:///home/bm136801/my/mtr-tr/ # testament_sha1: 26ee8b8b79b81a5d9d0c7a86bb484e363d0db7b0 # timestamp: 2010-09-20 11:17:23 +0200 # source_branch: file:///home/bm136801/my/mysql-trunk/ # base_revision_id: bjorn.munch@stripped\ # 4fj042ktf50y00i1 # # Begin bundle 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 --===============2031916216==--