From: Mattias Jonsson Date: September 14 2010 4:25pm Subject: bzr commit into mysql-5.5-bugfixing branch (mattias.jonsson:3207) List-Archive: http://lists.mysql.com/commits/118222 Message-Id: <201009141625.o8ECEWBx028005@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7501543910425936837==" --===============7501543910425936837== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/mattiasj/mysql-bzr/b56659-55-bf/ based on revid:tor.didriksen@stripped 3207 Mattias Jonsson 2010-09-14 test modified: client/mysqltest.cc mysql-test/collections/default.experimental 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-08 08:53:03 +0000 +++ b/client/mysqltest.cc 2010-09-14 16:25:33 +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, @@ -8473,7 +8475,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-08-31 14:05:35 +0000 +++ b/mysql-test/collections/default.experimental 2010-09-14 16:25:33 +0000 @@ -92,3 +92,5 @@ parts.partition_mgm_lc1_ndb parts.partition_mgm_lc2_ndb # joro : NDB tests marked as experimental as agreed with bochklin parts.partition_syntax_ndb # joro : NDB tests marked as experimental as agreed with bochklin parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin + +parts.partition_mgm_lc2* @windows # mattiasj : Bug#56777 fails on windows === 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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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-14 16:25:33 +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 --===============7501543910425936837== 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\ # x8oezbwu9r9saj2j # target_branch: file:///Users/mattiasj/mysql-bzr/b56659-55-bf/ # testament_sha1: b1b8d802a921df30a2a6c691d20fbe1431c1c437 # timestamp: 2010-09-14 18:25:45 +0200 # base_revision_id: tor.didriksen@stripped\ # eamj03nas42bt2e3 # # Begin bundle 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 SzNKFraS0dUuxZMPqf4u5IpwoSBiD15+ --===============7501543910425936837==--