From: Jon Olav Hauglid Date: September 22 2010 8:16am Subject: bzr push into mysql-5.5-runtime branch (jon.hauglid:3140 to 3141) Bug#56422 Bug#56494 List-Archive: http://lists.mysql.com/commits/118780 X-Bug: 56422,56494 Message-Id: <201009220816.o8M4ZQgs013721@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8635300853496518504==" --===============8635300853496518504== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3141 Jon Olav Hauglid 2010-09-22 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 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. The patch also enables the CHECK TABLE statement for log tables. Before, CHECK TABLE for log tables gave ER_CANT_LOCK_LOG_TABLE, yet still counted the statement as successfully executed. With the changes to table maintenance statement error handling in this patch, CHECK TABLE would no longer be considered as successful in this case. This would have caused upgrade scripts to mistakenly think that the general and slow logs are corrupted and have to be repaired. Enabling CHECK TABLES for log tables prevents this from happening. 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 3140 Jon Olav Hauglid 2010-09-16 [merge] Merge from mysql-5.5-bugfixing to mysql-5.5-runtime. added: mysql-test/suite/perfschema/r/checksum.result mysql-test/suite/perfschema/t/checksum.test modified: dbug/dbug.c include/mysql/service_my_snprintf.h mysql-test/suite/perfschema/include/upgrade_check.inc mysql-test/valgrind.supp sql/mysqld.cc storage/perfschema/ha_perfschema.cc storage/perfschema/table_events_waits.cc storage/perfschema/table_events_waits.h strings/my_vsnprintf.c unittest/mysys/my_vsnprintf-t.c === 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-22 08:15:41 +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-22 08:15:41 +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-22 08:15:41 +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 +m1 repair error Cannot repair temporary table from .frm file +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-22 08:15:41 +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-22 08:15:41 +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-22 08:15:41 +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-22 08:15:41 +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-22 08:15:41 +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-22 08:15:41 +0000 @@ -111,9 +111,6 @@ static int prepare_for_repair(THD *thd, table= &tmp_table; } - /* A MERGE table must not come here. */ - DBUG_ASSERT(table->file->ht->db_type != DB_TYPE_MRG_MYISAM); - /* REPAIR TABLE ... USE_FRM for temporary tables makes little sense. */ @@ -151,6 +148,9 @@ static int prepare_for_repair(THD *thd, if (!ext[0] || !ext[1]) goto end; // No data file + /* A MERGE table must not come here. */ + DBUG_ASSERT(table->file->ht->db_type != DB_TYPE_MRG_MYISAM); + // Name of data file strxmov(from, table->s->normalized_path.str, ext[1], NullS); if (!mysql_file_stat(key_file_misc, from, &stat_info, MYF(0))) @@ -231,6 +231,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 +331,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 +346,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 +452,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-22 08:15:41 +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; --===============8635300853496518504== 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: cda4dae10fa139f3969920706e79415ee5b40327 # timestamp: 2010-09-22 10:16:14 +0200 # source_branch: file:///export/home/x/mysql-5.5-bugfixing/ # base_revision_id: jon.hauglid@stripped\ # tg3u8bsp1v9p7r7g # # Begin bundle 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 --===============8635300853496518504==--