From: Jon Olav Hauglid Date: October 12 2010 1:26pm Subject: bzr commit into mysql-5.5-runtime branch (jon.hauglid:3161) List-Archive: http://lists.mysql.com/commits/120608 Message-Id: <201010121327.o9CD2Puk032720@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1204659216297842173==" --===============1204659216297842173== 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-test/ based on revid:dmitry.lenev@stripped 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 === 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); --===============1204659216297842173== 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:27:01 +0200 # source_branch: file:///export/home/x/mysql-5.5-bugfixing/ # base_revision_id: dmitry.lenev@stripped\ # vi9vybnajse8406w # # Begin bundle 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 u5IpwoSGpkgk8A== --===============1204659216297842173==--