From: Jon Olav Hauglid Date: September 21 2010 9:45am Subject: bzr commit into mysql-5.5-runtime branch (jon.hauglid:3141) Bug#56422 Bug#56494 List-Archive: http://lists.mysql.com/commits/118686 X-Bug: 56422,56494 Message-Id: <201009210947.o8KNP6TE004328@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1175659398748673461==" --===============1175659398748673461== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-5.5-runtime-bug56494/ based on revid:jon.hauglid@stripped 3141 Jon Olav Hauglid 2010-09-21 Bug #56494 Segfault in upgrade_shared_lock_to_exclusive() for REPAIR of merge table Bug #56422 CHECK TABLE run when the table is locked reports corruption along with timeout The crash happened if a table maintenance statement (ANALYZE TABLE, REPAIR TABLE, etc.) was executed on a MERGE table and opening and locking a child table failed. This could for example happen if a child table did not exist or if a lock timeout happened while waiting for a conflicting metadata lock to disappear. Since opening and locking the MERGE table and its children failed, the tables would be closed and the metadata locks released. However, TABLE_LIST::table for the MERGE table would still be set, with its value invalid since the tables had been closed. This caused the table maintenance statement to try to continue and upgrade the metadata lock on the MERGE table. But since the lock already had been released, this caused a segfault. This patch fixes the problem by setting TABLE_LIST::table to NULL if open_and_lock_tables() fails. This prevents maintenance statements from continuing and trying to upgrade the metadata lock. The patch also includes a 5.5 version of the fix for Bug #46339 crash on REPAIR TABLE merge table USE_FRM. This bug caused REPAIR TABLE ... USE_FRM to give an assert when used on merge tables. Finally, the patch changes the error message from "Corrupt" to "Operation failed" for a number of issues not related to table corruption. For example "Lock wait timeout exceeded" and "Deadlock found trying to get lock". Test cases added to merge.test and check.test. modified: mysql-test/r/check.result mysql-test/r/log_tables_upgrade.result mysql-test/r/merge.result mysql-test/r/myisampack.result mysql-test/r/mysql_upgrade.result mysql-test/r/mysql_upgrade_ssl.result mysql-test/t/check.test mysql-test/t/merge.test sql/sql_admin.cc sql/sql_parse.cc === modified file 'mysql-test/r/check.result' --- a/mysql-test/r/check.result 2009-02-09 21:00:15 +0000 +++ b/mysql-test/r/check.result 2010-09-21 09:45:56 +0000 @@ -23,3 +23,19 @@ REPAIR TABLE t1; Table Op Msg_type Msg_text test.t1 repair status OK DROP TABLE t1; +# +# Bug#56422 CHECK TABLE run when the table is locked reports corruption +# along with timeout +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a INT); +LOCK TABLE t1 WRITE; +# Connection con1 +SET lock_wait_timeout= 1; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check Error Lock wait timeout exceeded; try restarting transaction +test.t1 check status Operation failed +# Connection default +UNLOCK TABLES; +DROP TABLE t1; === modified file 'mysql-test/r/log_tables_upgrade.result' --- a/mysql-test/r/log_tables_upgrade.result 2010-02-26 12:22:48 +0000 +++ b/mysql-test/r/log_tables_upgrade.result 2010-09-21 09:45:56 +0000 @@ -17,9 +17,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -31,9 +29,7 @@ mysql.proc mysql.procs_priv OK mysql.renamed_general_log OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK === modified file 'mysql-test/r/merge.result' --- a/mysql-test/r/merge.result 2010-09-16 14:06:46 +0000 +++ b/mysql-test/r/merge.result 2010-09-21 09:45:56 +0000 @@ -2358,6 +2358,48 @@ t2 WHERE b SOUNDS LIKE e AND d = 1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables DROP TABLE t2, t1; +# +# Bug#46339 - crash on REPAIR TABLE merge table USE_FRM +# +DROP TABLE IF EXISTS m1, t1; +CREATE TABLE t1 (c1 INT) ENGINE=MYISAM; +CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1) INSERT_METHOD=LAST; +LOCK TABLE m1 READ; +REPAIR TABLE m1 USE_FRM; +Table Op Msg_type Msg_text +test.m1 repair Error Table 'm1' was locked with a READ lock and can't be updated +test.m1 repair status Operation failed +UNLOCK TABLES; +REPAIR TABLE m1 USE_FRM; +Table Op Msg_type Msg_text +test.m1 repair note The storage engine for the table doesn't support repair +DROP TABLE m1,t1; +CREATE TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1); +REPAIR TABLE m1 USE_FRM; +Table Op Msg_type Msg_text +test.m1 repair Warning Can't open table +test.m1 repair error Corrupt +CREATE TABLE t1 (f1 BIGINT) ENGINE = MyISAM; +REPAIR TABLE m1 USE_FRM; +Table Op Msg_type Msg_text +test.m1 repair note The storage engine for the table doesn't support repair +REPAIR TABLE m1; +Table Op Msg_type Msg_text +test.m1 repair note The storage engine for the table doesn't support repair +DROP TABLE m1, t1; +CREATE TEMPORARY TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1); +REPAIR TABLE m1 USE_FRM; +Table Op Msg_type Msg_text +test.m1 repair Error Table 'test.m1' doesn't exist +test.m1 repair error Corrupt +CREATE TEMPORARY TABLE t1 (f1 BIGINT) ENGINE=MyISAM; +REPAIR TABLE m1 USE_FRM; +Table Op Msg_type Msg_text +test.m1 repair note The storage engine for the table doesn't support repair +REPAIR TABLE m1; +Table Op Msg_type Msg_text +test.m1 repair note The storage engine for the table doesn't support repair +DROP TABLE m1, t1; End of 5.1 tests # # An additional test case for Bug#27430 Crash in subquery code @@ -2677,7 +2719,7 @@ OPTIMIZE TABLE t1; Table Op Msg_type Msg_text test.t1 optimize Error Table 'test.t_not_exists' doesn't exist test.t1 optimize Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize error Corrupt DROP TABLE t1; # # Bug#36171 - CREATE TEMPORARY TABLE and MERGE engine @@ -3575,4 +3617,48 @@ ERROR HY000: The definition of table 'v1 drop view v1; drop temporary table tmp; drop table t1, t2, t3, m1, m2; +# +# Bug#56494 Segfault in upgrade_shared_lock_to_exclusive() for +# REPAIR of merge table +# +DROP TABLE IF EXISTS t1, t2, t_not_exists; +CREATE TABLE t1(a INT); +ALTER TABLE t1 engine= MERGE UNION (t_not_exists); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze Error Table 'test.t_not_exists' doesn't exist +test.t1 analyze Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist +test.t1 analyze error Corrupt +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check Error Table 'test.t_not_exists' doesn't exist +test.t1 check Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist +test.t1 check error Corrupt +CHECKSUM TABLE t1; +Table Checksum +test.t1 NULL +Warnings: +Error 1146 Table 'test.t_not_exists' doesn't exist +Error 1168 Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize Error Table 'test.t_not_exists' doesn't exist +test.t1 optimize Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist +test.t1 optimize error Corrupt +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test.t1 repair Error Table 'test.t_not_exists' doesn't exist +test.t1 repair Error Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist +test.t1 repair error Corrupt +REPAIR TABLE t1 USE_FRM; +Table Op Msg_type Msg_text +test.t1 repair Warning Can't open table +test.t1 repair error Corrupt +DROP TABLE t1; +CREATE TABLE t1(a INT); +CREATE TABLE t2(a INT) engine= MERGE UNION (t1); +REPAIR TABLE t2 USE_FRM; +Table Op Msg_type Msg_text +test.t2 repair note The storage engine for the table doesn't support repair +DROP TABLE t1, t2; End of 6.0 tests === modified file 'mysql-test/r/myisampack.result' --- a/mysql-test/r/myisampack.result 2009-11-26 12:47:55 +0000 +++ b/mysql-test/r/myisampack.result 2010-09-21 09:45:56 +0000 @@ -46,14 +46,12 @@ insert into t1 select * from t1; flush tables; optimize table t1; Table Op Msg_type Msg_text -test.t1 optimize error Table 'test.t1' is read only -Warnings: -Error 1036 Table 't1' is read only +test.t1 optimize Error Table 't1' is read only +test.t1 optimize status Operation failed repair table t1; Table Op Msg_type Msg_text -test.t1 repair error Table 'test.t1' is read only -Warnings: -Error 1036 Table 't1' is read only +test.t1 repair Error Table 't1' is read only +test.t1 repair status Operation failed drop table t1; # # BUG#41541 - Valgrind warnings on packed MyISAM table === modified file 'mysql-test/r/mysql_upgrade.result' --- a/mysql-test/r/mysql_upgrade.result 2010-07-05 10:22:13 +0000 +++ b/mysql-test/r/mysql_upgrade.result 2010-09-21 09:45:56 +0000 @@ -5,9 +5,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -18,9 +16,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK @@ -37,9 +33,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -50,9 +44,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK @@ -69,9 +61,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -82,9 +72,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK @@ -103,9 +91,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -116,9 +102,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK @@ -141,9 +125,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -154,9 +136,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK @@ -182,9 +162,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -195,9 +173,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK === modified file 'mysql-test/r/mysql_upgrade_ssl.result' --- a/mysql-test/r/mysql_upgrade_ssl.result 2010-08-11 17:56:56 +0000 +++ b/mysql-test/r/mysql_upgrade_ssl.result 2010-09-21 09:45:56 +0000 @@ -7,9 +7,7 @@ mysql.columns_priv mysql.db OK mysql.event OK mysql.func OK -mysql.general_log -Error : You can't use locks with log tables. -status : OK +mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK @@ -20,9 +18,7 @@ mysql.plugin mysql.proc OK mysql.procs_priv OK mysql.servers OK -mysql.slow_log -Error : You can't use locks with log tables. -status : OK +mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK === modified file 'mysql-test/t/check.test' --- a/mysql-test/t/check.test 2009-02-09 21:00:15 +0000 +++ b/mysql-test/t/check.test 2010-09-21 09:45:56 +0000 @@ -53,5 +53,29 @@ REPAIR TABLE t1; DROP TABLE t1; +--echo # +--echo # Bug#56422 CHECK TABLE run when the table is locked reports corruption +--echo # along with timeout +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(a INT); +LOCK TABLE t1 WRITE; + +--echo # Connection con1 +connect(con1, localhost, root); +SET lock_wait_timeout= 1; +CHECK TABLE t1; + +--echo # Connection default +connection default; +UNLOCK TABLES; +DROP TABLE t1; +disconnect con1; + + # Wait till we reached the initial number of concurrent sessions --source include/wait_until_count_sessions.inc === modified file 'mysql-test/t/merge.test' --- a/mysql-test/t/merge.test 2010-09-16 14:06:46 +0000 +++ b/mysql-test/t/merge.test 2010-09-21 09:45:56 +0000 @@ -1734,6 +1734,84 @@ t2 WHERE b SOUNDS LIKE e AND d = 1; DROP TABLE t2, t1; +--echo # +--echo # Bug#46339 - crash on REPAIR TABLE merge table USE_FRM +--echo # +--disable_warnings +DROP TABLE IF EXISTS m1, t1; +--enable_warnings +# +# Test derived from a proposal of Shane Bester. +# +CREATE TABLE t1 (c1 INT) ENGINE=MYISAM; +CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1) INSERT_METHOD=LAST; +# +# REPAIR ... USE_FRM with LOCK TABLES. +# +LOCK TABLE m1 READ; +REPAIR TABLE m1 USE_FRM; +UNLOCK TABLES; +# +# REPAIR ... USE_FRM without LOCK TABLES. +# +# This statement crashed the server (Bug#46339). +# +REPAIR TABLE m1 USE_FRM; +# +DROP TABLE m1,t1; +# +# Test derived from a proposal of Matthias Leich. +# +# Base table is missing. +# +CREATE TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1); +# +# This statement crashed the server (Bug#46339). +# +REPAIR TABLE m1 USE_FRM; +# +# Create base table. +# +CREATE TABLE t1 (f1 BIGINT) ENGINE = MyISAM; +# +# This statement crashed the server (Bug#46339). +# +REPAIR TABLE m1 USE_FRM; +# +# Normal repair as reference. +# +REPAIR TABLE m1; +# +# Cleanup. +# +DROP TABLE m1, t1; +# +# Same with temporary tables. +# +# Base table is missing. +# +CREATE TEMPORARY TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1); +# +# This statement crashed the server (Bug#46339). +# +REPAIR TABLE m1 USE_FRM; +# +# Create base table. +# +CREATE TEMPORARY TABLE t1 (f1 BIGINT) ENGINE=MyISAM; +# +# This statement crashed the server (Bug#46339). +# +REPAIR TABLE m1 USE_FRM; +# +# Normal repair as reference. +# +REPAIR TABLE m1; +# +# Cleanup. +# +DROP TABLE m1, t1; + --echo End of 5.1 tests --echo # @@ -2668,6 +2746,36 @@ drop temporary table tmp; drop table t1, t2, t3, m1, m2; +--echo # +--echo # Bug#56494 Segfault in upgrade_shared_lock_to_exclusive() for +--echo # REPAIR of merge table +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1, t2, t_not_exists; +--enable_warnings + +CREATE TABLE t1(a INT); +ALTER TABLE t1 engine= MERGE UNION (t_not_exists); +# This caused the segfault +ANALYZE TABLE t1; +CHECK TABLE t1; +CHECKSUM TABLE t1; +OPTIMIZE TABLE t1; +REPAIR TABLE t1; + +# This caused an assert +REPAIR TABLE t1 USE_FRM; + +DROP TABLE t1; +CREATE TABLE t1(a INT); +CREATE TABLE t2(a INT) engine= MERGE UNION (t1); +# This caused an assert +REPAIR TABLE t2 USE_FRM; + +DROP TABLE t1, t2; + + --echo End of 6.0 tests --disable_result_log === modified file 'sql/sql_admin.cc' --- a/sql/sql_admin.cc 2010-08-18 11:29:04 +0000 +++ b/sql/sql_admin.cc 2010-09-21 09:45:56 +0000 @@ -112,7 +112,8 @@ static int prepare_for_repair(THD *thd, } /* A MERGE table must not come here. */ - DBUG_ASSERT(table->file->ht->db_type != DB_TYPE_MRG_MYISAM); + if (table->file->ht->db_type == DB_TYPE_MRG_MYISAM) + goto end; /* REPAIR TABLE ... USE_FRM for temporary tables makes little sense. @@ -231,6 +232,26 @@ end: } +/** + Check if a given error is something that could occur during + open_and_lock_tables() that does not indicate table corruption. + + @param sql_errno Error number to check. + + @retval TRUE Error does not indicate table corruption. + @retval FALSE Error could indicate table corruption. +*/ + +static inline bool table_not_corrupt_error(uint sql_errno) +{ + return (sql_errno == ER_NO_SUCH_TABLE || + sql_errno == ER_FILE_NOT_FOUND || + sql_errno == ER_LOCK_WAIT_TIMEOUT || + sql_errno == ER_LOCK_DEADLOCK || + sql_errno == ER_CANT_LOCK_LOG_TABLE || + sql_errno == ER_OPEN_AS_READONLY); +} + /* RETURN VALUES @@ -311,7 +332,13 @@ static bool mysql_admin_table(THD* thd, lex->query_tables= table; lex->query_tables_last= &table->next_global; lex->query_tables_own_last= 0; - thd->no_warnings_for_error= no_warnings_for_error; + /* + Under locked tables, we know that the table can be opened, + so any errors opening the table are logical errors. + In these cases it makes sense to report them. + */ + if (!thd->locked_tables_mode) + thd->no_warnings_for_error= no_warnings_for_error; if (view_operator_func == NULL) table->required_type=FRMTYPE_TABLE; @@ -320,6 +347,14 @@ static bool mysql_admin_table(THD* thd, table->next_global= save_next_global; table->next_local= save_next_local; thd->open_options&= ~extra_open_options; + + /* + If open_and_lock_tables() failed, close_thread_tables() will close + the table and table->table can therefore be invalid. + */ + if (open_error) + table->table= NULL; + /* Under locked tables, we know that the table can be opened, so any errors opening the table are logical errors. @@ -418,9 +453,7 @@ static bool mysql_admin_table(THD* thd, push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_VIEW_CHECKSUM, ER(ER_VIEW_CHECKSUM)); if (thd->stmt_da->is_error() && - (thd->stmt_da->sql_errno() == ER_NO_SUCH_TABLE || - thd->stmt_da->sql_errno() == ER_FILE_NOT_FOUND)) - /* A missing table is just issued as a failed command */ + table_not_corrupt_error(thd->stmt_da->sql_errno())) result_code= HA_ADMIN_FAILED; else /* Default failure code is corrupt table */ === modified file 'sql/sql_parse.cc' --- a/sql/sql_parse.cc 2010-09-03 07:42:51 +0000 +++ b/sql/sql_parse.cc 2010-09-21 09:45:56 +0000 @@ -401,6 +401,7 @@ void init_update_queries(void) sql_command_flags[SQLCOM_REPAIR]= CF_WRITE_LOGS_COMMAND | CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_OPTIMIZE]|= CF_WRITE_LOGS_COMMAND | CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_ANALYZE]= CF_WRITE_LOGS_COMMAND | CF_AUTO_COMMIT_TRANS; + sql_command_flags[SQLCOM_CHECK]= CF_WRITE_LOGS_COMMAND | CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_CREATE_USER]|= CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_DROP_USER]|= CF_AUTO_COMMIT_TRANS; @@ -414,7 +415,6 @@ void init_update_queries(void) sql_command_flags[SQLCOM_FLUSH]= CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_RESET]= CF_AUTO_COMMIT_TRANS; - sql_command_flags[SQLCOM_CHECK]= CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_CREATE_SERVER]= CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_ALTER_SERVER]= CF_AUTO_COMMIT_TRANS; sql_command_flags[SQLCOM_DROP_SERVER]= CF_AUTO_COMMIT_TRANS; --===============1175659398748673461== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-5.5-runtime-bug56494/ # testament_sha1: 671b625423eac25f08774417cb174be04b5bbe38 # timestamp: 2010-09-21 11:45:59 +0200 # source_branch: file:///export/home/x/mysql-5.5-bugfixing/ # base_revision_id: jon.hauglid@stripped\ # tg3u8bsp1v9p7r7g # # Begin bundle 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 --===============1175659398748673461==--