From: Jon Olav Hauglid Date: October 12 2010 1:34pm Subject: bzr push into mysql-5.5-runtime branch (jon.hauglid:3160 to 3161) List-Archive: http://lists.mysql.com/commits/120551 Message-Id: <201010121335.o9CCG92E025031@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6507248365386961145==" --===============6507248365386961145== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3161 Jon Olav Hauglid 2010-10-12 [merge] Merge from mysql-5.5-bugteam to mysql-5.5-runtime No conflicts removed: mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt modified: cmake/install_layout.cmake mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test mysql-test/mysql-test-run.pl mysql-test/suite/parts/r/partition_alter3_innodb.result mysql-test/suite/parts/r/partition_basic_innodb.result mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result mysql-test/t/disabled.def sql-common/client.c sql/log_event.cc sql/repl_failsafe.cc sql/repl_failsafe.h sql/slave.cc sql/sp_head.cc sql/sql_acl.cc sql/sql_cache.cc storage/innobase/handler/ha_innodb.cc storage/innobase/row/row0sel.c 3160 Dmitry Lenev 2010-10-08 [merge] Merged recent changes from mysql-5.5-bugteam into mysql-5.5-runtime tree. added: mysql-test/r/plugin_load_option.result mysql-test/t/plugin_load_option-master.opt mysql-test/t/plugin_load_option.test modified: client/mysqlcheck.c cmake/build_configurations/mysql_release.cmake mysql-test/r/func_math.result mysql-test/r/mysqlcheck.result mysql-test/r/query_cache_debug.result mysql-test/r/type_datetime.result mysql-test/suite/funcs_1/r/is_columns_is.result mysql-test/suite/rpl/r/rpl_heartbeat.result mysql-test/suite/rpl/r/rpl_heartbeat_basic.result mysql-test/t/func_math.test mysql-test/t/mysqlcheck.test mysql-test/t/query_cache_debug.test mysql-test/t/type_datetime.test plugin/auth/dialog.c sql/item.cc sql/item_strfunc.cc sql/mysqld.cc sql/scheduler.h sql/share/errmsg-utf8.txt sql/sql_cache.cc sql/sql_plugin.cc sql/sql_plugin.h sql/sql_show.cc sql/sql_yacc.yy sql/sys_vars.cc sql/sys_vars.h storage/innobase/include/ibuf0ibuf.h storage/innobase/include/row0row.h strings/my_vsnprintf.c === modified file 'cmake/install_layout.cmake' --- a/cmake/install_layout.cmake 2010-07-03 23:17:03 +0000 +++ b/cmake/install_layout.cmake 2010-10-11 17:44:35 +0000 @@ -59,13 +59,16 @@ # - INSTALL_SUPPORTFILESDIR (various extra support files) # # - INSTALL_MYSQLDATADIR (data directory) +# +# When changing this page, _please_ do not forget to update public Wiki +# http://forge.mysql.com/wiki/CMake#Fine-tuning_installation_paths IF(NOT INSTALL_LAYOUT) SET(DEFAULT_INSTALL_LAYOUT "STANDALONE") ENDIF() SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" -CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer) or UNIX") +CACHE STRING "Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer), RPM, DEB, SVR4") IF(UNIX) IF(INSTALL_LAYOUT MATCHES "RPM") @@ -83,6 +86,13 @@ IF(UNIX) SET(CMAKE_INSTALL_PREFIX ${default_prefix} CACHE PATH "install prefix" FORCE) ENDIF() + SET(VALID_INSTALL_LAYOUTS "RPM" "STANDALONE" "DEB" "SVR5") + LIST(FIND VALID_INSTALL_LAYOUTS "${INSTALL_LAYOUT}" ind) + IF(ind EQUAL -1) + MESSAGE(FATAL_ERROR "Invalid INSTALL_LAYOUT parameter:${INSTALL_LAYOUT}." + " Choose between ${VALID_INSTALL_LAYOUTS}" ) + ENDIF() + SET(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" CACHE PATH "config directory (for my.cnf)") MARK_AS_ADVANCED(SYSCONFDIR) === modified file 'mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test' --- a/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test 2010-06-30 15:25:13 +0000 +++ b/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test 2010-10-09 10:18:16 +0000 @@ -21,9 +21,18 @@ # and slave are diverging. # ######################################################################################## - call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +let $old_max_binlog_cache_size= query_get_value(SHOW VARIABLES LIKE "max_binlog_cache_size", Value, 1); +let $old_binlog_cache_size= query_get_value(SHOW VARIABLES LIKE "binlog_cache_size", Value, 1); + +SET GLOBAL max_binlog_cache_size = 4096; +# Becuase of bug#55377, we have to set binlog_cache_size until the bug is +# fixed. +SET GLOBAL binlog_cache_size = 4096; +disconnect master; +connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,); + CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam; CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; @@ -50,13 +59,9 @@ eval INSERT INTO t2 (a, data) VALUES (2, CONCAT($data, $data, $data, $data, $data, $data)); --enable_query_log -connection slave; ---source include/wait_for_slave_sql_to_stop.inc -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; ---source include/wait_for_slave_sql_to_start.inc - -connection master; +# Incident event +--let $slave_sql_errno=1590 +--source include/wait_for_slave_sql_error_and_skip.inc --disable_query_log eval INSERT INTO t1 (a, data) VALUES (3, $data); @@ -74,23 +79,15 @@ eval UPDATE t2, t1 SET t2.data = CONCAT( t1.data = CONCAT($data, $data, $data, $data); --enable_query_log -connection slave; ---source include/wait_for_slave_sql_to_stop.inc - -if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`) -{ - SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -} +# Incident event +--let $slave_skip_counter=1 if (`SELECT @@binlog_format = 'ROW'`) { - SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2; + --inc $slave_skip_counter } -START SLAVE SQL_THREAD; ---source include/wait_for_slave_sql_to_start.inc -connection master; - -let $diff_statement= SELECT * FROM t1; ---source include/diff_master_slave.inc +--let $slave_sql_errno=1590 +--source include/wait_for_slave_sql_error_and_skip.inc +--let $slave_skip_counter= --echo ######################################################################################## --echo # 2 - BEGIN - IMPLICIT COMMIT by DDL @@ -178,17 +175,6 @@ BEGIN; CREATE TABLE t5 (a int); --enable_query_log -if (`SELECT @@binlog_format = 'ROW'`) -{ - connection slave; - --source include/wait_for_slave_sql_to_stop.inc - - SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; - START SLAVE SQL_THREAD; - --source include/wait_for_slave_sql_to_start.inc - connection master; -} - let $diff_statement= SELECT * FROM t1; --source include/diff_master_slave.inc @@ -373,6 +359,70 @@ COMMIT; let $diff_statement= SELECT * FROM t1; --source include/diff_master_slave.inc +--echo ######################################################################## +--echo # 8 - Bug#55375(Regression Bug) Transaction bigger than +--echo # max_binlog_cache_size crashes slave +--echo ######################################################################## + +--echo # [ On Slave ] +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; + +source include/stop_slave.inc; +source include/start_slave.inc; +CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*"); +CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*"); + +connection master; +TRUNCATE t1; + +sync_slave_with_master; +--let binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1) +--let binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) + +connection master; +--replace_result $old_max_binlog_cache_size ORIGINAL_VALUE +--eval SET GLOBAL max_binlog_cache_size= $old_max_binlog_cache_size +--replace_result $old_binlog_cache_size ORIGINAL_VALUE +--eval SET GLOBAL binlog_cache_size= $old_binlog_cache_size +disconnect master; +connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,); + +--let $n=128 +BEGIN; +--disable_query_log +--echo Repeat statement 'INSERT INTO t1 VALUES(\$n, repeat("a", 32))' $n times +while ($n) +{ + --eval INSERT INTO t1 VALUES ($n, repeat("a", 32)) + --dec $n +} +--enable_query_log +COMMIT; + +connection slave; +--let $slave_sql_errno= 1197 +if (`SELECT @@binlog_format = 'ROW'`) +{ + --let $slave_sql_errno= 1534 +} +source include/wait_for_slave_sql_error.inc; + +SELECT count(*) FROM t1; +source include/show_binlog_events.inc; + +--replace_result $old_max_binlog_cache_size ORIGINAL_VALUE +--eval SET GLOBAL max_binlog_cache_size= $old_max_binlog_cache_size +--replace_result $old_binlog_cache_size ORIGINAL_VALUE +--eval SET GLOBAL binlog_cache_size= $old_binlog_cache_size + +source include/stop_slave.inc; +source include/start_slave.inc; + +connection master; +sync_slave_with_master; +SELECT count(*) FROM t1; + --echo ######################################################################################## --echo # CLEAN --echo ######################################################################################## @@ -385,4 +435,4 @@ DROP TABLE IF EXISTS t4; DROP TABLE IF EXISTS t5; DROP TABLE IF EXISTS t6; DROP PROCEDURE p1; -sync_slave_with_master; +source include/master-slave-end.inc; === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-10-05 11:33:54 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-10-12 10:07:49 +0000 @@ -162,7 +162,7 @@ our $opt_vs_config = $ENV{'MTR_VS_CONFIG # If you add a new suite, please check TEST_DIRS in Makefile.am. # -my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,rpl_ndb,ndb,innodb,perfschema"; +my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,innodb,perfschema"; my $opt_suites; our $opt_verbose= 0; # Verbose output, enable with --verbose === modified file 'mysql-test/suite/parts/r/partition_alter3_innodb.result' --- a/mysql-test/suite/parts/r/partition_alter3_innodb.result 2010-09-13 13:56:56 +0000 +++ b/mysql-test/suite/parts/r/partition_alter3_innodb.result 2010-10-08 09:34:08 +0000 @@ -57,7 +57,6 @@ t1 CREATE TABLE `t1` ( `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 t1.frm -t1.ibd EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 20 Using where @@ -79,7 +78,6 @@ t1 CREATE TABLE `t1` ( `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) */ -t1#P#p0.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -98,7 +96,6 @@ t1 CREATE TABLE `t1` ( `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (DAYOFYEAR(f_date)) */ -t1#P#p0.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -115,7 +112,6 @@ t1 CREATE TABLE `t1` ( `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) */ -t1#P#p0.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -141,9 +137,6 @@ t1 CREATE TABLE `t1` ( (PARTITION p0 ENGINE = InnoDB, PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -168,10 +161,6 @@ t1 CREATE TABLE `t1` ( PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB, PARTITION part2 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -197,14 +186,6 @@ t1 CREATE TABLE `t1` ( PARTITION p5 ENGINE = InnoDB, PARTITION p6 ENGINE = InnoDB, PARTITION p7 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#p5.ibd -t1#P#p6.ibd -t1#P#p7.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -241,13 +222,6 @@ t1 CREATE TABLE `t1` ( PARTITION p4 ENGINE = InnoDB, PARTITION p5 ENGINE = InnoDB, PARTITION p6 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#p5.ibd -t1#P#p6.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -270,12 +244,6 @@ t1 CREATE TABLE `t1` ( PARTITION part2 ENGINE = InnoDB, PARTITION p4 ENGINE = InnoDB, PARTITION p5 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#p5.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -297,11 +265,6 @@ t1 CREATE TABLE `t1` ( PARTITION part7 ENGINE = InnoDB, PARTITION part2 ENGINE = InnoDB, PARTITION p4 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -322,10 +285,6 @@ t1 CREATE TABLE `t1` ( PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB, PARTITION part2 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -345,9 +304,6 @@ t1 CREATE TABLE `t1` ( (PARTITION p0 ENGINE = InnoDB, PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -366,8 +322,6 @@ t1 CREATE TABLE `t1` ( /*!50100 PARTITION BY HASH (YEAR(f_date)) (PARTITION p0 ENGINE = InnoDB, PARTITION part1 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -385,7 +339,6 @@ t1 CREATE TABLE `t1` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) (PARTITION p0 ENGINE = InnoDB) */ -t1#P#p0.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; @@ -406,7 +359,6 @@ t1 CREATE TABLE `t1` ( `f_varchar` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 t1.frm -t1.ibd EXPLAIN PARTITIONS SELECT COUNT(*) FROM t1 WHERE f_date = '1000-02-10'; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 20 Using where @@ -446,7 +398,6 @@ t1 CREATE TABLE `t1` ( `f_charbig` varchar(1000) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 t1.frm -t1.ibd EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 20 Using where @@ -469,7 +420,6 @@ t1 CREATE TABLE `t1` ( `f_charbig` varchar(1000) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) */ -t1#P#p0.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -498,9 +448,6 @@ t1 CREATE TABLE `t1` ( (PARTITION p0 ENGINE = InnoDB, PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -525,10 +472,6 @@ t1 CREATE TABLE `t1` ( PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB, PARTITION part2 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -557,14 +500,6 @@ t1 CREATE TABLE `t1` ( PARTITION p5 ENGINE = InnoDB, PARTITION p6 ENGINE = InnoDB, PARTITION p7 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#p5.ibd -t1#P#p6.ibd -t1#P#p7.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -599,13 +534,6 @@ t1 CREATE TABLE `t1` ( PARTITION p4 ENGINE = InnoDB, PARTITION p5 ENGINE = InnoDB, PARTITION p6 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#p5.ibd -t1#P#p6.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -631,12 +559,6 @@ t1 CREATE TABLE `t1` ( PARTITION part2 ENGINE = InnoDB, PARTITION p4 ENGINE = InnoDB, PARTITION p5 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#p5.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -661,11 +583,6 @@ t1 CREATE TABLE `t1` ( PARTITION part7 ENGINE = InnoDB, PARTITION part2 ENGINE = InnoDB, PARTITION p4 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#p4.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -689,10 +606,6 @@ t1 CREATE TABLE `t1` ( PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB, PARTITION part2 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -715,9 +628,6 @@ t1 CREATE TABLE `t1` ( (PARTITION p0 ENGINE = InnoDB, PARTITION part1 ENGINE = InnoDB, PARTITION part7 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd -t1#P#part7.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -739,8 +649,6 @@ t1 CREATE TABLE `t1` ( /*!50100 PARTITION BY KEY (f_int1) (PARTITION p0 ENGINE = InnoDB, PARTITION part1 ENGINE = InnoDB) */ -t1#P#p0.ibd -t1#P#part1.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -761,7 +669,6 @@ t1 CREATE TABLE `t1` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION p0 ENGINE = InnoDB) */ -t1#P#p0.ibd t1.frm t1.par EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; @@ -785,7 +692,6 @@ t1 CREATE TABLE `t1` ( `f_charbig` varchar(1000) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 t1.frm -t1.ibd EXPLAIN PARTITIONS SELECT COUNT(*) <> 1 FROM t1 WHERE f_int1 = 3; id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 20 Using where === modified file 'mysql-test/suite/parts/r/partition_basic_innodb.result' --- a/mysql-test/suite/parts/r/partition_basic_innodb.result 2010-06-17 20:51:35 +0000 +++ b/mysql-test/suite/parts/r/partition_basic_innodb.result 2010-10-08 09:34:08 +0000 @@ -77,8 +77,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -534,11 +532,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -1009,14 +1002,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -1483,12 +1468,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -1951,14 +1930,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -2434,14 +2405,6 @@ SUBPARTITION BY KEY (f_int1) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -2919,14 +2882,6 @@ SUBPARTITION BY HASH (f_int1 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -3390,15 +3345,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -3856,8 +3802,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -4313,11 +4257,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -4788,14 +4727,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -5262,12 +5193,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -5730,14 +5655,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -6211,14 +6128,6 @@ SUBPARTITION BY KEY (f_int2) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -6692,14 +6601,6 @@ SUBPARTITION BY HASH (f_int2 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -7163,15 +7064,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -7635,8 +7527,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -8129,11 +8019,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -8641,14 +8526,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -9152,12 +9029,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -9657,14 +9528,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -10177,14 +10040,6 @@ SUBPARTITION BY KEY (f_int1) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -10699,14 +10554,6 @@ SUBPARTITION BY HASH (f_int1 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -11207,15 +11054,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -11709,8 +11547,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -12203,11 +12039,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -12715,14 +12546,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -13226,12 +13049,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -13731,14 +13548,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -14251,14 +14060,6 @@ SUBPARTITION BY KEY (f_int1) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -14773,14 +14574,6 @@ SUBPARTITION BY HASH (f_int1 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -15281,15 +15074,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -15783,8 +15567,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -16293,11 +16075,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -16821,14 +16598,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -17348,12 +17117,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -17869,14 +17632,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -18405,14 +18160,6 @@ SUBPARTITION BY KEY (f_int1) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -18943,14 +18690,6 @@ SUBPARTITION BY HASH (f_int1 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -19467,15 +19206,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -19990,8 +19720,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -20484,11 +20212,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -20996,14 +20719,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -21507,12 +21222,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -22012,14 +21721,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -22530,14 +22231,6 @@ SUBPARTITION BY KEY (f_int2) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -23048,14 +22741,6 @@ SUBPARTITION BY HASH (f_int2 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -23556,15 +23241,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -24058,8 +23734,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -24552,11 +24226,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -25064,14 +24733,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -25575,12 +25236,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -26080,14 +25735,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -26598,14 +26245,6 @@ SUBPARTITION BY KEY (f_int2) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -27116,14 +26755,6 @@ SUBPARTITION BY HASH (f_int2 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -27624,15 +27255,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par @@ -28126,8 +27748,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 2 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd t1.frm t1.par @@ -28636,11 +28256,6 @@ t1 CREATE TABLE `t1` ( PARTITIONS 5 */ unified filelist -t1#P#p0.ibd -t1#P#p1.ibd -t1#P#p2.ibd -t1#P#p3.ibd -t1#P#p4.ibd t1.frm t1.par @@ -29164,14 +28779,6 @@ t1 CREATE TABLE `t1` ( PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ unified filelist -t1#P#part0.ibd -t1#P#part1.ibd -t1#P#part2.ibd -t1#P#part3.ibd -t1#P#part_1.ibd -t1#P#part_2.ibd -t1#P#part_3.ibd -t1#P#part_N.ibd t1.frm t1.par @@ -29691,12 +29298,6 @@ t1 CREATE TABLE `t1` ( PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta.ibd -t1#P#partb.ibd -t1#P#partc.ibd -t1#P#partd.ibd -t1#P#parte.ibd -t1#P#partf.ibd t1.frm t1.par @@ -30212,14 +29813,6 @@ SUBPARTITIONS 2 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ unified filelist -t1#P#parta#SP#partasp0.ibd -t1#P#parta#SP#partasp1.ibd -t1#P#partb#SP#partbsp0.ibd -t1#P#partb#SP#partbsp1.ibd -t1#P#partc#SP#partcsp0.ibd -t1#P#partc#SP#partcsp1.ibd -t1#P#partd#SP#partdsp0.ibd -t1#P#partd#SP#partdsp1.ibd t1.frm t1.par @@ -30746,14 +30339,6 @@ SUBPARTITION BY KEY (f_int2) SUBPARTITION subpart42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#subpart11.ibd -t1#P#part1#SP#subpart12.ibd -t1#P#part2#SP#subpart21.ibd -t1#P#part2#SP#subpart22.ibd -t1#P#part3#SP#subpart31.ibd -t1#P#part3#SP#subpart32.ibd -t1#P#part4#SP#subpart41.ibd -t1#P#part4#SP#subpart42.ibd t1.frm t1.par @@ -31280,14 +30865,6 @@ SUBPARTITION BY HASH (f_int2 + 1) SUBPARTITION sp42 ENGINE = InnoDB)) */ unified filelist -t1#P#part1#SP#sp11.ibd -t1#P#part1#SP#sp12.ibd -t1#P#part2#SP#sp21.ibd -t1#P#part2#SP#sp22.ibd -t1#P#part3#SP#sp31.ibd -t1#P#part3#SP#sp32.ibd -t1#P#part4#SP#sp41.ibd -t1#P#part4#SP#sp42.ibd t1.frm t1.par @@ -31804,15 +31381,6 @@ SUBPARTITIONS 3 PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */ unified filelist -t1#P#part1#SP#part1sp0.ibd -t1#P#part1#SP#part1sp1.ibd -t1#P#part1#SP#part1sp2.ibd -t1#P#part2#SP#part2sp0.ibd -t1#P#part2#SP#part2sp1.ibd -t1#P#part2#SP#part2sp2.ibd -t1#P#part3#SP#part3sp0.ibd -t1#P#part3#SP#part3sp1.ibd -t1#P#part3#SP#part3sp2.ibd t1.frm t1.par === modified file 'mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result' --- a/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result 2010-06-30 15:25:13 +0000 +++ b/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result 2010-10-11 02:49:00 +0000 @@ -5,6 +5,8 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam; CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; @@ -15,13 +17,14 @@ CREATE TABLE t3(a INT PRIMARY KEY, data Got one of the listed errors *** Single statement on non-transactional table *** Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; +--source include/wait_for_slave_sql_error_and_skip.inc +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; +include/start_slave.inc *** Single statement on both transactional and non-transactional tables. *** Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; -source include/diff_master_slave.inc; +--source include/wait_for_slave_sql_error_and_skip.inc +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1; +include/start_slave.inc ######################################################################################## # 2 - BEGIN - IMPLICIT COMMIT by DDL ######################################################################################## @@ -119,6 +122,35 @@ BEGIN; Got one of the listed errors COMMIT; source include/diff_master_slave.inc; +######################################################################## +# 8 - Bug#55375(Regression Bug) Transaction bigger than +# max_binlog_cache_size crashes slave +######################################################################## +# [ On Slave ] +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; +include/stop_slave.inc +include/start_slave.inc +CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*"); +CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*"); +TRUNCATE t1; +SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; +SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; +BEGIN; +Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times +COMMIT; +SELECT count(*) FROM t1; +count(*) +0 +show binlog events in 'slave-bin.000001' from ; +Log_name Pos Event_type Server_id End_log_pos Info +SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; +SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; +include/stop_slave.inc +include/start_slave.inc +SELECT count(*) FROM t1; +count(*) +128 ######################################################################################## # CLEAN ######################################################################################## === modified file 'mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result' --- a/mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result 2010-04-28 12:47:49 +0000 +++ b/mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result 2010-10-09 10:18:16 +0000 @@ -5,6 +5,8 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam; CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; @@ -15,13 +17,14 @@ CREATE TABLE t3(a INT PRIMARY KEY, data Got one of the listed errors *** Single statement on non-transactional table *** Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; +--source include/wait_for_slave_sql_error_and_skip.inc +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; +include/start_slave.inc *** Single statement on both transactional and non-transactional tables. *** Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2; -START SLAVE SQL_THREAD; -source include/diff_master_slave.inc; +--source include/wait_for_slave_sql_error_and_skip.inc +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc ######################################################################################## # 2 - BEGIN - IMPLICIT COMMIT by DDL ######################################################################################## @@ -39,8 +42,6 @@ Got one of the listed errors BEGIN; Got one of the listed errors Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; source include/diff_master_slave.inc; ######################################################################################## # 3 - BEGIN - COMMIT @@ -122,6 +123,35 @@ BEGIN; Got one of the listed errors COMMIT; source include/diff_master_slave.inc; +######################################################################## +# 8 - Bug#55375(Regression Bug) Transaction bigger than +# max_binlog_cache_size crashes slave +######################################################################## +# [ On Slave ] +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; +include/stop_slave.inc +include/start_slave.inc +CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*"); +CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*"); +TRUNCATE t1; +SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; +SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; +BEGIN; +Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times +COMMIT; +SELECT count(*) FROM t1; +count(*) +0 +show binlog events in 'slave-bin.000001' from ; +Log_name Pos Event_type Server_id End_log_pos Info +SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; +SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; +include/stop_slave.inc +include/start_slave.inc +SELECT count(*) FROM t1; +count(*) +128 ######################################################################################## # CLEAN ######################################################################################## === modified file 'mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result' --- a/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result 2010-06-30 15:25:13 +0000 +++ b/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result 2010-10-09 10:18:16 +0000 @@ -5,6 +5,8 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam; CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; @@ -15,13 +17,14 @@ CREATE TABLE t3(a INT PRIMARY KEY, data Got one of the listed errors *** Single statement on non-transactional table *** Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; +--source include/wait_for_slave_sql_error_and_skip.inc +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; +include/start_slave.inc *** Single statement on both transactional and non-transactional tables. *** Got one of the listed errors -SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; -START SLAVE SQL_THREAD; -source include/diff_master_slave.inc; +--source include/wait_for_slave_sql_error_and_skip.inc +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1; +include/start_slave.inc ######################################################################################## # 2 - BEGIN - IMPLICIT COMMIT by DDL ######################################################################################## @@ -119,6 +122,35 @@ BEGIN; Got one of the listed errors COMMIT; source include/diff_master_slave.inc; +######################################################################## +# 8 - Bug#55375(Regression Bug) Transaction bigger than +# max_binlog_cache_size crashes slave +######################################################################## +# [ On Slave ] +SET GLOBAL max_binlog_cache_size = 4096; +SET GLOBAL binlog_cache_size = 4096; +include/stop_slave.inc +include/start_slave.inc +CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*"); +CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*"); +TRUNCATE t1; +SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; +SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; +BEGIN; +Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times +COMMIT; +SELECT count(*) FROM t1; +count(*) +0 +show binlog events in 'slave-bin.000001' from ; +Log_name Pos Event_type Server_id End_log_pos Info +SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; +SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; +include/stop_slave.inc +include/start_slave.inc +SELECT count(*) FROM t1; +count(*) +128 ######################################################################################## # CLEAN ######################################################################################## === removed file 'mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt' --- a/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt 2009-11-03 19:02:56 +0000 +++ b/mysql-test/suite/rpl/t/rpl_mixed_binlog_max_cache_size-master.opt 1970-01-01 00:00:00 +0000 @@ -1 +0,0 @@ ---binlog_cache_size=4096 --max_binlog_cache_size=7680 === removed file 'mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt' --- a/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt 2010-06-17 20:51:35 +0000 +++ b/mysql-test/suite/rpl/t/rpl_row_binlog_max_cache_size-master.opt 1970-01-01 00:00:00 +0000 @@ -1 +0,0 @@ ---binlog_cache_size=4096 --max_binlog_cache_size=7680 --default-storage-engine=MyISAM === removed file 'mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt' --- a/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt 2009-11-03 19:02:56 +0000 +++ b/mysql-test/suite/rpl/t/rpl_stm_binlog_max_cache_size-master.opt 1970-01-01 00:00:00 +0000 @@ -1 +0,0 @@ ---binlog_cache_size=4096 --max_binlog_cache_size=7680 === modified file 'mysql-test/t/disabled.def' --- a/mysql-test/t/disabled.def 2010-09-06 12:45:12 +0000 +++ b/mysql-test/t/disabled.def 2010-10-11 12:56:44 +0000 @@ -13,7 +13,6 @@ kill : Bug#37780 200 lowercase_table3 : Bug#54845 2010-06-30 alik main.lowercase_table3 on Mac OSX mysqlhotcopy_myisam : Bug#54129 2010-08-31 alik mysqlhotcopy* fails mysqlhotcopy_archive : Bug#54129 2010-08-31 alik mysqlhotcopy* fails -partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically sp_sync : Bug#48157 2010-02-06 5.5-m3 demands a differnt solution ctype_utf8mb4_ndb : Bug#55799, Bug#51907, disabled by Konstantin 2010-08-06 === modified file 'sql-common/client.c' --- a/sql-common/client.c 2010-10-04 12:54:41 +0000 +++ b/sql-common/client.c 2010-10-12 10:07:13 +0000 @@ -2923,7 +2923,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,cons uint port, const char *unix_socket,ulong client_flag) { char buff[NAME_LEN+USERNAME_LENGTH+100]; - int scramble_data_len, pkt_scramble_len; + int scramble_data_len, pkt_scramble_len= 0; char *end,*host_info= 0, *server_version_end, *pkt_end; char *scramble_data; const char *scramble_plugin; === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2010-08-23 22:31:12 +0000 +++ b/sql/log_event.cc 2010-10-09 10:18:16 +0000 @@ -158,16 +158,21 @@ static void inline slave_rows_error_repo " %s, Error_code: %d;", err->get_message_text(), err->get_sql_errno()); } - - rli->report(level, thd->is_error()? thd->stmt_da->sql_errno() : 0, - "Could not execute %s event on table %s.%s;" - "%s handler error %s; " - "the event's master log %s, end_log_pos %lu", - type, table->s->db.str, - table->s->table_name.str, - buff, - handler_error == NULL? "" : handler_error, - log_name, pos); + + if (ha_error != 0) + rli->report(level, thd->is_error() ? thd->stmt_da->sql_errno() : 0, + "Could not execute %s event on table %s.%s;" + "%s handler error %s; " + "the event's master log %s, end_log_pos %lu", + type, table->s->db.str, table->s->table_name.str, + buff, handler_error == NULL ? "" : handler_error, + log_name, pos); + else + rli->report(level, thd->is_error() ? thd->stmt_da->sql_errno() : 0, + "Could not execute %s event on table %s.%s;" + "%s the event's master log %s, end_log_pos %lu", + type, table->s->db.str, table->s->table_name.str, + buff, log_name, pos); } #endif @@ -7811,19 +7816,16 @@ int Rows_log_event::do_apply_event(Relay /Sven */ thd->reset_current_stmt_binlog_format_row(); - const_cast(rli)->cleanup_context(thd, error); thd->is_slave_error= 1; DBUG_RETURN(error); } - if (get_flags(STMT_END_F)) - if ((error= rows_event_stmt_cleanup(rli, thd))) - rli->report(ERROR_LEVEL, error, - "Error in %s event: commit of row events failed, " - "table `%s`.`%s`", - get_type_str(), m_table->s->db.str, - m_table->s->table_name.str); - + if (get_flags(STMT_END_F) && (error= rows_event_stmt_cleanup(rli, thd))) + slave_rows_error_report(ERROR_LEVEL, + thd->is_error() ? 0 : error, + rli, thd, table, + get_type_str(), + RPL_LOG_NAME, (ulong) log_pos); DBUG_RETURN(error); } === modified file 'sql/repl_failsafe.cc' --- a/sql/repl_failsafe.cc 2010-07-23 20:13:36 +0000 +++ b/sql/repl_failsafe.cc 2010-10-11 14:50:14 +0000 @@ -41,7 +41,7 @@ #define SLAVE_ERRMSG_SIZE (FN_REFLEN+64) -RPL_STATUS rpl_status=RPL_NULL; +ulong rpl_status=RPL_NULL; mysql_mutex_t LOCK_rpl_status; mysql_cond_t COND_rpl_status; HASH slave_list; @@ -68,7 +68,7 @@ static Slave_log_event* find_slave_event functions like register_slave()) are working. */ -void change_rpl_status(RPL_STATUS from_status, RPL_STATUS to_status) +void change_rpl_status(ulong from_status, ulong to_status) { mysql_mutex_lock(&LOCK_rpl_status); if (rpl_status == from_status || rpl_status == RPL_ANY) === modified file 'sql/repl_failsafe.h' --- a/sql/repl_failsafe.h 2010-07-23 20:13:36 +0000 +++ b/sql/repl_failsafe.h 2010-10-11 14:50:14 +0000 @@ -26,7 +26,7 @@ typedef enum {RPL_AUTH_MASTER=0,RPL_IDLE RPL_LOST_SOLDIER,RPL_TROOP_SOLDIER, RPL_RECOVERY_CAPTAIN,RPL_NULL /* inactive */, RPL_ANY /* wild card used by change_rpl_status */ } RPL_STATUS; -extern RPL_STATUS rpl_status; +extern ulong rpl_status; extern mysql_mutex_t LOCK_rpl_status; extern mysql_cond_t COND_rpl_status; @@ -34,7 +34,7 @@ extern TYPELIB rpl_role_typelib; extern const char* rpl_role_type[], *rpl_status_type[]; pthread_handler_t handle_failsafe_rpl(void *arg); -void change_rpl_status(RPL_STATUS from_status, RPL_STATUS to_status); +void change_rpl_status(ulong from_status, ulong to_status); int find_recovery_captain(THD* thd, MYSQL* mysql); int update_slave_list(MYSQL* mysql, Master_info* mi); === modified file 'sql/slave.cc' --- a/sql/slave.cc 2010-07-29 12:32:11 +0000 +++ b/sql/slave.cc 2010-10-09 10:18:16 +0000 @@ -2534,9 +2534,7 @@ static int exec_relay_log_event(THD* thd else { exec_res= 0; - trans_rollback(thd); - close_thread_tables(thd); - thd->mdl_context.release_transactional_locks(); + rli->cleanup_context(thd, 1); /* chance for concurrent connection to get more locks */ safe_sleep(thd, min(rli->trans_retries, MAX_SLAVE_RETRY_PAUSE), (CHECK_KILLED_FUNC)sql_slave_killed, (void*)rli); @@ -3385,6 +3383,7 @@ the slave SQL thread with \"SLAVE START\ request is detected only by the present function, not by events), so we must "proactively" clear playgrounds: */ + thd->clear_error(); rli->cleanup_context(thd, 1); /* Some extra safety, which should not been needed (normally, event deletion === modified file 'sql/sp_head.cc' --- a/sql/sp_head.cc 2010-10-07 11:57:12 +0000 +++ b/sql/sp_head.cc 2010-10-12 12:19:33 +0000 @@ -1228,12 +1228,13 @@ sp_head::execute(THD *thd) parsing and loading of another stored procedure into the cache (@sa db_load_routine() and Bug#10100). At the time of measuring, a recursive SP invocation required - 3232 bytes of stack on 32 bit Linux and 6016 bytes on 64 bit Mac. + 3232 bytes of stack on 32 bit Linux, 6016 bytes on 64 bit Mac + and 11152 on 64 bit Solaris sparc. The same with db_load_routine() required circa 7k bytes and 14k bytes accordingly. Hence, here we book the stack with some reasonable margin. */ - if (check_stack_overrun(thd, 2 * STACK_MIN_SIZE, (uchar*)&old_packet)) + if (check_stack_overrun(thd, 4 * STACK_MIN_SIZE, (uchar*)&old_packet)) DBUG_RETURN(TRUE); /* init per-instruction memroot */ === modified file 'sql/sql_acl.cc' --- a/sql/sql_acl.cc 2010-10-04 12:42:16 +0000 +++ b/sql/sql_acl.cc 2010-10-12 10:07:13 +0000 @@ -3936,7 +3936,7 @@ bool mysql_grant(THD *thd, const char *d ulong rights, bool revoke_grant, bool is_proxy) { List_iterator str_list (list); - LEX_USER *Str, *tmp_Str, *proxied_user; + LEX_USER *Str, *tmp_Str, *proxied_user= NULL; char tmp_db[NAME_LEN+1]; bool create_new_users=0; TABLE_LIST tables[2]; === modified file 'sql/sql_cache.cc' --- a/sql/sql_cache.cc 2010-10-08 12:16:20 +0000 +++ b/sql/sql_cache.cc 2010-10-12 10:07:13 +0000 @@ -412,7 +412,8 @@ struct Query_cache_wait_state Query_cache_wait_state(THD *thd, const char *func, const char *file, unsigned int line) - : m_thd(thd) + : m_thd(thd), + m_proc_info(NULL) { if (m_thd) m_proc_info= set_thd_proc_info(m_thd, === modified file 'storage/innobase/handler/ha_innodb.cc' --- a/storage/innobase/handler/ha_innodb.cc 2010-10-07 12:12:33 +0000 +++ b/storage/innobase/handler/ha_innodb.cc 2010-10-11 15:22:22 +0000 @@ -9635,7 +9635,11 @@ ha_innobase::innobase_peek_autoinc(void) auto_inc = dict_table_autoinc_read(innodb_table); - ut_a(auto_inc > 0); + if (auto_inc == 0) { + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: AUTOINC next value generation " + "is disabled for '%s'\n", innodb_table->name); + } dict_table_autoinc_unlock(innodb_table); === modified file 'storage/innobase/row/row0sel.c' --- a/storage/innobase/row/row0sel.c 2010-10-07 10:01:51 +0000 +++ b/storage/innobase/row/row0sel.c 2010-10-11 15:22:22 +0000 @@ -3342,6 +3342,7 @@ row_search_for_mysql( mem_heap_t* heap = NULL; ulint offsets_[REC_OFFS_NORMAL_SIZE]; ulint* offsets = offsets_; + ibool table_lock_waited = FALSE; rec_offs_init(offsets_); @@ -3728,13 +3729,15 @@ release_search_latch_if_needed: trx_assign_read_view(trx); prebuilt->sql_stat_start = FALSE; } else { +wait_table_again: err = lock_table(0, index->table, prebuilt->select_lock_type == LOCK_S ? LOCK_IS : LOCK_IX, thr); if (err != DB_SUCCESS) { - goto lock_wait_or_error; + table_lock_waited = TRUE; + goto lock_table_wait; } prebuilt->sql_stat_start = FALSE; } @@ -4545,6 +4548,7 @@ lock_wait_or_error: btr_pcur_store_position(pcur, &mtr); +lock_table_wait: mtr_commit(&mtr); mtr_has_extra_clust_latch = FALSE; @@ -4562,6 +4566,14 @@ lock_wait_or_error: thr->lock_state = QUE_THR_LOCK_NOLOCK; mtr_start(&mtr); + /* Table lock waited, go try to obtain table lock + again */ + if (table_lock_waited) { + table_lock_waited = FALSE; + + goto wait_table_again; + } + sel_restore_position_for_mysql(&same_user_rec, BTR_SEARCH_LEAF, pcur, moves_up, &mtr); --===============6507248365386961145== 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-test/ # testament_sha1: 09e3d15bed7ab96cb9f43f8e0ad87b24816c4a15 # timestamp: 2010-10-12 15:34:27 +0200 # source_branch: file:///export/home/x/mysql-5.5-bugfixing/ # base_revision_id: dmitry.lenev@stripped\ # vi9vybnajse8406w # # Begin bundle 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 XBv4CRQImw8A+XHmH/xdyRThQkPLvmlM --===============6507248365386961145==--