From: Mattias Jonsson Date: October 1 2010 1:25pm Subject: bzr commit into mysql-5.5-bugteam branch (mattias.jonsson:3214) List-Archive: http://lists.mysql.com/commits/119676 Message-Id: <201010011326.o914ET6O007132@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1168060283915007809==" --===============1168060283915007809== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/mattiasj/mysql-bzr/topush-5.5-bugteam/ based on revid:mattias.jonsson@stripped 3214 Mattias Jonsson 2010-10-01 [merge] merge modified: client/mysqltest.cc mysql-test/collections/default.experimental mysql-test/collections/default.weekly mysql-test/suite/parts/inc/partition_check_drop.inc mysql-test/suite/parts/inc/partition_crash.inc mysql-test/suite/parts/inc/partition_fail.inc mysql-test/suite/parts/inc/partition_layout.inc mysql-test/suite/parts/inc/partition_layout_check1.inc mysql-test/suite/parts/inc/partition_layout_check2.inc mysql-test/suite/parts/r/partition_recover_myisam.result mysql-test/suite/parts/r/partition_special_myisam.result mysql-test/suite/parts/t/part_supported_sql_func_innodb.test mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test mysql-test/suite/parts/t/partition_alter1_2_innodb.test mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test mysql-test/suite/parts/t/partition_alter4_innodb.test mysql-test/suite/parts/t/partition_debug_sync_innodb.test mysql-test/suite/parts/t/partition_recover_myisam.test mysql-test/suite/parts/t/partition_special_myisam.test === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-09-28 15:15:58 +0000 +++ b/client/mysqltest.cc 2010-10-01 13:25:13 +0000 @@ -447,7 +447,7 @@ struct st_command char *query, *query_buf,*first_argument,*last_argument,*end; DYNAMIC_STRING content; int first_word_len, query_len; - my_bool abort_on_error; + my_bool abort_on_error, used_replace; struct st_expected_errors expected_errors; char require_file[FN_REFLEN]; enum enum_commands type; @@ -3414,7 +3414,7 @@ static int get_list_files(DYNAMIC_STRING if (ds_wild && ds_wild->length && wild_compare(file->name, ds_wild->str, 0)) continue; - dynstr_append(ds, file->name); + replace_dynstr_append(ds, file->name); dynstr_append(ds, "\n"); } set_wild_chars(0); @@ -3444,6 +3444,7 @@ static void do_list_files(struct st_comm {"file", ARG_STRING, FALSE, &ds_wild, "Filename (incl. wildcard)"} }; DBUG_ENTER("do_list_files"); + command->used_replace= 1; check_command_args(command, command->first_argument, list_files_args, @@ -3485,6 +3486,7 @@ static void do_list_files_write_file_com {"file", ARG_STRING, FALSE, &ds_wild, "Filename (incl. wildcard)"} }; DBUG_ENTER("do_list_files_write_file"); + command->used_replace= 1; check_command_args(command, command->first_argument, list_files_args, @@ -8479,7 +8481,7 @@ int main(int argc, char **argv) memset(&saved_expected_errors, 0, sizeof(saved_expected_errors)); } - if (command_executed != last_command_executed) + if (command_executed != last_command_executed || command->used_replace) { /* As soon as any command has been executed, === modified file 'mysql-test/collections/default.experimental' --- a/mysql-test/collections/default.experimental 2010-09-29 14:26:32 +0000 +++ b/mysql-test/collections/default.experimental 2010-10-01 13:25:13 +0000 @@ -24,8 +24,6 @@ main.sp @solaris main.type_float @freebsd # Bug#38965 2010-05-04 alik test cases gis-rtree, type_float, type_newdecimal fail in embedded server main.wait_timeout @solaris # Bug#51244 2010-04-26 alik wait_timeout fails on OpenSolaris -parts.partition_alter4_innodb # Bug#45299 2010-06-28 alik Test "partition_alter4_innodb" is taking too long, timeout - rpl.rpl_heartbeat_basic # BUG#54820 2010-06-26 alik rpl.rpl_heartbeat_basic fails sporadically again rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails sporadically rpl.rpl_innodb_bug28430* # Bug#46029 === modified file 'mysql-test/collections/default.weekly' --- a/mysql-test/collections/default.weekly 2010-01-25 16:12:25 +0000 +++ b/mysql-test/collections/default.weekly 2010-09-24 09:39:47 +0000 @@ -1 +1,2 @@ -perl mysql-test-run.pl --timer --force --comment=1st --experimental=collections/default.experimental 1st +perl mysql-test-run.pl --timer --force --comment=1st --experimental=collections/default.experimental 1st +perl mysql-test-run.pl --timer --force --comment=big-tests --experimental=collections/default.experimental --vardir=var-big-tests --big-test --testcase-timeout=60 --suite-timeout=600 parts.part_supported_sql_func_innodb parts.partition_alter1_1_2_innodb parts.partition_alter1_1_2_ndb parts.partition_alter1_1_ndb parts.partition_alter1_2_innodb parts.partition_alter1_2_ndb parts.partition_alter2_1_1_innodb parts.partition_alter2_1_2_innodb parts.partition_alter2_2_2_innodb parts.partition_alter4_innodb main.variables-big rpl_ndb.rpl_truncate_7ndb_2 === modified file 'mysql-test/suite/parts/inc/partition_check_drop.inc' --- a/mysql-test/suite/parts/inc/partition_check_drop.inc 2008-08-04 05:04:47 +0000 +++ b/mysql-test/suite/parts/inc/partition_check_drop.inc 2010-09-15 08:22:12 +0000 @@ -26,10 +26,12 @@ if ($do_file_tests) { let $ls_file= $MYSQLD_DATADIR/test/tmp2; # List the files belonging to the table t1 + --replace_result $MYSQLTEST_VARDIR \$MYSQLTEST_VARDIR #p# #P# #sp# #SP# --list_files_write_file $ls_file $MYSQLD_DATADIR/test t1* --chmod 0644 $ls_file if ($with_directories) { + --replace_result $MYSQLTEST_VARDIR \$MYSQLTEST_VARDIR #p# #P# #sp# #SP# --list_files_append_file $ls_file $MYSQLTEST_VARDIR/tmp t1* } eval SET @aux = load_file('$ls_file'); @@ -60,16 +62,15 @@ if ($found_garbage) --echo # worked incomplete. --echo # We found: # Print the list of files into the protocol - eval SELECT REPLACE(file_list,'$MYSQLTEST_VARDIR','\$MYSQLTEST_VARDIR') - AS "unified filelist" + eval SELECT file_list AS "unified filelist" FROM t0_definition WHERE state = 'old'; } # Do a manual cleanup, because the following tests should not suffer from # remaining files - --exec rm -f $MYSQLD_DATADIR/test/t1* || true + --remove_files_wildcard $MYSQLD_DATADIR/test t1* if ($with_directories) { - --exec rm -f $MYSQLTEST_VARDIR/tmp/t1* || true + --remove_files_wildcard $MYSQLTEST_VARDIR/tmp t1* } } --enable_query_log === modified file 'mysql-test/suite/parts/inc/partition_crash.inc' --- a/mysql-test/suite/parts/inc/partition_crash.inc 2010-08-13 07:50:25 +0000 +++ b/mysql-test/suite/parts/inc/partition_crash.inc 2010-09-15 08:22:12 +0000 @@ -3,7 +3,7 @@ --eval $create_statement --eval $insert_statement --echo # State before crash ---replace_result #p# #P# +--replace_result #p# #P# #sp# #SP# --list_files $DATADIR/test SHOW CREATE TABLE t1; --sorted_result @@ -14,13 +14,13 @@ SELECT * FROM t1; --error 2013 --eval $crash_statement --echo # State after crash (before recovery) ---replace_regex /sqlx.*\./sqlx-nnnn_nnnn./ /#p#/#P#/ +--replace_regex /sqlx.*\./sqlx-nnnn_nnnn./ /#p#/#P#/ /#sp#/#SP#/ /#tmp#/#TMP#/ --list_files $DATADIR/test --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --enable_reconnect --source include/wait_until_connected_again.inc --echo # State after crash recovery ---replace_result #p# #P# +--replace_result #p# #P# #sp# #SP# --list_files $DATADIR/test SHOW CREATE TABLE t1; --sorted_result === modified file 'mysql-test/suite/parts/inc/partition_fail.inc' --- a/mysql-test/suite/parts/inc/partition_fail.inc 2010-08-13 07:50:25 +0000 +++ b/mysql-test/suite/parts/inc/partition_fail.inc 2010-09-15 08:22:12 +0000 @@ -3,6 +3,7 @@ --eval $create_statement --eval $insert_statement --echo # State before failure +--replace_result #p# #P# #sp# #SP# --list_files $DATADIR/test SHOW CREATE TABLE t1; --sorted_result @@ -11,6 +12,7 @@ SELECT * FROM t1; --eval $fail_statement --enable_abort_on_error --echo # State after failure +--replace_result #p# #P# #sp# #SP# --list_files $DATADIR/test SHOW CREATE TABLE t1; --sorted_result === modified file 'mysql-test/suite/parts/inc/partition_layout.inc' --- a/mysql-test/suite/parts/inc/partition_layout.inc 2008-08-04 05:04:47 +0000 +++ b/mysql-test/suite/parts/inc/partition_layout.inc 2010-09-15 08:22:12 +0000 @@ -10,6 +10,6 @@ eval SHOW CREATE TABLE t1; if ($ls) { let $MYSQLD_DATADIR= `select @@datadir`; - --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR + --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR #p# #P# #sp# #SP# --list_files $MYSQLD_DATADIR/test t1* } === modified file 'mysql-test/suite/parts/inc/partition_layout_check1.inc' --- a/mysql-test/suite/parts/inc/partition_layout_check1.inc 2009-02-01 12:00:48 +0000 +++ b/mysql-test/suite/parts/inc/partition_layout_check1.inc 2010-09-15 08:22:12 +0000 @@ -69,7 +69,7 @@ if ($do_file_tests) if ($ls) { # Print the list of files into the protocol - replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLTEST_VARDIR MYSQLTEST_VARDIR; + replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLTEST_VARDIR MYSQLTEST_VARDIR #p# #P# #sp# #SP# part_n part_N; SELECT file_list AS "unified filelist" FROM t0_definition WHERE state = 'old'; } === modified file 'mysql-test/suite/parts/inc/partition_layout_check2.inc' --- a/mysql-test/suite/parts/inc/partition_layout_check2.inc 2009-02-01 12:00:48 +0000 +++ b/mysql-test/suite/parts/inc/partition_layout_check2.inc 2010-09-15 08:22:12 +0000 @@ -65,7 +65,7 @@ let $run= `SELECT @aux`; if ($run) { --vertical_results - --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR + --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR #p# #P# #sp# #SP# SELECT state, REPLACE(create_command,'\n',' ') AS "Table definition", REPLACE(file_list ,'\n',' ') AS "File list" === modified file 'mysql-test/suite/parts/r/partition_recover_myisam.result' --- a/mysql-test/suite/parts/r/partition_recover_myisam.result 2009-12-13 23:50:33 +0000 +++ b/mysql-test/suite/parts/r/partition_recover_myisam.result 2010-09-15 08:22:12 +0000 @@ -1,4 +1,4 @@ -call mtr.add_suppression("./test/t1_will_crash"); +call mtr.add_suppression("t1_will_crash"); call mtr.add_suppression("Got an error from unknown thread"); CREATE TABLE t1_will_crash (a INT, KEY (a)) ENGINE=MyISAM; INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11); === modified file 'mysql-test/suite/parts/r/partition_special_myisam.result' --- a/mysql-test/suite/parts/r/partition_special_myisam.result 2010-08-13 07:50:25 +0000 +++ b/mysql-test/suite/parts/r/partition_special_myisam.result 2010-09-15 08:22:12 +0000 @@ -214,7 +214,7 @@ SET lock_wait_timeout = 2; ALTER TABLE t1 COALESCE PARTITION 2; ERROR HY000: Lock wait timeout exceeded; try restarting transaction # Connection 3 tries to load into the table: -LOAD DATA LOCAL INFILE '/tmp/load.in' INTO TABLE t1 (f); +LOAD DATA INFILE 'load.in' INTO TABLE t1 (f); # Connection 1 commits the transaction COMMIT; # Connection 3... === modified file 'mysql-test/suite/parts/t/part_supported_sql_func_innodb.test' --- a/mysql-test/suite/parts/t/part_supported_sql_func_innodb.test 2007-11-20 15:04:07 +0000 +++ b/mysql-test/suite/parts/t/part_supported_sql_func_innodb.test 2010-09-15 08:22:12 +0000 @@ -28,6 +28,9 @@ let $do_long_tests= 1; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test' --- a/mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test 2008-05-16 16:03:50 +0000 +++ b/mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test 2010-09-15 08:22:12 +0000 @@ -46,6 +46,9 @@ let $more_pk_ui_tests= 0; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_alter1_2_innodb.test' --- a/mysql-test/suite/parts/t/partition_alter1_2_innodb.test 2008-05-16 16:03:50 +0000 +++ b/mysql-test/suite/parts/t/partition_alter1_2_innodb.test 2010-09-15 08:22:12 +0000 @@ -46,6 +46,9 @@ let $more_pk_ui_tests= 0; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test' --- a/mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test 2009-11-25 08:19:34 +0000 +++ b/mysql-test/suite/parts/t/partition_alter2_1_1_innodb.test 2010-09-15 08:22:12 +0000 @@ -45,6 +45,9 @@ let $only_part_1= 1; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test' --- a/mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test 2009-11-25 08:19:34 +0000 +++ b/mysql-test/suite/parts/t/partition_alter2_1_2_innodb.test 2010-09-15 08:22:12 +0000 @@ -45,6 +45,9 @@ let $only_part_2= 1; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test' --- a/mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test 2009-11-25 08:19:34 +0000 +++ b/mysql-test/suite/parts/t/partition_alter2_2_2_innodb.test 2010-09-15 08:22:12 +0000 @@ -45,6 +45,9 @@ let $only_part_2= 1; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_alter4_innodb.test' --- a/mysql-test/suite/parts/t/partition_alter4_innodb.test 2007-11-20 15:04:07 +0000 +++ b/mysql-test/suite/parts/t/partition_alter4_innodb.test 2010-09-15 08:22:12 +0000 @@ -43,6 +43,9 @@ let $more_pk_ui_tests= 0; # The server must support partitioning. --source include/have_partition.inc +# This test takes long time, so only run it with the --big mtr-flag. +--source include/big_test.inc + #------------------------------------------------------------------------------# # Engine specific settings and requirements === modified file 'mysql-test/suite/parts/t/partition_debug_sync_innodb.test' --- a/mysql-test/suite/parts/t/partition_debug_sync_innodb.test 2010-08-20 07:54:37 +0000 +++ b/mysql-test/suite/parts/t/partition_debug_sync_innodb.test 2010-09-15 08:22:12 +0000 @@ -56,6 +56,7 @@ partition by range (a) insert into t1 values (1), (11), (21), (33); SELECT * FROM t1; SHOW CREATE TABLE t1; +--replace_result #p# #P# #sp# #SP# --list_files $MYSQLD_DATADIR/test SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open'; @@ -78,6 +79,7 @@ ALTER TABLE t1 REORGANIZE PARTITION p0 I disconnect con1; connection default; --reap +--replace_result #p# #P# #sp# #SP# --list_files $MYSQLD_DATADIR/test SHOW CREATE TABLE t1; SELECT * FROM t1; === modified file 'mysql-test/suite/parts/t/partition_recover_myisam.test' --- a/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-12-13 23:50:33 +0000 +++ b/mysql-test/suite/parts/t/partition_recover_myisam.test 2010-09-15 08:22:12 +0000 @@ -1,6 +1,6 @@ # test the auto-recover (--myisam-recover) of partitioned myisam tables -call mtr.add_suppression("./test/t1_will_crash"); +call mtr.add_suppression("t1_will_crash"); call mtr.add_suppression("Got an error from unknown thread"); --source include/have_partition.inc === modified file 'mysql-test/suite/parts/t/partition_special_myisam.test' --- a/mysql-test/suite/parts/t/partition_special_myisam.test 2010-08-13 07:50:25 +0000 +++ b/mysql-test/suite/parts/t/partition_special_myisam.test 2010-09-15 08:22:12 +0000 @@ -62,13 +62,14 @@ ALTER TABLE t1 COALESCE PARTITION 2; --connect (con3,localhost,root,,) -perl; -open( LD, ">" . "/tmp/load.in" ) || die "Could not open file for writing " . $ENV{'MYSQLTEST_DATADIR'} . "/test/load.in"; -print LD "1\n2\n3\n"; -close( LD ); +--let $MYSQLD_DATADIR= `SELECT @@datadir` +--write_file $MYSQLD_DATADIR/test/load.in +1 +2 +3 EOF --echo # Connection 3 tries to load into the table: -send LOAD DATA LOCAL INFILE '/tmp/load.in' INTO TABLE t1 (f); +send LOAD DATA INFILE 'load.in' INTO TABLE t1 (f); --connection default --real_sleep 1 --===============1168060283915007809== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/mattias.jonsson@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: mattias.jonsson@stripped\ # 8zlhvzspk2hd5edy # target_branch: file:///Users/mattiasj/mysql-bzr/topush-5.5-bugteam/ # testament_sha1: c185685039e5d620c93f391f2ea76b6c4dfad3df # timestamp: 2010-10-01 15:26:07 +0200 # source_branch: file:///Users/mattiasj/mysql-bzr/topush-51-bugteam/ # base_revision_id: mattias.jonsson@stripped\ # hbm9uphik900sw2x # # Begin bundle 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 --===============1168060283915007809==--