#At file:///home/bm136801/my/main-tr/ based on revid:mayank.prasad@stripped
3752 Bjorn Munch 2011-03-11 [merge]
merge from trunk-mtr
renamed:
regex/tests => regex/tests_include.h
modified:
client/mysqltest.cc
mysql-test/collections/default.daily
mysql-test/collections/default.push
mysql-test/extra/binlog_tests/binlog.test
mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test
mysql-test/extra/rpl_tests/rpl_conflicts.test
mysql-test/extra/rpl_tests/rpl_extra_col_master.test
mysql-test/extra/rpl_tests/rpl_extra_col_slave.test
mysql-test/extra/rpl_tests/rpl_loaddata.test
mysql-test/extra/rpl_tests/rpl_row_basic.test
mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test
mysql-test/extra/rpl_tests/rpl_stop_middle_group.test
mysql-test/include/mtr_warnings.sql
mysql-test/lib/My/Find.pm
mysql-test/lib/mtr_cases.pm
mysql-test/lib/mtr_report.pm
mysql-test/mysql-test-run.pl
mysql-test/r/flush_read_lock.result
mysql-test/r/mysqltest.result
mysql-test/suite/binlog/r/binlog_base64_flag.result
mysql-test/suite/binlog/r/binlog_row_binlog.result
mysql-test/suite/binlog/r/binlog_stm_binlog.result
mysql-test/suite/binlog/t/binlog_base64_flag.test
mysql-test/suite/rpl/r/rpl_binlog_corruption.result
mysql-test/suite/rpl/r/rpl_bug33931.result
mysql-test/suite/rpl/r/rpl_checksum.result
mysql-test/suite/rpl/r/rpl_checksum_cache.result
mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
mysql-test/suite/rpl/r/rpl_corruption.result
mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result
mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result
mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result
mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result
mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result
mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
mysql-test/suite/rpl/r/rpl_idempotency.result
mysql-test/suite/rpl/r/rpl_ignore_table.result
mysql-test/suite/rpl/r/rpl_incident.result
mysql-test/suite/rpl/r/rpl_init_slave_errors.result
mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
mysql-test/suite/rpl/r/rpl_loaddata.result
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_rotate_logs.result
mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_row_colSize.result
mysql-test/suite/rpl/r/rpl_row_conflicts.result
mysql-test/suite/rpl/r/rpl_row_idempotency.result
mysql-test/suite/rpl/r/rpl_row_img_eng_full.result
mysql-test/suite/rpl/r/rpl_row_img_sanity.result
mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
mysql-test/suite/rpl/r/rpl_show_errors.result
mysql-test/suite/rpl/r/rpl_skip_error.result
mysql-test/suite/rpl/r/rpl_slave_grp_exec.result
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result
mysql-test/suite/rpl/r/rpl_slave_start.result
mysql-test/suite/rpl/r/rpl_slow_query_log.result
mysql-test/suite/rpl/r/rpl_stm_EE_err2.result
mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_stm_conflicts.result
mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result
mysql-test/suite/rpl/r/rpl_stop_slave.result
mysql-test/suite/rpl/r/rpl_temporary_errors.result
mysql-test/suite/rpl/r/rpl_typeconv.result
mysql-test/suite/rpl/t/rpl_binlog_corruption.test
mysql-test/suite/rpl/t/rpl_bug33931.test
mysql-test/suite/rpl/t/rpl_checksum.test
mysql-test/suite/rpl/t/rpl_checksum_cache.test
mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test
mysql-test/suite/rpl/t/rpl_corruption.test
mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test
mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
mysql-test/suite/rpl/t/rpl_idempotency.test
mysql-test/suite/rpl/t/rpl_ignore_table.test
mysql-test/suite/rpl/t/rpl_incident.test
mysql-test/suite/rpl/t/rpl_init_slave_errors.test
mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
mysql-test/suite/rpl/t/rpl_rotate_logs.test
mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
mysql-test/suite/rpl/t/rpl_row_colSize.test
mysql-test/suite/rpl/t/rpl_row_idempotency.test
mysql-test/suite/rpl/t/rpl_row_img_sanity.test
mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test
mysql-test/suite/rpl/t/rpl_show_errors.test
mysql-test/suite/rpl/t/rpl_skip_error.test
mysql-test/suite/rpl/t/rpl_slave_grp_exec.test
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test
mysql-test/suite/rpl/t/rpl_slave_start.test
mysql-test/suite/rpl/t/rpl_slow_query_log.test
mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test
mysql-test/suite/rpl/t/rpl_stop_slave.test
mysql-test/suite/rpl/t/rpl_temporary_errors.test
mysql-test/suite/rpl/t/rpl_typeconv.test
mysql-test/t/flush_read_lock.test
mysql-test/t/mysqlbinlog_raw_mode.test
mysql-test/t/mysqltest.test
mysql-test/t/partition_mgm_err2.test
mysql-test/t/repair.test
mysql-test/t/show_check.test
regex/CMakeLists.txt
regex/main.c
unittest/mysys/my_vsnprintf-t.c
regex/tests_include.h
=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc 2011-02-23 04:53:07 +0000
+++ b/client/mysqltest.cc 2011-03-07 15:17:39 +0000
@@ -3049,83 +3049,6 @@ int do_modify_var(struct st_command *com
/*
- Wrapper for 'system' function
-
- NOTE
- If mysqltest is executed from cygwin shell, the command will be
- executed in the "windows command interpreter" cmd.exe and we prepend "sh"
- to make it be executed by cygwins "bash". Thus commands like "rm",
- "mkdir" as well as shellscripts can executed by "system" in Windows.
-
-*/
-
-int my_system(DYNAMIC_STRING* ds_cmd)
-{
-#if defined __WIN__ && defined USE_CYGWIN
- /* Dump the command into a sh script file and execute with system */
- str_to_file(tmp_sh_name, ds_cmd->str, ds_cmd->length);
- return system(tmp_sh_cmd);
-#else
- return system(ds_cmd->str);
-#endif
-}
-
-
-/*
- SYNOPSIS
- do_system
- command called command
-
- DESCRIPTION
- system <command>
-
- Eval the query to expand any $variables in the command.
- Execute the command with the "system" command.
-
-*/
-
-void do_system(struct st_command *command)
-{
- DYNAMIC_STRING ds_cmd;
- DBUG_ENTER("do_system");
-
- if (strlen(command->first_argument) == 0)
- die("Missing arguments to system, nothing to do!");
-
- init_dynamic_string(&ds_cmd, 0, command->query_len + 64, 256);
-
- /* Eval the system command, thus replacing all environment variables */
- do_eval(&ds_cmd, command->first_argument, command->end, !is_windows);
-
-#ifdef __WIN__
-#ifndef USE_CYGWIN
- /* Replace /dev/null with NUL */
- while(replace(&ds_cmd, "/dev/null", 9, "NUL", 3) == 0)
- ;
-#endif
-#endif
-
-
- DBUG_PRINT("info", ("running system command '%s' as '%s'",
- command->first_argument, ds_cmd.str));
- if (my_system(&ds_cmd))
- {
- if (command->abort_on_error)
- die("system command '%s' failed", command->first_argument);
-
- /* If ! abort_on_error, log message and continue */
- dynstr_append(&ds_res, "system command '");
- replace_dynstr_append(&ds_res, command->first_argument);
- dynstr_append(&ds_res, "' failed\n");
- }
-
- command->last_argument= command->end;
- dynstr_free(&ds_cmd);
- DBUG_VOID_RETURN;
-}
-
-
-/*
SYNOPSIS
set_wild_chars
set true to set * etc. as wild char, false to reset
@@ -8615,7 +8538,10 @@ int main(int argc, char **argv)
case Q_INC: do_modify_var(command, DO_INC); break;
case Q_DEC: do_modify_var(command, DO_DEC); break;
case Q_ECHO: do_echo(command); command_executed++; break;
- case Q_SYSTEM: do_system(command); break;
+ case Q_SYSTEM:
+ die("'system' command is deprecated, use exec or\n"\
+ " see the manual for portable commands to use");
+ break;
case Q_REMOVE_FILE: do_remove_file(command); break;
case Q_REMOVE_FILES_WILDCARD: do_remove_files_wildcard(command); break;
case Q_MKDIR: do_mkdir(command); break;
=== modified file 'mysql-test/collections/default.daily'
--- a/mysql-test/collections/default.daily 2011-03-10 04:31:19 +0000
+++ b/mysql-test/collections/default.daily 2011-03-11 09:58:45 +0000
@@ -1,4 +1,5 @@
-perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal --vardir=var-normal --report-features --skip-test-list=collections/disabled-daily.list
+
+perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal --vardir=var-normal --report-features --skip-test-list=collections/disabled-daily.list --unit-tests
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-daily.list
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=row --vardir=var-row --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --mysqld=--binlog-format=row --ps-protocol --skip-test-list=collections/disabled-daily.list
=== modified file 'mysql-test/collections/default.push'
--- a/mysql-test/collections/default.push 2011-02-08 06:34:01 +0000
+++ b/mysql-test/collections/default.push 2011-02-21 13:56:58 +0000
@@ -1,4 +1,4 @@
-perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests
perl mysql-test-run.pl --timer --force --parallel=auto --comment=main_ps_row --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list
perl mysql-test-run.pl --timer --force --parallel=auto --comment=main_embedded --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --skip-ndb
perl mysql-test-run.pl --timer --force --parallel=auto --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 --experimental=collections/default.experimental --skip-ndb
=== modified file 'mysql-test/extra/binlog_tests/binlog.test'
--- a/mysql-test/extra/binlog_tests/binlog.test 2010-12-05 22:51:49 +0000
+++ b/mysql-test/extra/binlog_tests/binlog.test 2011-02-23 20:01:27 +0000
@@ -350,6 +350,7 @@ SHOW SESSION VARIABLES LIKE "%_checks";
--echo # INSERT INTO t1 VALUES(2)
--echo # foreign_key_checks=1 and unique_checks=1
--echo # It should not change current session's variables, even error happens
+call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.t1; Duplicate entry .2. for key .PRIMARY., Error_code: 1062");
--error 1062
BINLOG '
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
=== 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-12-19 17:22:30 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test 2011-02-23 20:01:27 +0000
@@ -388,6 +388,7 @@ 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("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
+CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master. Message: error writing to the binary log");
connection master;
TRUNCATE t1;
=== modified file 'mysql-test/extra/rpl_tests/rpl_conflicts.test'
--- a/mysql-test/extra/rpl_tests/rpl_conflicts.test 2011-02-07 15:31:01 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_conflicts.test 2011-02-23 20:01:27 +0000
@@ -97,6 +97,7 @@ if (`SELECT @@global.binlog_format != 'R
--disable_query_log
--eval SELECT "$err" as 'Last_SQL_Error (expected "duplicate key" error)'
--enable_query_log
+ call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
SELECT * FROM t1;
@@ -141,6 +142,7 @@ connection slave;
# replication continues.
if (`SELECT @@global.binlog_format = 'ROW' AND @@global.slave_exec_mode = 'STRICT'`) {
--echo ---- Wait until slave stops with an error ----
+ call mtr.add_suppression("Slave SQL.*Can.t find record in .t1., Error_code: 1032");
let $slave_sql_errno= 1032; # ER_KEY_NOT_FOUND
source include/wait_for_slave_sql_error.inc;
=== modified file 'mysql-test/extra/rpl_tests/rpl_extra_col_master.test'
--- a/mysql-test/extra/rpl_tests/rpl_extra_col_master.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_extra_col_master.test 2011-02-23 20:01:27 +0000
@@ -121,6 +121,13 @@ SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
#connection slave;
+
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 2 type mismatch.* 1535");
+call mtr.add_suppression("Slave SQL.*Error .Can.t DROP .c7.; check that column.key exists. on query.* 1091");
+call mtr.add_suppression("Slave SQL.*Error .Unknown column .c7. in .t15.. on query.* 1054");
+call mtr.add_suppression("Slave SQL.*Error .Key column .c6. doesn.t exist in table. on query.* 1072");
+call mtr.add_suppression("Slave SQL.*Column 2 of table .test.t1.. cannot be converted from type.* Error_code: 1677");
+
sync_slave_with_master;
--echo
--echo * Select count and 20 rows from Slave *
=== modified file 'mysql-test/extra/rpl_tests/rpl_extra_col_slave.test'
--- a/mysql-test/extra/rpl_tests/rpl_extra_col_slave.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_extra_col_slave.test 2011-02-23 20:01:27 +0000
@@ -14,6 +14,7 @@
#################################################
call mtr.add_suppression("Slave: Unknown table 'test.t6' Error_code: 1051");
+call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot be converted from type.* Error_code: 1677");
--echo **** Diff Table Def Start ****
@@ -769,6 +770,10 @@ RESET MASTER;
connection slave;
START SLAVE;
+call mtr.add_suppression("Error .Unknown table .t6.. on query.* Error_code: 1051");
+call mtr.add_suppression("Error .Duplicate column name .c6.. on query.* Error_code: 1060");
+call mtr.add_suppression("Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535");
+
--echo *** Master Data Insert ***
connection master;
set @b1 = 'b1b1b1b1';
=== modified file 'mysql-test/extra/rpl_tests/rpl_loaddata.test'
--- a/mysql-test/extra/rpl_tests/rpl_loaddata.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_loaddata.test 2011-02-23 20:01:27 +0000
@@ -69,6 +69,8 @@ eval $lower_stmt_head infile '../../std_
save_master_pos;
connection slave;
# 1062 = ER_DUP_ENTRY
+call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .10. for key .b.. on query.* Error_code: 1062");
+call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.*error code=1062.*Error on slave:.*Error_code: 0");
--let $slave_sql_errno= 1062
--source include/wait_for_slave_sql_error_and_skip.inc
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_basic.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_basic.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test 2011-02-23 20:01:27 +0000
@@ -382,6 +382,9 @@ source include/diff_tables.inc;
connection slave;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.* Error_code: 1032");
+call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t.. cannot be converted from type.*, Error_code: 1677");
--let $rpl_only_running_threads= 1
--source include/rpl_reset.inc
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test 2011-02-23 20:01:27 +0000
@@ -205,6 +205,7 @@ if ($lower_engine == ndb)
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
+call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032");
SET SQL_LOG_BIN=1;
# NOTE: Because of BUG#52473, when using NDB this will make the test
=== modified file 'mysql-test/extra/rpl_tests/rpl_row_tabledefs.test'
--- a/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test 2010-06-22 09:34:59 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test 2011-02-23 20:01:27 +0000
@@ -147,6 +147,8 @@ sync_slave_with_master;
connection master;
INSERT INTO t4 VALUES (4);
connection slave;
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column [012] type mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]. cannot be converted from type.* Error_code: 1677");
--let $slave_skip_counter= 2
--let $slave_sql_errno= 1677
--let $show_slave_sql_error= 1
=== modified file 'mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test'
--- a/mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test 2011-02-07 15:31:01 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test 2011-02-23 20:01:27 +0000
@@ -24,6 +24,7 @@ insert into t1 values(1),(2);
drop table t1;
connection slave;
+call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.* error code=1062.*Error on slave:.* Error_code: 0");
--echo (expect different error codes on master and slave)
--let $slave_sql_errno= 0
--let $show_slave_sql_error= 1
=== modified file 'mysql-test/extra/rpl_tests/rpl_stop_middle_group.test'
--- a/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test 2011-02-14 16:32:36 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_stop_middle_group.test 2011-02-23 20:01:27 +0000
@@ -23,6 +23,8 @@ insert into tm set a=null; # to simulate
commit;
connection slave;
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
+call mtr.add_suppression("Slave SQL.*The slave SQL is stopped, leaving the current group of events unfinished with a non-transaction table changed.");
# slave will catch the killed status but won't shut down immediately
# only after the whole group has done (commit)
=== modified file 'mysql-test/include/mtr_warnings.sql'
--- a/mysql-test/include/mtr_warnings.sql 2011-02-02 13:41:10 +0000
+++ b/mysql-test/include/mtr_warnings.sql 2011-02-23 20:01:27 +0000
@@ -125,7 +125,6 @@ INSERT INTO global_suppressions VALUES
("Slave: The incident LOST_EVENTS occured on the master"),
("Slave: Unknown error.* 1105"),
("Slave: Can't drop database.* database doesn't exist"),
- ("Slave SQL:.*(Error_code: \[\[:digit:\]\]+|Query:.*)"),
("Sort aborted"),
("Time-out in NDB"),
("Warning:\s+One can only use the --user.*root"),
=== modified file 'mysql-test/lib/My/Find.pm'
--- a/mysql-test/lib/My/Find.pm 2011-01-18 10:21:37 +0000
+++ b/mysql-test/lib/My/Find.pm 2011-02-24 14:11:05 +0000
@@ -28,8 +28,6 @@ use My::Platform;
use base qw(Exporter);
our @EXPORT= qw(my_find_bin my_find_dir my_find_file NOT_REQUIRED);
-our $vs_config_dir;
-
my $bin_extension= ".exe" if IS_WINDOWS;
# Helper function to be used for fourth parameter to find functions
@@ -158,7 +156,8 @@ sub my_find_paths {
# User can select to look in a special build dir
# which is a subdirectory of any of the paths
my @extra_dirs;
- my $build_dir= $vs_config_dir || $ENV{MTR_VS_CONFIG} || $ENV{MTR_BUILD_DIR};
+ my $build_dir= $::opt_config_dir || $ENV{MTR_VS_CONFIG}
+ || $ENV{MTR_BUILD_DIR};
push(@extra_dirs, $build_dir) if defined $build_dir;
if (defined $extension){
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2011-01-18 11:09:49 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2011-03-08 09:43:05 +0000
@@ -287,9 +287,11 @@ sub collect_one_suite($)
"mysql-test/suite",
"mysql-test",
# Look in storage engine specific suite dirs
- "storage/*/mysql-test-suites"
+ "storage/*/mtr",
+ # Look in plugin specific suite dir
+ "plugin/$suite/tests",
],
- [$suite]);
+ [$suite, "mtr"]);
}
mtr_verbose("suitedir: $suitedir");
}
=== modified file 'mysql-test/lib/mtr_report.pm'
--- a/mysql-test/lib/mtr_report.pm 2011-01-18 10:21:37 +0000
+++ b/mysql-test/lib/mtr_report.pm 2011-02-28 15:11:53 +0000
@@ -32,6 +32,7 @@ our @EXPORT= qw(report_option mtr_print_
use mtr_match;
use My::Platform;
use POSIX qw[ _exit ];
+use IO::Handle qw[ flush ];
require "mtr_io.pl";
my $tot_real_time= 0;
@@ -72,7 +73,7 @@ sub _mtr_report_test_name ($) {
print _name(). _timestamp();
printf "%-40s ", $tname;
my $worker = $tinfo->{worker};
- printf "w$worker " if $worker;
+ print "w$worker " if defined $worker;
return $tname;
}
@@ -487,6 +488,7 @@ sub mtr_warning (@) {
# Print error to screen and then exit
sub mtr_error (@) {
+ IO::Handle::flush(\*STDOUT) if IS_WINDOWS;
print STDERR _name(). _timestamp().
"mysql-test-run: *** ERROR: ". join(" ", @_). "\n";
if (IS_WINDOWS)
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2011-03-09 14:30:37 +0000
+++ b/mysql-test/mysql-test-run.pl 2011-03-11 09:58:45 +0000
@@ -195,6 +195,10 @@ my $opt_debug_common;
our $opt_debug_server;
our @opt_cases; # The test cases names in argv
our $opt_embedded_server;
+# -1 indicates use default, override with env.var.
+my $opt_ctest= env_or_val(MTR_UNIT_TESTS => -1);
+# Unit test report stored here for delayed printing
+my $ctest_report;
# Options used when connecting to an already running server
my %opts_extern;
@@ -494,6 +498,10 @@ sub main {
mtr_error("Not all tests completed");
}
+ mark_time_used('init');
+
+ push @$completed, run_ctest() if $opt_ctest;
+
mtr_print_line();
if ( $opt_gcov ) {
@@ -501,6 +509,11 @@ sub main {
$opt_gcov_msg, $opt_gcov_err);
}
+ if ($ctest_report) {
+ print "$ctest_report\n";
+ mtr_print_line();
+ }
+
print_total_times($opt_parallel) if $opt_report_times;
mtr_report_stats("Completed", $completed);
@@ -1057,6 +1070,7 @@ sub command_line_setup {
'max-connections=i' => \$opt_max_connections,
'default-myisam!' => \&collect_option,
'report-times' => \$opt_report_times,
+ 'unit-tests!' => \$opt_ctest,
'help|h' => \$opt_usage,
# list-options is internal, not listed in help
@@ -1487,6 +1501,14 @@ sub command_line_setup {
}
# --------------------------------------------------------------------------
+ # Don't run ctest if tests or suites named
+ # --------------------------------------------------------------------------
+
+ $opt_ctest= 0 if $opt_ctest == -1 && ($opt_suites || @opt_cases);
+ # Override: disable if running in the PB test environment
+ $opt_ctest= 0 if $opt_ctest == -1 && defined $ENV{PB2WORKDIR};
+
+ # --------------------------------------------------------------------------
# Check use of wait-all
# --------------------------------------------------------------------------
@@ -5678,6 +5700,78 @@ sub valgrind_exit_reports() {
return $found_err;
}
+sub run_ctest() {
+ my $olddir= getcwd();
+ chdir ($bindir) or die ("Could not chdir to $bindir");
+ my $tinfo;
+ my $no_ctest= (IS_WINDOWS) ? 256 : -1;
+ my $ctest_vs= "";
+
+ # Just ignore if not configured/built to run ctest
+ if (! -f "CTestTestfile.cmake") {
+ chdir($olddir);
+ return;
+ }
+
+ # Add vs-config option if needed
+ $ctest_vs= "-C $opt_vs_config" if $opt_vs_config;
+
+ # Also silently ignore if we don't have ctest and didn't insist
+ # Special override: also ignore in Pushbuild, some platforms may not have it
+ # Now, run ctest and collect output
+ my $ctest_out= `ctest $ctest_vs 2>&1`;
+ if ($? == $no_ctest && $opt_ctest == -1 && ! defined $ENV{PB2WORKDIR}) {
+ chdir($olddir);
+ return;
+ }
+
+ # Create minimalistic "test" for the reporting
+ $tinfo = My::Test->new
+ (
+ name => 'unit_tests',
+ );
+ # Set dummy worker id to align report with normal tests
+ $tinfo->{worker} = 0 if $opt_parallel > 1;
+
+ my $ctfail= 0; # Did ctest fail?
+ if ($?) {
+ $ctfail= 1;
+ $tinfo->{result}= 'MTR_RES_FAILED';
+ $tinfo->{comment}= "ctest failed with exit code $?, see result below";
+ $ctest_out= "" unless $ctest_out;
+ }
+ my $ctfile= "$opt_vardir/ctest.log";
+ my $ctres= 0; # Did ctest produce report summary?
+
+ open (CTEST, " > $ctfile") or die ("Could not open output file $ctfile");
+
+ # Put ctest output in log file, while analyzing results
+ for (split ('\n', $ctest_out)) {
+ print CTEST "$_\n";
+ if (/tests passed/) {
+ $ctres= 1;
+ $ctest_report .= "\nUnit tests: $_\n";
+ }
+ if ( /FAILED/ or /\(Failed\)/ ) {
+ $ctfail= 1;
+ $ctest_report .= " $_\n";
+ }
+ }
+ close CTEST;
+
+ # Set needed 'attributes' for test reporting
+ $tinfo->{comment}.= "\nctest did not pruduce report summary" if ! $ctres;
+ $tinfo->{result}= ($ctres && !$ctfail)
+ ? 'MTR_RES_PASSED' : 'MTR_RES_FAILED';
+ $ctest_report .= "Report from unit tests in $ctfile";
+ $tinfo->{failures}= ($tinfo->{result} eq 'MTR_RES_FAILED');
+
+ mark_time_used('test');
+ mtr_report_test($tinfo);
+ chdir($olddir);
+ return $tinfo;
+}
+
#
# Usage
#
@@ -5897,6 +5991,9 @@ Misc options
engine to InnoDB.
report-times Report how much time has been spent on different
phases of test execution.
+ nounit-tests Do not run unit tests. Normally run if configured
+ and if not running named tests/suites
+ unit-tests Run unit tests even if they would otherwise not be run
Some options that control enabling a feature for normal test runs,
can be turned off by prepending 'no' to the option, e.g. --notimer.
=== modified file 'mysql-test/r/flush_read_lock.result'
--- a/mysql-test/r/flush_read_lock.result 2010-11-11 17:11:05 +0000
+++ b/mysql-test/r/flush_read_lock.result 2011-02-23 11:54:58 +0000
@@ -431,6 +431,7 @@ Success: Was able to run 'execute stmt1'
Success: Was able to run 'execute stmt1' with FTWRL active in another connection.
Success: Was able to run FTWRL while 'execute stmt1' was active in another connection.
deallocate prepare stmt1;
+call mtr.add_suppression("Slave SQL.*Can.t execute the query because you have a conflicting read lock., Error_code: 1223");
#
# 9.2.b) EXECUTE for statement which is incompatible with FTWRL
# should be also incompatible.
=== modified file 'mysql-test/r/mysqltest.result'
--- a/mysql-test/r/mysqltest.result 2011-01-12 10:22:11 +0000
+++ b/mysql-test/r/mysqltest.result 2011-03-07 15:17:39 +0000
@@ -412,9 +412,8 @@ mysqltest: At line 1: Cannot perform inc
mysqltest: At line 1: End of line junk detected: "1000"
mysqltest: At line 1: Cannot perform inc/dec on a non-numeric value
mysqltest: At line 1: Cannot perform inc/dec on a non-numeric value
-mysqltest: At line 1: Missing arguments to system, nothing to do!
-mysqltest: At line 1: Missing arguments to system, nothing to do!
-system command 'NonExistsinfComamdn 2> /dev/null' failed
+mysqltest: At line 1: 'system' command is deprecated, use exec or
+ see the manual for portable commands to use
test
test2
test3
=== modified file 'mysql-test/suite/binlog/r/binlog_base64_flag.result'
--- a/mysql-test/suite/binlog/r/binlog_base64_flag.result 2010-12-02 13:44:21 +0000
+++ b/mysql-test/suite/binlog/r/binlog_base64_flag.result 2011-02-23 20:01:27 +0000
@@ -91,6 +91,9 @@ iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4
';
ERROR HY000: master may suffer from http://bugs.mysql.com/bug.php?id=37426 so slave stops; check error log on slave for more info
drop table t1, char63_utf8, char128_utf8;
+call mtr.add_suppression("Slave SQL.*master suffers from this bug: http:..bugs.mysql.com.bug.php.id=37426.* Error_code: 1105");
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column 1 of table .test.char128_utf8. cannot be converted.* Error_code: 1677");
#
# Bug #54393: crash and/or valgrind errors in
# mysql_client_binlog_statement
=== modified file 'mysql-test/suite/binlog/r/binlog_row_binlog.result'
--- a/mysql-test/suite/binlog/r/binlog_row_binlog.result 2010-12-05 22:51:49 +0000
+++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result 2011-02-23 20:01:27 +0000
@@ -804,6 +804,7 @@ unique_checks OFF
# INSERT INTO t1 VALUES(2)
# foreign_key_checks=1 and unique_checks=1
# It should not change current session's variables, even error happens
+call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.t1; Duplicate entry .2. for key .PRIMARY., Error_code: 1062");
BINLOG '
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
=== modified file 'mysql-test/suite/binlog/r/binlog_stm_binlog.result'
--- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result 2010-12-05 22:51:49 +0000
+++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result 2011-02-23 20:01:27 +0000
@@ -572,6 +572,7 @@ unique_checks OFF
# INSERT INTO t1 VALUES(2)
# foreign_key_checks=1 and unique_checks=1
# It should not change current session's variables, even error happens
+call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.t1; Duplicate entry .2. for key .PRIMARY., Error_code: 1062");
BINLOG '
dfLtTBMBAAAAKQAAAKsBAAAAABcAAAAAAAEABHRlc3QAAnQxAAEDAAE=
dfLtTBcBAAAAIgAAAM0BAAAAABcAAAAAAAEAAf/+AgAAAA==
=== modified file 'mysql-test/suite/binlog/t/binlog_base64_flag.test'
--- a/mysql-test/suite/binlog/t/binlog_base64_flag.test 2010-12-02 13:44:21 +0000
+++ b/mysql-test/suite/binlog/t/binlog_base64_flag.test 2011-02-23 20:01:27 +0000
@@ -151,6 +151,9 @@ iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4
drop table t1, char63_utf8, char128_utf8;
+call mtr.add_suppression("Slave SQL.*master suffers from this bug: http:..bugs.mysql.com.bug.php.id=37426.* Error_code: 1105");
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column 1 of table .test.char128_utf8. cannot be converted.* Error_code: 1677");
--echo #
--echo # Bug #54393: crash and/or valgrind errors in
=== modified file 'mysql-test/suite/rpl/r/rpl_binlog_corruption.result'
--- a/mysql-test/suite/rpl/r/rpl_binlog_corruption.result 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/r/rpl_binlog_corruption.result 2011-02-23 20:01:27 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
call mtr.add_suppression('Found invalid event in binary log');
+call mtr.add_suppression('Slave SQL.*Relay log read failure: Could not parse relay log event entry.* 1594');
==== Initialize ====
include/stop_slave.inc
RESET SLAVE;
=== modified file 'mysql-test/suite/rpl/r/rpl_bug33931.result'
--- a/mysql-test/suite/rpl/r/rpl_bug33931.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_bug33931.result 2011-02-23 20:01:27 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
call mtr.add_suppression("Failed during slave I/O thread initialization");
+call mtr.add_suppression("Slave SQL.*Failed during slave thread initialization.* 1593");
include/stop_slave.inc
reset slave;
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
=== modified file 'mysql-test/suite/rpl/r/rpl_checksum.result'
--- a/mysql-test/suite/rpl/r/rpl_checksum.result 2011-03-08 11:29:11 +0000
+++ b/mysql-test/suite/rpl/r/rpl_checksum.result 2011-03-08 19:12:46 +0000
@@ -4,6 +4,7 @@ call mtr.add_suppression('Slave can not
call mtr.add_suppression('Replication event checksum verification failed');
call mtr.add_suppression('Relay log write failure: could not queue event from master');
call mtr.add_suppression('Event crc check failed! Most likely there is event corruption');
+call mtr.add_suppression('Slave SQL: Error initializing relay log position: I/O error reading event at position .*, Error_code: 1593');
call mtr.add_suppression('Master is configured to log replication events with checksum, but will not send such events to slaves that cannot process');
set @master_save_binlog_checksum= @@global.binlog_checksum;
set @save_master_verify_checksum = @@global.master_verify_checksum;
=== modified file 'mysql-test/suite/rpl/r/rpl_checksum_cache.result'
--- a/mysql-test/suite/rpl/r/rpl_checksum_cache.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_checksum_cache.result 2011-02-23 20:01:27 +0000
@@ -2,6 +2,7 @@ include/master-slave.inc
[connection master]
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. Statement: insert into t2 set data=repeat.*'a', @act_size.*");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. Statement: insert into t1 values.* NAME_CONST.*'n',.*, @data .*");
+call mtr.add_suppression("Slave SQL: slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table; waiting for the group completion");
set @save_binlog_cache_size = @@global.binlog_cache_size;
set @save_binlog_checksum = @@global.binlog_checksum;
set @save_master_verify_checksum = @@global.master_verify_checksum;
=== modified file 'mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result'
--- a/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result 2011-02-03 16:09:33 +0000
+++ b/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result 2011-02-23 11:54:58 +0000
@@ -5,6 +5,7 @@ include/rpl_init.inc [topology=1->2->3->
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=MyISAM;
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=InnoDB;
include/rpl_sync.inc
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
*** Testing schema A->B->C->D->A ***
@@ -46,6 +47,7 @@ SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
include/start_slave.inc
INSERT INTO t1 VALUES(6,'C',2);
INSERT INTO t1(b,c) VALUES('B',2);
+call mtr.add_suppression("Slave SQL.*Duplicate entry .6. for key .PRIMARY.* Error_code: 1062");
include/wait_for_slave_sql_error.inc [errno=1062]
INSERT INTO t1(b,c) VALUES('A',2);
INSERT INTO t1(b,c) VALUES('D',2);
=== modified file 'mysql-test/suite/rpl/r/rpl_corruption.result'
--- a/mysql-test/suite/rpl/r/rpl_corruption.result 2011-03-08 19:28:55 +0000
+++ b/mysql-test/suite/rpl/r/rpl_corruption.result 2011-03-11 09:35:38 +0000
@@ -5,6 +5,7 @@ call mtr.add_suppression('Slave I/O: Rel
call mtr.add_suppression('event read from binlog did not pass crc check');
call mtr.add_suppression('Replication event checksum verification failed');
call mtr.add_suppression('Event crc check failed! Most likely there is event corruption');
+call mtr.add_suppression('Slave SQL: Error initializing relay log position: I/O error reading event at position .*, Error_code: 1593');
SET @old_master_verify_checksum = @@master_verify_checksum;
# 1. Creating test table/data and set corruption position for testing
* insert/update/delete rows in table t1 *
=== modified file 'mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result'
--- a/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result 2011-02-23 20:01:27 +0000
@@ -57,6 +57,11 @@ f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(
27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 2 type mismatch.* 1535");
+call mtr.add_suppression("Slave SQL.*Error .Can.t DROP .c7.; check that column.key exists. on query.* 1091");
+call mtr.add_suppression("Slave SQL.*Error .Unknown column .c7. in .t15.. on query.* 1054");
+call mtr.add_suppression("Slave SQL.*Error .Key column .c6. doesn.t exist in table. on query.* 1072");
+call mtr.add_suppression("Slave SQL.*Column 2 of table .test.t1.. cannot be converted from type.* Error_code: 1677");
* Select count and 20 rows from Slave *
=== modified file 'mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result'
--- a/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result 2011-02-23 20:01:27 +0000
@@ -57,6 +57,11 @@ f1 f2 f3 f4 f5 f6 f7 f8 f9 hex(f10) hex(
27 27 27 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
29 29 29 second 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
30 30 30 next 2 kaks 2 got stolen from the paradise very fat blob 1555 123456
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 2 type mismatch.* 1535");
+call mtr.add_suppression("Slave SQL.*Error .Can.t DROP .c7.; check that column.key exists. on query.* 1091");
+call mtr.add_suppression("Slave SQL.*Error .Unknown column .c7. in .t15.. on query.* 1054");
+call mtr.add_suppression("Slave SQL.*Error .Key column .c6. doesn.t exist in table. on query.* 1072");
+call mtr.add_suppression("Slave SQL.*Column 2 of table .test.t1.. cannot be converted from type.* Error_code: 1677");
* Select count and 20 rows from Slave *
=== modified file 'mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result'
--- a/mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result 2011-02-23 20:01:27 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
call mtr.add_suppression("Slave: Unknown table 'test.t6' Error_code: 1051");
+call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot be converted from type.* Error_code: 1677");
**** Diff Table Def Start ****
*** On Slave ***
STOP SLAVE;
@@ -461,6 +462,9 @@ c4 BLOB, c5 CHAR(5)) ENGINE='InnoDB';
RESET MASTER;
*** Start Slave ***
START SLAVE;
+call mtr.add_suppression("Error .Unknown table .t6.. on query.* Error_code: 1051");
+call mtr.add_suppression("Error .Duplicate column name .c6.. on query.* Error_code: 1060");
+call mtr.add_suppression("Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535");
*** Master Data Insert ***
set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
=== modified file 'mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result'
--- a/mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result 2011-02-23 20:01:27 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
call mtr.add_suppression("Slave: Unknown table 'test.t6' Error_code: 1051");
+call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot be converted from type.* Error_code: 1677");
**** Diff Table Def Start ****
*** On Slave ***
STOP SLAVE;
@@ -461,6 +462,9 @@ c4 BLOB, c5 CHAR(5)) ENGINE='MyISAM';
RESET MASTER;
*** Start Slave ***
START SLAVE;
+call mtr.add_suppression("Error .Unknown table .t6.. on query.* Error_code: 1051");
+call mtr.add_suppression("Error .Duplicate column name .c6.. on query.* Error_code: 1060");
+call mtr.add_suppression("Table definition on master and slave does not match: Column . ...e mismatch.* Error_code: 1535");
*** Master Data Insert ***
set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
=== modified file 'mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result'
--- a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result 2011-02-23 09:31:37 +0000
@@ -42,6 +42,7 @@ UPDATE t4 LEFT JOIN (t1, t2, t5) ON (t1.
UPDATE t4 LEFT JOIN (t1, t6, t7) ON (t4.id=t1.id and t4.id=t6.id and t4.id=t7.id) SET a=0, d=0, f=0, g=0 where t4.id=1;
UPDATE t7 LEFT JOIN (t4, t1, t2) ON (t7.id=t4.id and t7.id=t1.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1;
UPDATE t7 LEFT JOIN (t8, t4, t1) ON (t7.id=t8.id and t7.id=t4.id and t7.id=t1.id) SET a=0, d=0, g=0, h=0 where t7.id=1;
+call mtr.add_suppression("Slave SQL.*Error .Table .test.t[47]. doesn.t exist. on query.* Error_code: 1146");
UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1;
include/wait_for_slave_sql_error_and_skip.inc [errno=1146]
Last_SQL_Error = 'Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1''
=== modified file 'mysql-test/suite/rpl/r/rpl_heartbeat_basic.result'
--- a/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result 2011-01-13 21:36:21 +0000
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result 2011-02-23 20:01:27 +0000
@@ -207,6 +207,8 @@ Heartbeat event received
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
INSERT INTO t1 VALUES (1, 'on slave', NULL);
INSERT INTO t1 VALUES (1, 'on master', NULL);
+call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.. on query.* Error_code: 1062");
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
Heartbeat events are received while sql thread stopped (1 means 'yes'): 1
include/stop_slave.inc
DROP TABLE t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_idempotency.result'
--- a/mysql-test/suite/rpl/r/rpl_idempotency.result 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/r/rpl_idempotency.result 2011-02-23 11:54:58 +0000
@@ -1,8 +1,9 @@
include/master-slave.inc
[connection master]
-call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
-call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
-call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Slave SQL.*Can.t find record in .t[12].* Error_code: 1032");
+call mtr.add_suppression("Slave SQL.*Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
+call mtr.add_suppression("Slave SQL.*Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.* Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
CREATE TABLE t1 (a INT PRIMARY KEY);
CREATE TABLE t2 (a INT);
INSERT INTO t1 VALUES (-1),(-2),(-3);
=== modified file 'mysql-test/suite/rpl/r/rpl_ignore_table.result'
--- a/mysql-test/suite/rpl/r/rpl_ignore_table.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_ignore_table.result 2011-02-23 20:01:27 +0000
@@ -113,6 +113,7 @@ show grants for mysqltest4@localhost;
Grants for mysqltest4@localhost
GRANT USAGE ON *.* TO 'mysqltest4'@'localhost' IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
set global slave_exec_mode='IDEMPOTENT';
+call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table mysql.* Error_code: 1032");
drop table t1, mysqltest2.t2;
drop table t4;
drop database mysqltest2;
=== modified file 'mysql-test/suite/rpl/r/rpl_incident.result'
--- a/mysql-test/suite/rpl/r/rpl_incident.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_incident.result 2011-02-23 20:01:27 +0000
@@ -15,6 +15,7 @@ a
2
3
4
+call mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master.* 1590");
include/wait_for_slave_sql_error.inc [errno=1590]
Last_SQL_Error = 'The incident LOST_EVENTS occured on the master. Message: <none>'
**** On Slave ****
=== modified file 'mysql-test/suite/rpl/r/rpl_init_slave_errors.result'
--- a/mysql-test/suite/rpl/r/rpl_init_slave_errors.result 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/r/rpl_init_slave_errors.result 2011-02-23 09:31:37 +0000
@@ -6,7 +6,7 @@ SET GLOBAL debug= "d,simulate_io_slave_e
start slave;
include/wait_for_slave_sql_error.inc [errno=1593]
Last_SQL_Error = 'Failed during slave thread initialization'
-call mtr.add_suppression("Failed during slave I/O thread initialization");
+call mtr.add_suppression("Failed during slave.* thread initialization");
SET GLOBAL debug= "";
reset slave;
SET GLOBAL init_slave= "garbage";
=== modified file 'mysql-test/suite/rpl/r/rpl_known_bugs_detection.result'
--- a/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result 2011-02-23 20:01:27 +0000
@@ -7,6 +7,7 @@ SELECT * FROM t1;
a b
1 10
2 2
+call mtr.add_suppression("Slave SQL.*suffer.*http:..bugs.mysql.com.bug.php.id=24432");
include/wait_for_slave_sql_error.inc [errno=1105]
Last_SQL_Error = 'Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10''
SELECT * FROM t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_loaddata.result'
--- a/mysql-test/suite/rpl/r/rpl_loaddata.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_loaddata.result 2011-02-23 20:01:27 +0000
@@ -27,6 +27,8 @@ drop table t3;
create table t1(a int, b int, unique(b));
insert into t1 values(1,10);
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
+call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .10. for key .b.. on query.* Error_code: 1062");
+call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.*error code=1062.*Error on slave:.*Error_code: 0");
include/wait_for_slave_sql_error_and_skip.inc [errno=1062]
include/check_slave_no_error.inc
set sql_log_bin=0;
=== modified file 'mysql-test/suite/rpl/r/rpl_loaddata_fatal.result'
--- a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result 2011-02-23 20:01:27 +0000
@@ -3,6 +3,7 @@ include/master-slave.inc
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,10);
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
+call mtr.add_suppression("Slave SQL.*Fatal error: Not enough memory, Error_code: 1593");
include/wait_for_slave_sql_error_and_skip.inc [errno=1593]
Last_SQL_Error = 'Fatal error: Not enough memory'
DROP TABLE t1;
=== 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 2011-02-22 08:01:58 +0000
+++ b/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result 2011-02-23 20:01:27 +0000
@@ -140,6 +140,7 @@ 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("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
+CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master. Message: error writing to the binary log");
TRUNCATE t1;
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
=== modified file 'mysql-test/suite/rpl/r/rpl_rotate_logs.result'
--- a/mysql-test/suite/rpl/r/rpl_rotate_logs.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_rotate_logs.result 2011-02-23 20:01:27 +0000
@@ -39,6 +39,7 @@ drop table temp_table, t3;
insert into t2 values(1234);
set insert_id=1234;
insert into t2 values(NULL);
+call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .1234. for key .PRIMARY.. on query.* Error_code: 1062");
include/wait_for_slave_sql_error_and_skip.inc [errno=1062]
purge master logs to 'master-bin.000002';
show master logs;
=== modified file 'mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result'
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result 2011-02-23 20:01:27 +0000
@@ -65,6 +65,7 @@ DROP TABLE t1;
include/rpl_reset.inc
**** On Slave ****
SET GLOBAL QUERY_CACHE_SIZE=0;
+call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1.* Error_code: 1032");
**** On Master ****
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2),(3);
=== modified file 'mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result'
--- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result 2011-02-23 20:01:27 +0000
@@ -478,6 +478,9 @@ INSERT INTO t2 VALUES (1, "", 1);
INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2);
include/diff_tables.inc [master:t2, slave:t2]
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.* Error_code: 1032");
+call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t.. cannot be converted from type.*, Error_code: 1677");
include/rpl_reset.inc
[expecting slave to replicate correctly]
INSERT INTO t4 VALUES (1, "", 1);
=== modified file 'mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result'
--- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result 2011-02-23 20:01:27 +0000
@@ -481,6 +481,9 @@ INSERT INTO t2 VALUES (1, "", 1);
INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2);
include/diff_tables.inc [master:t2, slave:t2]
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 1 size mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.* Error_code: 1032");
+call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t.. cannot be converted from type.*, Error_code: 1677");
include/rpl_reset.inc
[expecting slave to replicate correctly]
INSERT INTO t4 VALUES (1, "", 1);
=== 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 2011-02-22 08:01:58 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result 2011-02-23 20:01:27 +0000
@@ -141,6 +141,7 @@ 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("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
+CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master. Message: error writing to the binary log");
TRUNCATE t1;
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
=== modified file 'mysql-test/suite/rpl/r/rpl_row_colSize.result'
--- a/mysql-test/suite/rpl/r/rpl_row_colSize.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_colSize.result 2011-02-23 20:01:27 +0000
@@ -265,6 +265,8 @@ STOP SLAVE;
RESET SLAVE;
RESET MASTER;
START SLAVE;
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 0 ...e mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column 0 of table .test.t1. cannot be converted from type.* Error_code: 1677");
*** Cleanup ***
DROP TABLE IF EXISTS t1;
include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_row_conflicts.result'
--- a/mysql-test/suite/rpl/r/rpl_row_conflicts.result 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_conflicts.result 2011-02-23 20:01:27 +0000
@@ -23,6 +23,7 @@ a
include/wait_for_slave_sql_error.inc [errno=1062]
Last_SQL_Error (expected "duplicate key" error)
Could not execute Write_rows event on table test.t1; Duplicate entry '1' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log master-bin.000001, end_log_pos END_LOG_POS
+call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
SELECT * FROM t1;
a
1
@@ -49,6 +50,7 @@ SELECT * FROM t1;
a
[on slave]
---- Wait until slave stops with an error ----
+call mtr.add_suppression("Slave SQL.*Can.t find record in .t1., Error_code: 1032");
include/wait_for_slave_sql_error.inc [errno=1032]
Last_SQL_Error (expected "duplicate key" error)
Could not execute Delete_rows event on table test.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log master-bin.000001, end_log_pos END_LOG_POS
=== modified file 'mysql-test/suite/rpl/r/rpl_row_idempotency.result'
--- a/mysql-test/suite/rpl/r/rpl_row_idempotency.result 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_idempotency.result 2011-02-23 11:54:58 +0000
@@ -1,8 +1,9 @@
include/master-slave.inc
[connection master]
-call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
-call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
-call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Can.t find record in .t[12].* Error_code: 1032");
+call mtr.add_suppression("Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
+call mtr.add_suppression("Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
set @old_slave_exec_mode= @@global.slave_exec_mode;
set @@global.slave_exec_mode= IDEMPOTENT;
create table ti1 (b int primary key) engine = innodb;
=== modified file 'mysql-test/suite/rpl/r/rpl_row_img_eng_full.result'
--- a/mysql-test/suite/rpl/r/rpl_row_img_eng_full.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_img_eng_full.result 2011-02-23 20:01:27 +0000
@@ -3641,6 +3641,7 @@ c1 c2
300 1
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
+call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032");
SET SQL_LOG_BIN=1;
include/wait_for_slave_sql_error_and_skip.inc [errno=1032]
DROP TABLE t1;
@@ -3823,6 +3824,7 @@ c1 c2
300 1
SET SQL_LOG_BIN=0;
call mtr.add_suppression("Slave: Can\'t find record in \'t1\' Error_code: 1032");
+call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t1; Can.t find record in .t1.* Error_code: 1032");
SET SQL_LOG_BIN=1;
include/wait_for_slave_sql_error_and_skip.inc [errno=1032]
DROP TABLE t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_row_img_sanity.result'
--- a/mysql-test/suite/rpl/r/rpl_row_img_sanity.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_img_sanity.result 2011-02-23 20:01:27 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
call mtr.add_suppression("Slave: Can\'t find record in \'t\' Error_code: 1032");
+call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t; Can.t find record in .t.* Error_code: 1032");
SHOW VARIABLES LIKE 'binlog_row_image';
Variable_name Value
binlog_row_image FULL
=== modified file 'mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result'
--- a/mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result 2011-02-23 11:54:58 +0000
@@ -10,6 +10,7 @@ DROP TABLE t1;
INSERT INTO t1 VALUES (1);
==== Verify error on slave ====
[on slave]
+call mtr.add_suppression("Slave SQL.*Error executing row event: .Table .test.t1. doesn.t exist., Error_code: 1146");
include/wait_for_slave_sql_error.inc [errno=1146]
==== Clean up ====
include/stop_slave_io.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result'
--- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result 2011-02-23 20:01:27 +0000
@@ -117,6 +117,8 @@ a
include/check_slave_is_running.inc
INSERT INTO t9 VALUES (4);
INSERT INTO t4 VALUES (4);
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column [012] type mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]. cannot be converted from type.* Error_code: 1677");
include/wait_for_slave_sql_error_and_skip.inc [errno=1677]
Last_SQL_Error = 'Column 0 of table 'test.t4' cannot be converted from type 'int' to type 'float''
INSERT INTO t9 VALUES (5);
=== modified file 'mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result'
--- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result 2011-02-23 20:01:27 +0000
@@ -117,6 +117,8 @@ a
include/check_slave_is_running.inc
INSERT INTO t9 VALUES (4);
INSERT INTO t4 VALUES (4);
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column [012] type mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]. cannot be converted from type.* Error_code: 1677");
include/wait_for_slave_sql_error_and_skip.inc [errno=1677]
Last_SQL_Error = 'Column 0 of table 'test.t4' cannot be converted from type 'int' to type 'float''
INSERT INTO t9 VALUES (5);
=== modified file 'mysql-test/suite/rpl/r/rpl_show_errors.result'
--- a/mysql-test/suite/rpl/r/rpl_show_errors.result 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/r/rpl_show_errors.result 2011-02-23 20:01:27 +0000
@@ -3,6 +3,7 @@ include/master-slave.inc
CREATE TABLE t1 (a INT, b blob, PRIMARY KEY(b(512)));
DROP TABLE t1;
DROP TABLE t1;
+call mtr.add_suppression("Slave SQL: Error .Unknown table .test.t1.. on query.* Error_code: 1051");
include/wait_for_slave_sql_error.inc [errno=1051]
include/assert.inc [Last_SQL_Error_Timestamp is not null and matches the expected format]
include/stop_slave.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_skip_error.result'
--- a/mysql-test/suite/rpl/r/rpl_skip_error.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_skip_error.result 2011-02-23 20:01:27 +0000
@@ -56,6 +56,7 @@ t1 CREATE TABLE `t1` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SET SQL_LOG_BIN=1;
+call mtr.add_suppression("Slave SQL.*Could not execute .*te_rows event on table test.t.; Duplicate entry.* Error_code: 1062");
CREATE TABLE t1(id INT NOT NULL PRIMARY KEY, data INT) Engine=InnoDB;
SHOW CREATE TABLE t1;
Table Create Table
=== modified file 'mysql-test/suite/rpl/r/rpl_slave_grp_exec.result'
--- a/mysql-test/suite/rpl/r/rpl_slave_grp_exec.result 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slave_grp_exec.result 2011-02-23 11:54:58 +0000
@@ -29,6 +29,7 @@ a b
SELECT * FROM t3 ORDER BY a;
a b
1 ZZ
+call mtr.add_suppression("Slave SQL.*Table .test.t3. doesn.t exist.* Error_code: 1146");
include/wait_for_slave_sql_error.inc [errno=1146]
SHOW TABLES LIKE 't%';
Tables_in_test (t%)
=== modified file 'mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result'
--- a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result 2011-02-24 15:48:27 +0000
@@ -13,5 +13,6 @@ include/stop_slave_io.inc
RESET SLAVE;
drop table t1;
call mtr.add_suppression("Slave: Can't get stat of .*");
+call mtr.add_suppression("Slave SQL: Error .Can.t get stat of.* Error_code: 13");
call mtr.add_suppression("Slave: File.* not found.*");
include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result'
--- a/mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result 2011-02-23 09:31:37 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
START SLAVE;
+call mtr.add_suppression("Slave SQL.*Unable to use slave.s temporary directory.* Error_code: 12");
include/wait_for_slave_sql_error.inc [errno=12]
include/stop_slave_io.inc
RESET SLAVE;
=== modified file 'mysql-test/suite/rpl/r/rpl_slave_start.result'
--- a/mysql-test/suite/rpl/r/rpl_slave_start.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slave_start.result 2011-02-23 20:01:27 +0000
@@ -6,6 +6,7 @@ include/master-slave.inc
[connection master]
[on slave]
CALL mtr.add_suppression("Slave: Table 't1' already exists Error_code: 1050");
+CALL mtr.add_suppression("Slave SQL: Error .Table .t1. already exists. on query.* Error_code: 1050");
# The statement makes SQL thread to fail.
CREATE TABLE t1(c1 INT);
[on master]
=== modified file 'mysql-test/suite/rpl/r/rpl_slow_query_log.result'
--- a/mysql-test/suite/rpl/r/rpl_slow_query_log.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_slow_query_log.result 2011-02-24 15:48:27 +0000
@@ -1,6 +1,7 @@
include/master-slave.inc
[connection master]
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
+call mtr.add_suppression("Slave SQL: slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table; waiting for the group completion");
include/stop_slave.inc
SET @old_log_output= @@log_output;
SET GLOBAL log_output= 'TABLE';
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_EE_err2.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_EE_err2.result 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_EE_err2.result 2011-02-23 20:01:27 +0000
@@ -7,6 +7,7 @@ set sql_log_bin=1;
insert into t1 values(1),(2);
ERROR 23000: Duplicate entry '2' for key 'a'
drop table t1;
+call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.* error code=1062.*Error on slave:.* Error_code: 0");
(expect different error codes on master and slave)
include/wait_for_slave_sql_error.inc [errno=0]
Last_SQL_Error = 'Query caused different errors on master and slave. Error on master: message (format)='Duplicate entry '%-.192s' for key %d' error code=1062 ; Error on slave: actual message='no error', error code=0. Default database: 'test'. Query: 'insert into t1 values(1),(2)''
=== 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 2011-02-22 08:01:58 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result 2011-02-23 20:01:27 +0000
@@ -140,6 +140,7 @@ 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("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
+CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master. Message: error writing to the binary log");
TRUNCATE t1;
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_conflicts.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_conflicts.result 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_conflicts.result 2011-02-23 20:01:27 +0000
@@ -18,6 +18,7 @@ a
include/wait_for_slave_sql_error.inc [errno=1062]
Last_SQL_Error (expected "duplicate key" error)
Error 'Duplicate entry '1' for key 'PRIMARY'' on query. Default database: 'test'. Query: 'INSERT INTO t1 VALUES (1)'
+call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
SELECT * FROM t1;
a
1
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result 2011-02-23 20:01:27 +0000
@@ -43,6 +43,8 @@ drop table t3;
create table t1(a int, b int, unique(b));
insert into t1 values(1,10);
load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
+call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .10. for key .b.. on query.* Error_code: 1062");
+call mtr.add_suppression("Slave SQL.*Query caused different errors on master and slave.*Error on master:.*error code=1062.*Error on slave:.*Error_code: 0");
include/wait_for_slave_sql_error_and_skip.inc [errno=1062]
include/check_slave_no_error.inc
set sql_log_bin=0;
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result 2011-02-23 20:01:27 +0000
@@ -70,5 +70,6 @@ include/start_slave.inc
# Clean up
DROP TABLE t1;
SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result'
--- a/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result 2011-02-23 20:01:27 +0000
@@ -11,6 +11,8 @@ insert into tm set a=null;
Warnings:
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
commit;
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
+call mtr.add_suppression("Slave SQL.*The slave SQL is stopped, leaving the current group of events unfinished with a non-transaction table changed.");
include/wait_for_slave_sql_to_stop.inc
include/check_slave_no_error.inc
include/assert.inc [Everything that was read, was executed]
=== modified file 'mysql-test/suite/rpl/r/rpl_stop_slave.result'
--- a/mysql-test/suite/rpl/r/rpl_stop_slave.result 2011-01-18 17:38:10 +0000
+++ b/mysql-test/suite/rpl/r/rpl_stop_slave.result 2011-02-23 11:54:58 +0000
@@ -75,6 +75,7 @@ include/wait_for_slave_sql_to_start.inc
# Test end
SET GLOBAL debug= '$debug_save';
include/restart_slave.inc
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
[connection master]
DROP TABLE t1, t2;
=== modified file 'mysql-test/suite/rpl/r/rpl_temporary_errors.result'
--- a/mysql-test/suite/rpl/r/rpl_temporary_errors.result 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/r/rpl_temporary_errors.result 2011-02-23 20:01:27 +0000
@@ -36,6 +36,7 @@ a b
3 3
4 4
include/check_slave_is_running.inc
+call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1");
**** On Master ****
DROP TABLE t1;
include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/r/rpl_typeconv.result'
--- a/mysql-test/suite/rpl/r/rpl_typeconv.result 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/r/rpl_typeconv.result 2011-02-23 11:54:58 +0000
@@ -534,6 +534,7 @@ BIT(6) BIT(5) ALL_LOSS
BIT(5) BIT(12) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
BIT(12) BIT(5) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
DROP TABLE type_conversions;
+call mtr.add_suppression("Slave SQL.*Column 0 of table .test.t1. cannot be converted from type.* Error_code: 1677");
DROP TABLE t1;
set global slave_type_conversions = @saved_slave_type_conversions;
include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/t/rpl_binlog_corruption.test'
--- a/mysql-test/suite/rpl/t/rpl_binlog_corruption.test 2011-02-07 15:31:01 +0000
+++ b/mysql-test/suite/rpl/t/rpl_binlog_corruption.test 2011-02-23 20:01:27 +0000
@@ -22,7 +22,7 @@ source include/have_debug.inc;
--connection slave
call mtr.add_suppression('Found invalid event in binary log');
-
+call mtr.add_suppression('Slave SQL.*Relay log read failure: Could not parse relay log event entry.* 1594');
#
# BUG#40482: server/mysqlbinlog crashes when reading invalid Incident_log_event
=== modified file 'mysql-test/suite/rpl/t/rpl_bug33931.test'
--- a/mysql-test/suite/rpl/t/rpl_bug33931.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_bug33931.test 2011-02-23 20:01:27 +0000
@@ -9,6 +9,7 @@ connection slave;
# Add suppression for expected warnings in slaves error log
call mtr.add_suppression("Failed during slave I/O thread initialization");
+call mtr.add_suppression("Slave SQL.*Failed during slave thread initialization.* 1593");
--source include/stop_slave.inc
reset slave;
=== modified file 'mysql-test/suite/rpl/t/rpl_checksum.test'
--- a/mysql-test/suite/rpl/t/rpl_checksum.test 2011-03-08 11:29:11 +0000
+++ b/mysql-test/suite/rpl/t/rpl_checksum.test 2011-03-08 19:12:46 +0000
@@ -10,6 +10,7 @@ call mtr.add_suppression('Replication ev
# due to C failure simulation
call mtr.add_suppression('Relay log write failure: could not queue event from master');
call mtr.add_suppression('Event crc check failed! Most likely there is event corruption');
+call mtr.add_suppression('Slave SQL: Error initializing relay log position: I/O error reading event at position .*, Error_code: 1593');
call mtr.add_suppression('Master is configured to log replication events with checksum, but will not send such events to slaves that cannot process');
# A. read/write access to the global vars:
=== modified file 'mysql-test/suite/rpl/t/rpl_checksum_cache.test'
--- a/mysql-test/suite/rpl/t/rpl_checksum_cache.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_checksum_cache.test 2011-02-23 20:01:27 +0000
@@ -4,6 +4,7 @@
--disable_warnings
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. Statement: insert into t2 set data=repeat.*'a', @act_size.*");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave. Statement: insert into t1 values.* NAME_CONST.*'n',.*, @data .*");
+call mtr.add_suppression("Slave SQL: slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table; waiting for the group completion");
--enable_warnings
connection master;
=== modified file 'mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test'
--- a/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test 2011-02-04 15:00:14 +0000
+++ b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test 2011-02-23 20:01:27 +0000
@@ -30,6 +30,7 @@ CREATE TABLE t1 (a INT NOT NULL AUTO_INC
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=InnoDB;
--source include/rpl_sync.inc
--connection server_4
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
--echo
#
@@ -85,6 +86,7 @@ INSERT INTO t1(b,c) VALUES('B',2);
# Wait while C will stop.
--connection server_3
# 1062 = ER_DUP_ENTRY
+call mtr.add_suppression("Slave SQL.*Duplicate entry .6. for key .PRIMARY.* Error_code: 1062");
--let $slave_sql_errno= 1062
--source include/wait_for_slave_sql_error.inc
--connection server_1
=== modified file 'mysql-test/suite/rpl/t/rpl_corruption.test'
--- a/mysql-test/suite/rpl/t/rpl_corruption.test 2011-03-08 19:28:55 +0000
+++ b/mysql-test/suite/rpl/t/rpl_corruption.test 2011-03-11 09:35:38 +0000
@@ -16,6 +16,7 @@ call mtr.add_suppression('Slave I/O: Rel
call mtr.add_suppression('event read from binlog did not pass crc check');
call mtr.add_suppression('Replication event checksum verification failed');
call mtr.add_suppression('Event crc check failed! Most likely there is event corruption');
+call mtr.add_suppression('Slave SQL: Error initializing relay log position: I/O error reading event at position .*, Error_code: 1593');
SET @old_master_verify_checksum = @@master_verify_checksum;
=== modified file 'mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test'
--- a/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test 2011-02-23 09:31:37 +0000
@@ -122,6 +122,8 @@ UPDATE t7 LEFT JOIN (t8, t4, t1) ON (t7.
# if any of the above statement are not ignored, it would cause error
# and stop slave sql thread.
sync_slave_with_master;
+connection slave;
+call mtr.add_suppression("Slave SQL.*Error .Table .test.t[47]. doesn.t exist. on query.* Error_code: 1146");
connection master;
# Parameters for include/wait_for_slave_sql_error_and_skip.inc:
=== modified file 'mysql-test/suite/rpl/t/rpl_heartbeat_basic.test'
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test 2011-01-13 21:36:21 +0000
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test 2011-02-23 20:01:27 +0000
@@ -327,6 +327,8 @@ INSERT INTO t1 VALUES (1, 'on slave', NU
--connection master
INSERT INTO t1 VALUES (1, 'on master', NULL);
--connection slave
+call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.. on query.* Error_code: 1062");
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
let $slave_errno= ER_DUP_ENTRY
--source include/wait_for_slave_sql_error.inc
let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
=== modified file 'mysql-test/suite/rpl/t/rpl_idempotency.test'
--- a/mysql-test/suite/rpl/t/rpl_idempotency.test 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/t/rpl_idempotency.test 2011-02-23 11:54:58 +0000
@@ -4,9 +4,10 @@
source include/master-slave.inc;
# Add suppression for expected warning(s) in slaves error log
-call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
-call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
-call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Slave SQL.*Can.t find record in .t[12].* Error_code: 1032");
+call mtr.add_suppression("Slave SQL.*Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
+call mtr.add_suppression("Slave SQL.*Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Slave SQL.*Could not execute Write_rows event on table test.* Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
connection master;
CREATE TABLE t1 (a INT PRIMARY KEY);
=== modified file 'mysql-test/suite/rpl/t/rpl_ignore_table.test'
--- a/mysql-test/suite/rpl/t/rpl_ignore_table.test 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/t/rpl_ignore_table.test 2011-02-23 11:54:58 +0000
@@ -125,6 +125,7 @@ show grants for mysqltest4@localhost;
# where mysqltest1 does not exist on slave,
# to succeed on slave the mode is temporarily changed
set global slave_exec_mode='IDEMPOTENT';
+call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table mysql.* Error_code: 1032");
connection master;
drop table t1, mysqltest2.t2;
=== modified file 'mysql-test/suite/rpl/t/rpl_incident.test'
--- a/mysql-test/suite/rpl/t/rpl_incident.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_incident.test 2011-02-23 20:01:27 +0000
@@ -15,6 +15,7 @@ SELECT * FROM t1;
connection slave;
# Wait until SQL thread stops with error LOST_EVENT on master
+call mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occured on the master.* 1590");
let $slave_sql_errno= 1590;
let $show_slave_sql_error= 1;
source include/wait_for_slave_sql_error.inc;
=== modified file 'mysql-test/suite/rpl/t/rpl_init_slave_errors.test'
--- a/mysql-test/suite/rpl/t/rpl_init_slave_errors.test 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_init_slave_errors.test 2011-02-23 09:31:37 +0000
@@ -58,7 +58,7 @@ start slave;
--let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc
-call mtr.add_suppression("Failed during slave I/O thread initialization");
+call mtr.add_suppression("Failed during slave.* thread initialization");
SET GLOBAL debug= "";
=== modified file 'mysql-test/suite/rpl/t/rpl_known_bugs_detection.test'
--- a/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test 2011-02-23 20:01:27 +0000
@@ -33,6 +33,7 @@ connection slave;
#1105 = ER_UNKNOWN_ERROR
--let $slave_sql_errno= 1105
--let $show_slave_sql_error= 1
+call mtr.add_suppression("Slave SQL.*suffer.*http:..bugs.mysql.com.bug.php.id=24432");
--source include/wait_for_slave_sql_error.inc
# show that it was not replicated
SELECT * FROM t1;
=== modified file 'mysql-test/suite/rpl/t/rpl_loaddata_fatal.test'
--- a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test 2011-02-23 20:01:27 +0000
@@ -15,6 +15,7 @@ connection master;
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
connection slave;
+call mtr.add_suppression("Slave SQL.*Fatal error: Not enough memory, Error_code: 1593");
let $slave_sql_errno= 1593;
let $show_slave_sql_error= 1;
source include/wait_for_slave_sql_error_and_skip.inc;
=== modified file 'mysql-test/suite/rpl/t/rpl_rotate_logs.test'
--- a/mysql-test/suite/rpl/t/rpl_rotate_logs.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_rotate_logs.test 2011-02-23 20:01:27 +0000
@@ -99,6 +99,7 @@ set insert_id=1234;
insert into t2 values(NULL);
connection slave;
# 1062 = ER_DUP_ENTRY
+call mtr.add_suppression("Slave SQL.*Error .Duplicate entry .1234. for key .PRIMARY.. on query.* Error_code: 1062");
--let $slave_sql_errno= 1062
--source include/wait_for_slave_sql_error_and_skip.inc
=== modified file 'mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test'
--- a/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test 2011-02-23 20:01:27 +0000
@@ -63,6 +63,7 @@ DROP TABLE t1;
--echo **** On Slave ****
connection slave;
SET GLOBAL QUERY_CACHE_SIZE=0;
+call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1.* Error_code: 1032");
--echo **** On Master ****
connection master;
=== modified file 'mysql-test/suite/rpl/t/rpl_row_colSize.test'
--- a/mysql-test/suite/rpl/t/rpl_row_colSize.test 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_colSize.test 2011-02-23 11:54:58 +0000
@@ -160,6 +160,10 @@ let $test_table_slave = CREATE TABLE t1
let $test_insert = INSERT INTO t1 VALUES ('This is a test.');
source include/test_fieldsize.inc;
+connection slave;
+call mtr.add_suppression("Slave SQL.*Table definition on master and slave does not match: Column 0 ...e mismatch.* Error_code: 1535");
+call mtr.add_suppression("Slave SQL.*Column 0 of table .test.t1. cannot be converted from type.* Error_code: 1677");
+
--echo *** Cleanup ***
connection master;
DROP TABLE IF EXISTS t1;
=== modified file 'mysql-test/suite/rpl/t/rpl_row_idempotency.test'
--- a/mysql-test/suite/rpl/t/rpl_row_idempotency.test 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_idempotency.test 2011-02-23 11:54:58 +0000
@@ -9,10 +9,10 @@ connection slave;
source include/have_innodb.inc;
# Add suppression for expected warning(s) in slaves error log
-call mtr.add_suppression("Slave: Can't find record in 't.' Error_code: 1032");
-call mtr.add_suppression("Slave: Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
-call mtr.add_suppression("Slave: Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
-
+call mtr.add_suppression("Can.t find record in .t[12].* Error_code: 1032");
+call mtr.add_suppression("Cannot delete or update a parent row: a foreign key constraint fails .* Error_code: 1451");
+call mtr.add_suppression("Cannot add or update a child row: a foreign key constraint fails .* Error_code: 1452");
+call mtr.add_suppression("Duplicate entry .1. for key .PRIMARY.* Error_code: 1062");
# bug#31609 Not all RBR slave errors reported as errors
# bug#31552 Replication breaks when deleting rows from out-of-sync table
=== modified file 'mysql-test/suite/rpl/t/rpl_row_img_sanity.test'
--- a/mysql-test/suite/rpl/t/rpl_row_img_sanity.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sanity.test 2011-02-23 20:01:27 +0000
@@ -24,6 +24,7 @@
-- connection slave
call mtr.add_suppression("Slave: Can\'t find record in \'t\' Error_code: 1032");
+call mtr.add_suppression("Slave SQL: Could not execute Update_rows event on table test.t; Can.t find record in .t.* Error_code: 1032");
-- connection master
## assertion: check that default value for binlog-row-image == 'FULL'
=== modified file 'mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test'
--- a/mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test 2011-02-23 20:01:27 +0000
@@ -30,6 +30,7 @@ INSERT INTO t1 VALUES (1);
connection slave;
# slave should have stopped because can't find table t1
# 1146 = ER_NO_SUCH_TABLE
+call mtr.add_suppression("Slave SQL.*Error executing row event: .Table .test.t1. doesn.t exist., Error_code: 1146");
--let $slave_sql_errno= 1146
--source include/wait_for_slave_sql_error.inc
=== modified file 'mysql-test/suite/rpl/t/rpl_show_errors.test'
--- a/mysql-test/suite/rpl/t/rpl_show_errors.test 2011-02-14 16:32:36 +0000
+++ b/mysql-test/suite/rpl/t/rpl_show_errors.test 2011-02-23 20:01:27 +0000
@@ -28,6 +28,7 @@ DROP TABLE t1;
# action: now wait for the slave to stop because it cannot
# remove a table that does not exist
let $slave_sql_errno=1051; # ER_BAD_TABLE_ERROR
+call mtr.add_suppression("Slave SQL: Error .Unknown table .test.t1.. on query.* Error_code: 1051");
-- source include/wait_for_slave_sql_error.inc
--let $errts0= query_get_value("SHOW SLAVE STATUS", $field, 1)
=== modified file 'mysql-test/suite/rpl/t/rpl_skip_error.test'
--- a/mysql-test/suite/rpl/t/rpl_skip_error.test 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_skip_error.test 2011-02-23 09:31:37 +0000
@@ -102,6 +102,8 @@ SET SQL_LOG_BIN=1;
connection slave;
+call mtr.add_suppression("Slave SQL.*Could not execute .*te_rows event on table test.t.; Duplicate entry.* Error_code: 1062");
+
CREATE TABLE t1(id INT NOT NULL PRIMARY KEY, data INT) Engine=InnoDB;
SHOW CREATE TABLE t1;
=== modified file 'mysql-test/suite/rpl/t/rpl_slave_grp_exec.test'
--- a/mysql-test/suite/rpl/t/rpl_slave_grp_exec.test 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slave_grp_exec.test 2011-02-23 11:54:58 +0000
@@ -63,6 +63,7 @@ SELECT * FROM t3 ORDER BY a;
--connection slave
# 1146 = ER_NO_SUCH_TABLE
+call mtr.add_suppression("Slave SQL.*Table .test.t3. doesn.t exist.* Error_code: 1146");
--let $slave_sql_errno= 1146
--source include/wait_for_slave_sql_error.inc
SHOW TABLES LIKE 't%';
=== modified file 'mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test'
--- a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test 2011-02-17 07:36:05 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test 2011-02-24 15:48:27 +0000
@@ -54,6 +54,7 @@ RESET SLAVE;
drop table t1;
call mtr.add_suppression("Slave: Can't get stat of .*");
+call mtr.add_suppression("Slave SQL: Error .Can.t get stat of.* Error_code: 13");
call mtr.add_suppression("Slave: File.* not found.*");
--let $rpl_only_running_threads= 1
--source include/rpl_end.inc
=== modified file 'mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test'
--- a/mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test 2010-12-19 17:07:28 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test 2011-02-23 09:31:37 +0000
@@ -11,6 +11,7 @@
--connection slave
START SLAVE;
# Why 12???
+call mtr.add_suppression("Slave SQL.*Unable to use slave.s temporary directory.* Error_code: 12");
--let $slave_sql_errno= 12
source include/wait_for_slave_sql_error.inc;
=== modified file 'mysql-test/suite/rpl/t/rpl_slave_start.test'
--- a/mysql-test/suite/rpl/t/rpl_slave_start.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slave_start.test 2011-02-23 20:01:27 +0000
@@ -7,7 +7,9 @@ source include/have_debug_sync.inc;
--echo [on slave]
connection slave;
+
CALL mtr.add_suppression("Slave: Table 't1' already exists Error_code: 1050");
+CALL mtr.add_suppression("Slave SQL: Error .Table .t1. already exists. on query.* Error_code: 1050");
--echo # The statement makes SQL thread to fail.
CREATE TABLE t1(c1 INT);
=== modified file 'mysql-test/suite/rpl/t/rpl_slow_query_log.test'
--- a/mysql-test/suite/rpl/t/rpl_slow_query_log.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_slow_query_log.test 2011-02-24 15:48:27 +0000
@@ -29,7 +29,7 @@ source include/master-slave.inc;
source include/have_binlog_format_statement.inc;
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
-
+call mtr.add_suppression("Slave SQL: slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table; waiting for the group completion");
# Prepare slave for different long_query_time we need to stop the slave
# and restart it as long_query_time variable is dynamic and, after
=== modified file 'mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test'
--- a/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test 2011-02-23 20:01:27 +0000
@@ -19,6 +19,7 @@ SET @@session.binlog_direct_non_transact
# clean up
--connection slave
SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
--connection master
SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
=== modified file 'mysql-test/suite/rpl/t/rpl_stop_slave.test'
--- a/mysql-test/suite/rpl/t/rpl_stop_slave.test 2011-01-18 17:38:10 +0000
+++ b/mysql-test/suite/rpl/t/rpl_stop_slave.test 2011-02-23 11:54:58 +0000
@@ -47,6 +47,10 @@ source extra/rpl_tests/rpl_stop_slave.te
SET GLOBAL debug= '$debug_save';
source include/restart_slave_sql.inc;
+connection slave;
+call mtr.add_suppression("Slave SQL.*slave SQL thread is being stopped in the middle of applying of a group having updated a non-transaction table");
+connection master;
+
--source include/rpl_connection_master.inc
DROP TABLE t1, t2;
=== modified file 'mysql-test/suite/rpl/t/rpl_temporary_errors.test'
--- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test 2010-12-19 17:22:30 +0000
+++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test 2011-02-23 20:01:27 +0000
@@ -28,6 +28,9 @@ SHOW STATUS LIKE 'Slave_retried_transact
SELECT * FROM t1;
source include/check_slave_is_running.inc;
+connection slave;
+call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1");
+
--echo **** On Master ****
connection master;
DROP TABLE t1;
=== modified file 'mysql-test/suite/rpl/t/rpl_typeconv.test'
--- a/mysql-test/suite/rpl/t/rpl_typeconv.test 2010-12-19 17:15:12 +0000
+++ b/mysql-test/suite/rpl/t/rpl_typeconv.test 2011-02-23 11:54:58 +0000
@@ -61,6 +61,8 @@ SELECT RPAD(Source, 15, ' ') AS Source_T
enable_query_log;
DROP TABLE type_conversions;
+call mtr.add_suppression("Slave SQL.*Column 0 of table .test.t1. cannot be converted from type.* Error_code: 1677");
+
connection master;
DROP TABLE t1;
sync_slave_with_master;
=== modified file 'mysql-test/t/flush_read_lock.test'
--- a/mysql-test/t/flush_read_lock.test 2010-11-12 13:57:08 +0000
+++ b/mysql-test/t/flush_read_lock.test 2011-02-23 11:54:58 +0000
@@ -557,6 +557,8 @@ let $cleanup_stmt= ;
--source include/check_ftwrl_compatible.inc
deallocate prepare stmt1;
+call mtr.add_suppression("Slave SQL.*Can.t execute the query because you have a conflicting read lock., Error_code: 1223");
+
--echo #
--echo # 9.2.b) EXECUTE for statement which is incompatible with FTWRL
--echo # should be also incompatible.
=== modified file 'mysql-test/t/mysqlbinlog_raw_mode.test'
--- a/mysql-test/t/mysqlbinlog_raw_mode.test 2010-05-21 21:48:20 +0000
+++ b/mysql-test/t/mysqlbinlog_raw_mode.test 2011-03-07 15:17:39 +0000
@@ -7,8 +7,13 @@
# If exit code is good or bad then entry in raw_mode_exit table will be created
# Anything above exit code 1 is bad. We wait for this
CREATE TABLE raw_mode_exit (exit_code INT);
---system `$MYSQL_BINLOG --raw --read-from-remote-server --stop-never --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --result-file=$MYSQLTEST_VARDIR/tmp/ master-bin.000001 ; [ \$? -le 1 ]` && $MYSQL -e "use test; INSERT INTO raw_mode_exit VALUES (1);" &
-
+# Now jump some loops to have mysqlbinlog executed in the background
+--write_file $MYSQL_TMP_DIR/mbl.sh
+#!/bin/sh
+(`$MYSQL_BINLOG --raw --read-from-remote-server --stop-never --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --result-file=$MYSQLTEST_VARDIR/tmp/ master-bin.000001 ; [ $? -le 1 ]` && $MYSQL -e "use test; INSERT INTO raw_mode_exit VALUES (1);") < /dev/null > /dev/null 2>&1 &
+EOF
+--chmod 0755 $MYSQL_TMP_DIR/mbl.sh
+--exec $MYSQL_TMP_DIR/mbl.sh
let $wait_condition= SELECT id from information_schema.processlist where processlist.command like '%Binlog%' and state like '%Master has sent%';
--source include/wait_condition.inc
--diff_files $MYSQLTEST_VARDIR/tmp/master-bin.000001 $MYSQLD_DATADIR/master-bin.000001
@@ -24,5 +29,6 @@ DROP TABLE raw_mode_exit;
--remove_file $MYSQLTEST_VARDIR/tmp/master-bin.000001
--remove_file $MYSQLTEST_VARDIR/tmp/master-bin.000002
--remove_file $MYSQLTEST_VARDIR/tmp/master-bin.000003
+--remove_file $MYSQL_TMP_DIR/mbl.sh
--echo End of tests
=== modified file 'mysql-test/t/mysqltest.test'
--- a/mysql-test/t/mysqltest.test 2011-01-12 10:22:11 +0000
+++ b/mysql-test/t/mysqltest.test 2011-03-07 15:17:39 +0000
@@ -1072,22 +1072,11 @@ echo $d;
# ----------------------------------------------------------------------------
-# Test system
+# Test system (which is now deprecated)
# ----------------------------------------------------------------------------
-#system ls > /dev/null;
-system echo "hej" > /dev/null;
-#--system ls > /dev/null
---system echo "hej" > /dev/null;
--error 1
---exec echo "system;" | $MYSQL_TEST 2>&1
---error 1
---exec echo "system $NONEXISTSINFVAREABLI;" | $MYSQL_TEST 2>&1
-
---disable_abort_on_error
-system NonExistsinfComamdn 2> /dev/null;
---enable_abort_on_error
-
+--exec echo "system something;" | $MYSQL_TEST 2>&1
# ----------------------------------------------------------------------------
# Test delimiter
=== modified file 'mysql-test/t/partition_mgm_err2.test'
--- a/mysql-test/t/partition_mgm_err2.test 2007-04-25 18:21:55 +0000
+++ b/mysql-test/t/partition_mgm_err2.test 2011-03-07 15:17:39 +0000
@@ -11,8 +11,9 @@
#
# BUG: 14354 Partitions: data directory clause fails
#
---system rm -rf $MYSQLTEST_VARDIR/tmp/bug14354
---system mkdir $MYSQLTEST_VARDIR/tmp/bug14354
+--error 0,1
+--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/bug14354
+--mkdir $MYSQLTEST_VARDIR/tmp/bug14354
disable_query_log;
eval CREATE TABLE t1 (id int) PARTITION BY RANGE(id) (
PARTITION p1 VALUES LESS THAN (20) ENGINE=myisam
@@ -20,7 +21,8 @@ DATA DIRECTORY="$MYSQLTEST_VARDIR/tmp/bu
INDEX DIRECTORY="$MYSQLTEST_VARDIR/tmp/bug14354");
enable_query_log;
INSERT INTO t1 VALUES (15);
---system test -f $MYSQLTEST_VARDIR/tmp/bug14354/t1#P#p1.MYD
---system test -f $MYSQLTEST_VARDIR/tmp/bug14354/t1#P#p1.MYI
+--file_exists $MYSQLTEST_VARDIR/tmp/bug14354/t1#P#p1.MYD
+--file_exists $MYSQLTEST_VARDIR/tmp/bug14354/t1#P#p1.MYI
DROP TABLE t1;
---system rm -rf $MYSQLTEST_VARDIR/tmp/bug14354
+--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/bug14354
+--rmdir $MYSQLTEST_VARDIR/tmp/bug14354
=== modified file 'mysql-test/t/repair.test'
--- a/mysql-test/t/repair.test 2010-02-03 05:32:38 +0000
+++ b/mysql-test/t/repair.test 2011-03-07 15:17:39 +0000
@@ -30,7 +30,7 @@ repair table t1 use_frm;
create table t1 engine=myisam SELECT 1,"table 1";
flush tables;
let $MYSQLD_DATADIR= `select @@datadir`;
-system echo 1 > $MYSQLD_DATADIR/test/t1.MYI ;
+exec echo 1 > $MYSQLD_DATADIR/test/t1.MYI ;
repair table t1;
repair table t1 use_frm;
drop table t1;
=== modified file 'mysql-test/t/show_check.test'
--- a/mysql-test/t/show_check.test 2011-01-18 13:09:35 +0000
+++ b/mysql-test/t/show_check.test 2011-03-07 15:17:39 +0000
@@ -442,7 +442,7 @@ flush tables;
# Create a junk frm file on disk
let $MYSQLD_DATADIR= `select @@datadir`;
-system echo "this is a junk file for test" >> $MYSQLD_DATADIR/test/t1.frm ;
+exec echo "this is a junk file for test" >> $MYSQLD_DATADIR/test/t1.frm ;
--replace_column 6 # 7 # 8 # 9 #
SHOW TABLE STATUS like 't1';
--error ER_NOT_FORM_FILE
=== modified file 'regex/CMakeLists.txt'
--- a/regex/CMakeLists.txt 2010-10-05 06:33:15 +0000
+++ b/regex/CMakeLists.txt 2011-03-03 10:09:53 +0000
@@ -18,9 +18,11 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/
SET(REGEX_SOURCES regcomp.c regerror.c regexec.c regfree.c reginit.c)
ADD_CONVENIENCE_LIBRARY(regex ${REGEX_SOURCES})
-ADD_EXECUTABLE(re main.c split.c debug.c)
-TARGET_LINK_LIBRARIES(re regex strings mysys)
+IF(WITH_UNIT_TESTS)
+ ADD_EXECUTABLE(re main.c split.c debug.c)
+ TARGET_LINK_LIBRARIES(re regex strings mysys)
-ADD_TEST(regex1 re -i${CMAKE_CURRENT_SOURCE_DIR}/tests)
-ADD_TEST(regex2 re -el -i${CMAKE_CURRENT_SOURCE_DIR}/tests)
-ADD_TEST(regex3 re -er -i${CMAKE_CURRENT_SOURCE_DIR}/tests)
+ ADD_TEST(regex1 re -I)
+ ADD_TEST(regex2 re -el -I)
+ ADD_TEST(regex3 re -er -I)
+ENDIF()
=== modified file 'regex/main.c'
--- a/regex/main.c 2010-10-19 22:58:36 +0000
+++ b/regex/main.c 2011-03-03 10:09:53 +0000
@@ -5,6 +5,7 @@
#include "my_regex.h"
#include "main.ih"
+#include "tests_include.h"
char *progname;
int debug = 0;
@@ -65,6 +66,7 @@ char *argv[];
size_t len;
int c;
int errflg = 0;
+ int opt_inline = 0;
register int i;
char *input_file_name= NULL;
extern int optind;
@@ -72,7 +74,7 @@ char *argv[];
progname = argv[0];
- while ((c = getopt(argc, argv, "c:e:i:S:E:x")) != EOF)
+ while ((c = getopt(argc, argv, "c:e:i:S:E:xI")) != EOF)
switch (c) {
case 'c': /* compile options */
copts = options('c', optarg);
@@ -92,6 +94,9 @@ char *argv[];
case 'x': /* Debugging. */
debug++;
break;
+ case 'I': /* Inline. */
+ opt_inline= 1;
+ break;
case '?':
default:
errflg++;
@@ -100,10 +105,15 @@ char *argv[];
if (errflg) {
fprintf(stderr, "usage: %s ", progname);
fprintf(stderr,
- "[-c copt][-e eopt][-i filename][-S][-E][-x] [re]\n");
+ "[-c copt][-e eopt][-i filename][-S][-E][-x][-I] [re]\n");
exit(2);
}
+ if (opt_inline) {
+ regress(NULL);
+ exit(status);
+ }
+
if (optind >= argc && !input_file_name) {
regress(stdin);
exit(status);
@@ -165,9 +175,24 @@ char *argv[];
exit(status);
}
+char*
+get_next_line(s, size, stream)
+char *s;
+int size;
+FILE *stream;
+{
+ if (stream)
+ return fgets(s, size, stream);
+ if (test_array[line])
+ return strncpy(s, test_array[line], size);
+ return NULL;
+}
+
/*
- regress - main loop of regression test
== void regress(FILE *in);
+ Reads file, line-by-line.
+ If in == NULL, we read data from test_array instead.
*/
void
regress(in)
@@ -185,13 +210,14 @@ FILE *in;
const char *bpname = "MY_REG_BADPAT";
my_regex_t re;
- while (fgets(inbuf, sizeof(inbuf), in) != NULL) {
+ while (get_next_line(inbuf, sizeof(inbuf), in) != NULL) {
line++;
- if (inbuf[0] == '#' || inbuf[0] == '\n')
+ if (inbuf[0] == '#' || inbuf[0] == '\n' || inbuf[0] == '\0')
continue; /* NOTE CONTINUE */
- inbuf[strlen(inbuf)-1] = '\0'; /* get rid of stupid \n */
+ if (inbuf[strlen(inbuf)-1] == '\n')
+ inbuf[strlen(inbuf)-1] = '\0'; /* get rid of stupid \n */
if (debug)
- fprintf(stdout, "%d:\n", line);
+ fprintf(stdout, "%d: <%s>\n", line, inbuf);
nf = split(inbuf, f, MAXF, (char*) "\t\t");
if (nf < 3) {
fprintf(stderr, "bad input, line %d\n", line);
=== renamed file 'regex/tests' => 'regex/tests_include.h'
--- a/regex/tests 2010-07-26 10:39:38 +0000
+++ b/regex/tests_include.h 2011-03-03 10:09:53 +0000
@@ -1,477 +1,482 @@
-# regular expression test set
-# Lines are at least three fields, separated by one or more tabs. "" stands
-# for an empty field. First field is an RE. Second field is flags. If
-# C flag given, regcomp() is expected to fail, and the third field is the
-# error name (minus the leading REG_).
-#
-# Otherwise it is expected to succeed, and the third field is the string to
-# try matching it against. If there is no fourth field, the match is
-# expected to fail. If there is a fourth field, it is the substring that
-# the RE is expected to match. If there is a fifth field, it is a comma-
-# separated list of what the subexpressions should match, with - indicating
-# no match for that one. In both the fourth and fifth fields, a (sub)field
-# starting with @ indicates that the (sub)expression is expected to match
-# a null string followed by the stuff after the @; this provides a way to
-# test where null strings match. The character `N' in REs and strings
-# is newline, `S' is space, `T' is tab, `Z' is NUL.
-#
-# The full list of flags:
-# - placeholder, does nothing
-# b RE is a BRE, not an ERE
-# & try it as both an ERE and a BRE
-# C regcomp() error expected, third field is error name
-# i REG_ICASE
-# m ("mundane") REG_NOSPEC
-# s REG_NOSUB (not really testable)
-# n REG_NEWLINE
-# ^ REG_NOTBOL
-# $ REG_NOTEOL
-# # REG_STARTEND (see below)
-# p REG_PEND
-#
-# For REG_STARTEND, the start/end offsets are those of the substring
-# enclosed in ().
-
-# basics
-a & a a
-abc & abc abc
-abc|de - abc abc
-a|b|c - abc a
-
-# parentheses and perversions thereof
-a(b)c - abc abc
-a\(b\)c b abc abc
-a( C EPAREN
-a( b a( a(
-a\( - a( a(
-a\( bC EPAREN
-a\(b bC EPAREN
-a(b C EPAREN
-a(b b a(b a(b
-# gag me with a right parenthesis -- 1003.2 goofed here (my fault, partly)
-a) - a) a)
-) - ) )
-# end gagging (in a just world, those *should* give EPAREN)
-a) b a) a)
-a\) bC EPAREN
-\) bC EPAREN
-a()b - ab ab
-a\(\)b b ab ab
-
-# anchoring and REG_NEWLINE
-^abc$ & abc abc
-a^b - a^b
-a^b b a^b a^b
-a$b - a$b
-a$b b a$b a$b
-^ & abc @abc
-$ & abc @
-^$ & "" @
-$^ - "" @
-\($\)\(^\) b "" @
-# stop retching, those are legitimate (although disgusting)
-^^ - "" @
-$$ - "" @
-b$ & abNc
-b$ &n abNc b
-^b$ & aNbNc
-^b$ &n aNbNc b
-^$ &n aNNb @Nb
-^$ n abc
-^$ n abcN @
-$^ n aNNb @Nb
-\($\)\(^\) bn aNNb @Nb
-^^ n^ aNNb @Nb
-$$ n aNNb @NN
-^a ^ a
-a$ $ a
-^a ^n aNb
-^b ^n aNb b
-a$ $n bNa
-b$ $n bNa b
-a*(^b$)c* - b b
-a*\(^b$\)c* b b b
-
-# certain syntax errors and non-errors
-| C EMPTY
-| b | |
-* C BADRPT
-* b * *
-+ C BADRPT
-? C BADRPT
-"" &C EMPTY
-() - abc @abc
-\(\) b abc @abc
-a||b C EMPTY
-|ab C EMPTY
-ab| C EMPTY
-(|a)b C EMPTY
-(a|)b C EMPTY
-(*a) C BADRPT
-(+a) C BADRPT
-(?a) C BADRPT
-({1}a) C BADRPT
-\(\{1\}a\) bC BADRPT
-(a|*b) C BADRPT
-(a|+b) C BADRPT
-(a|?b) C BADRPT
-(a|{1}b) C BADRPT
-^* C BADRPT
-^* b * *
-^+ C BADRPT
-^? C BADRPT
-^{1} C BADRPT
-^\{1\} bC BADRPT
-
-# metacharacters, backslashes
-a.c & abc abc
-a[bc]d & abd abd
-a\*c & a*c a*c
-a\\b & a\b a\b
-a\\\*b & a\*b a\*b
-a\bc & abc abc
-a\ &C EESCAPE
-a\\bc & a\bc a\bc
-\{ bC BADRPT
-a\[b & a[b a[b
-a[b &C EBRACK
-# trailing $ is a peculiar special case for the BRE code
-a$ & a a
-a$ & a$
-a\$ & a
-a\$ & a$ a$
-a\\$ & a
-a\\$ & a$
-a\\$ & a\$
-a\\$ & a\ a\
-
-# back references, ugh
-a\(b\)\2c bC ESUBREG
-a\(b\1\)c bC ESUBREG
-a\(b*\)c\1d b abbcbbd abbcbbd bb
-a\(b*\)c\1d b abbcbd
-a\(b*\)c\1d b abbcbbbd
-^\(.\)\1 b abc
-a\([bc]\)\1d b abcdabbd abbd b
-a\(\([bc]\)\2\)*d b abbccd abbccd
-a\(\([bc]\)\2\)*d b abbcbd
-# actually, this next one probably ought to fail, but the spec is unclear
-a\(\(b\)*\2\)*d b abbbd abbbd
-# here is a case that no NFA implementation does right
-\(ab*\)[ab]*\1 b ababaaa ababaaa a
-# check out normal matching in the presence of back refs
-\(a\)\1bcd b aabcd aabcd
-\(a\)\1bc*d b aabcd aabcd
-\(a\)\1bc*d b aabd aabd
-\(a\)\1bc*d b aabcccd aabcccd
-\(a\)\1bc*[ce]d b aabcccd aabcccd
-^\(a\)\1b\(c\)*cd$ b aabcccd aabcccd
-
-# ordinary repetitions
-ab*c & abc abc
-ab+c - abc abc
-ab?c - abc abc
-a\(*\)b b a*b a*b
-a\(**\)b b ab ab
-a\(***\)b bC BADRPT
-*a b *a *a
-**a b a a
-***a bC BADRPT
-
-# the dreaded bounded repetitions
-{ & { {
-{abc & {abc {abc
-{1 C BADRPT
-{1} C BADRPT
-a{b & a{b a{b
-a{1}b - ab ab
-a\{1\}b b ab ab
-a{1,}b - ab ab
-a\{1,\}b b ab ab
-a{1,2}b - aab aab
-a\{1,2\}b b aab aab
-a{1 C EBRACE
-a\{1 bC EBRACE
-a{1a C EBRACE
-a\{1a bC EBRACE
-a{1a} C BADBR
-a\{1a\} bC BADBR
-a{,2} - a{,2} a{,2}
-a\{,2\} bC BADBR
-a{,} - a{,} a{,}
-a\{,\} bC BADBR
-a{1,x} C BADBR
-a\{1,x\} bC BADBR
-a{1,x C EBRACE
-a\{1,x bC EBRACE
-a{300} C BADBR
-a\{300\} bC BADBR
-a{1,0} C BADBR
-a\{1,0\} bC BADBR
-ab{0,0}c - abcac ac
-ab\{0,0\}c b abcac ac
-ab{0,1}c - abcac abc
-ab\{0,1\}c b abcac abc
-ab{0,3}c - abbcac abbc
-ab\{0,3\}c b abbcac abbc
-ab{1,1}c - acabc abc
-ab\{1,1\}c b acabc abc
-ab{1,3}c - acabc abc
-ab\{1,3\}c b acabc abc
-ab{2,2}c - abcabbc abbc
-ab\{2,2\}c b abcabbc abbc
-ab{2,4}c - abcabbc abbc
-ab\{2,4\}c b abcabbc abbc
-((a{1,10}){1,10}){1,10} - a a a,a
-
-# multiple repetitions
-a** &C BADRPT
-a++ C BADRPT
-a?? C BADRPT
-a*+ C BADRPT
-a*? C BADRPT
-a+* C BADRPT
-a+? C BADRPT
-a?* C BADRPT
-a?+ C BADRPT
-a{1}{1} C BADRPT
-a*{1} C BADRPT
-a+{1} C BADRPT
-a?{1} C BADRPT
-a{1}* C BADRPT
-a{1}+ C BADRPT
-a{1}? C BADRPT
-a*{b} - a{b} a{b}
-a\{1\}\{1\} bC BADRPT
-a*\{1\} bC BADRPT
-a\{1\}* bC BADRPT
-
-# brackets, and numerous perversions thereof
-a[b]c & abc abc
-a[ab]c & abc abc
-a[^ab]c & adc adc
-a[]b]c & a]c a]c
-a[[b]c & a[c a[c
-a[-b]c & a-c a-c
-a[^]b]c & adc adc
-a[^-b]c & adc adc
-a[b-]c & a-c a-c
-a[b &C EBRACK
-a[] &C EBRACK
-a[1-3]c & a2c a2c
-a[3-1]c &C ERANGE
-a[1-3-5]c &C ERANGE
-a[[.-.]--]c & a-c a-c
-a[1- &C ERANGE
-a[[. &C EBRACK
-a[[.x &C EBRACK
-a[[.x. &C EBRACK
-a[[.x.] &C EBRACK
-a[[.x.]] & ax ax
-a[[.x,.]] &C ECOLLATE
-a[[.one.]]b & a1b a1b
-a[[.notdef.]]b &C ECOLLATE
-a[[.].]]b & a]b a]b
-a[[:notdef:]]c &C ECTYPE
-a[[: &C EBRACK
-a[[:alpha &C EBRACK
-a[[:alpha:] &C EBRACK
-a[[:alpha,:] &C ECTYPE
-a[[:]:]]b &C ECTYPE
-a[[:-:]]b &C ECTYPE
-a[[:alph:]] &C ECTYPE
-a[[:alphabet:]] &C ECTYPE
-[[:alnum:]]+ - -%@a�X- a�X
-[[:alpha:]]+ - -%@aX0- aX
-# ctype_latin1 does not tag '\t' as blank, so we will match only two spaces.
-# See: Bug #55427 REGEXP does not recognize '\t' as [:blank:]
-#[[:blank:]]+ - aSSTb SST
-[[:blank:]]+ - aSSTb SS
-[[:cntrl:]]+ - aNTb NT
-[[:digit:]]+ - a019b 019
-[[:graph:]]+ - Sa%bS a%b
-[[:lower:]]+ - AabC ab
-[[:print:]]+ - NaSbN aSb
-[[:punct:]]+ - S%-&T %-&
-[[:space:]]+ - aSNTb SNT
-[[:upper:]]+ - aBCd BC
-[[:xdigit:]]+ - p0f3Cq 0f3C
-a[[=b=]]c & abc abc
-a[[= &C EBRACK
-a[[=b &C EBRACK
-a[[=b= &C EBRACK
-a[[=b=] &C EBRACK
-a[[=b,=]] &C ECOLLATE
-a[[=one=]]b & a1b a1b
-
-# complexities
-a(((b)))c - abc abc
-a(b|(c))d - abd abd
-a(b*|c)d - abbd abbd
-# just gotta have one DFA-buster, of course
-a[ab]{20} - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab
-# and an inline expansion in case somebody gets tricky
-a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab
-# and in case somebody just slips in an NFA...
-a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night) - aaaaabaaaabaaaabaaaabweeknights aaaaabaaaabaaaabaaaabweeknights
-# fish for anomalies as the number of states passes 32
-12345678901234567890123456789 - a12345678901234567890123456789b 12345678901234567890123456789
-123456789012345678901234567890 - a123456789012345678901234567890b 123456789012345678901234567890
-1234567890123456789012345678901 - a1234567890123456789012345678901b 1234567890123456789012345678901
-12345678901234567890123456789012 - a12345678901234567890123456789012b 12345678901234567890123456789012
-123456789012345678901234567890123 - a123456789012345678901234567890123b 123456789012345678901234567890123
-# and one really big one, beyond any plausible word width
-1234567890123456789012345678901234567890123456789012345678901234567890 - a1234567890123456789012345678901234567890123456789012345678901234567890b 1234567890123456789012345678901234567890123456789012345678901234567890
-# fish for problems as brackets go past 8
-[ab][cd][ef][gh][ij][kl][mn] - xacegikmoq acegikm
-[ab][cd][ef][gh][ij][kl][mn][op] - xacegikmoq acegikmo
-[ab][cd][ef][gh][ij][kl][mn][op][qr] - xacegikmoqy acegikmoq
-[ab][cd][ef][gh][ij][kl][mn][op][q] - xacegikmoqy acegikmoq
-
-# subtleties of matching
-abc & xabcy abc
-a\(b\)?c\1d b acd
-aBc i Abc Abc
-a[Bc]*d i abBCcd abBCcd
-0[[:upper:]]1 &i 0a1 0a1
-0[[:lower:]]1 &i 0A1 0A1
-a[^b]c &i abc
-a[^b]c &i aBc
-a[^b]c &i adc adc
-[a]b[c] - abc abc
-[a]b[a] - aba aba
-[abc]b[abc] - abc abc
-[abc]b[abd] - abd abd
-a(b?c)+d - accd accd
-(wee|week)(knights|night) - weeknights weeknights
-(we|wee|week|frob)(knights|night|day) - weeknights weeknights
-a[bc]d - xyzaaabcaababdacd abd
-a[ab]c - aaabc abc
-abc s abc abc
-a* & b @b
-
-# Let's have some fun -- try to match a C comment.
-# first the obvious, which looks okay at first glance...
-/\*.*\*/ - /*x*/ /*x*/
-# but...
-/\*.*\*/ - /*x*/y/*z*/ /*x*/y/*z*/
-# okay, we must not match */ inside; try to do that...
-/\*([^*]|\*[^/])*\*/ - /*x*/ /*x*/
-/\*([^*]|\*[^/])*\*/ - /*x*/y/*z*/ /*x*/
-# but...
-/\*([^*]|\*[^/])*\*/ - /*x**/y/*z*/ /*x**/y/*z*/
-# and a still fancier version, which does it right (I think)...
-/\*([^*]|\*+[^*/])*\*+/ - /*x*/ /*x*/
-/\*([^*]|\*+[^*/])*\*+/ - /*x*/y/*z*/ /*x*/
-/\*([^*]|\*+[^*/])*\*+/ - /*x**/y/*z*/ /*x**/
-/\*([^*]|\*+[^*/])*\*+/ - /*x****/y/*z*/ /*x****/
-/\*([^*]|\*+[^*/])*\*+/ - /*x**x*/y/*z*/ /*x**x*/
-/\*([^*]|\*+[^*/])*\*+/ - /*x***x/y/*z*/ /*x***x/y/*z*/
-
-# subexpressions
-a(b)(c)d - abcd abcd b,c
-a(((b)))c - abc abc b,b,b
-a(b|(c))d - abd abd b,-
-a(b*|c|e)d - abbd abbd bb
-a(b*|c|e)d - acd acd c
-a(b*|c|e)d - ad ad @d
-a(b?)c - abc abc b
-a(b?)c - ac ac @c
-a(b+)c - abc abc b
-a(b+)c - abbbc abbbc bbb
-a(b*)c - ac ac @c
-(a|ab)(bc([de]+)f|cde) - abcdef abcdef a,bcdef,de
-# the regression tester only asks for 9 subexpressions
-a(b)(c)(d)(e)(f)(g)(h)(i)(j)k - abcdefghijk abcdefghijk b,c,d,e,f,g,h,i,j
-a(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l - abcdefghijkl abcdefghijkl b,c,d,e,f,g,h,i,j,k
-a([bc]?)c - abc abc b
-a([bc]?)c - ac ac @c
-a([bc]+)c - abc abc b
-a([bc]+)c - abcc abcc bc
-a([bc]+)bc - abcbc abcbc bc
-a(bb+|b)b - abb abb b
-a(bbb+|bb+|b)b - abb abb b
-a(bbb+|bb+|b)b - abbb abbb bb
-a(bbb+|bb+|b)bb - abbb abbb b
-(.*).* - abcdef abcdef abcdef
-(a*)* - bc @b @b
-
-# do we get the right subexpression when it is used more than once?
-a(b|c)*d - ad ad -
-a(b|c)*d - abcd abcd c
-a(b|c)+d - abd abd b
-a(b|c)+d - abcd abcd c
-a(b|c?)+d - ad ad @d
-a(b|c?)+d - abcd abcd @d
-a(b|c){0,0}d - ad ad -
-a(b|c){0,1}d - ad ad -
-a(b|c){0,1}d - abd abd b
-a(b|c){0,2}d - ad ad -
-a(b|c){0,2}d - abcd abcd c
-a(b|c){0,}d - ad ad -
-a(b|c){0,}d - abcd abcd c
-a(b|c){1,1}d - abd abd b
-a(b|c){1,1}d - acd acd c
-a(b|c){1,2}d - abd abd b
-a(b|c){1,2}d - abcd abcd c
-a(b|c){1,}d - abd abd b
-a(b|c){1,}d - abcd abcd c
-a(b|c){2,2}d - acbd acbd b
-a(b|c){2,2}d - abcd abcd c
-a(b|c){2,4}d - abcd abcd c
-a(b|c){2,4}d - abcbd abcbd b
-a(b|c){2,4}d - abcbcd abcbcd c
-a(b|c){2,}d - abcd abcd c
-a(b|c){2,}d - abcbd abcbd b
-a(b+|((c)*))+d - abd abd @d,@d,-
-a(b+|((c)*))+d - abcd abcd @d,@d,-
-
-# check out the STARTEND option
-[abc] &# a(b)c b
-[abc] &# a(d)c
-[abc] &# a(bc)d b
-[abc] &# a(dc)d c
-. &# a()c
-b.*c &# b(bc)c bc
-b.* &# b(bc)c bc
-.*c &# b(bc)c bc
-
-# plain strings, with the NOSPEC flag
-abc m abc abc
-abc m xabcy abc
-abc m xyz
-a*b m aba*b a*b
-a*b m ab
-"" mC EMPTY
-
-# cases involving NULs
-aZb & a a
-aZb &p a
-aZb &p# (aZb) aZb
-aZ*b &p# (ab) ab
-a.b &# (aZb) aZb
-a.* &# (aZb)c aZb
-
-# word boundaries (ick)
-[[:<:]]a & a a
-[[:<:]]a & ba
-[[:<:]]a & -a a
-a[[:>:]] & a a
-a[[:>:]] & ab
-a[[:>:]] & a- a
-[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc abc
-[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc-q abc
-[[:<:]]a.c[[:>:]] & axc-dayc-dazce-abc axc
-[[:<:]]b.c[[:>:]] & a_bxc-byc_d-bzc-q bzc
-[[:<:]].x..[[:>:]] & y_xa_-_xb_y-_xc_-axdc _xc_
-[[:<:]]a_b[[:>:]] & x_a_b
-
-# past problems, and suspected problems
-(A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A[7])|(A[8])|(A[9])|(A[A]) - A1 A1
-abcdefghijklmnop i abcdefghijklmnop abcdefghijklmnop
-abcdefghijklmnopqrstuv i abcdefghijklmnopqrstuv abcdefghijklmnopqrstuv
-(ALAK)|(ALT[AB])|(CC[123]1)|(CM[123]1)|(GAMC)|(LC[23][EO ])|(SEM[1234])|(SL[ES][12])|(SLWW)|(SLF )|(SLDT)|(VWH[12])|(WH[34][EW])|(WP1[ESN]) - CC11 CC11
-CC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a - CC11 CC11
-Char \([a-z0-9_]*\)\[.* b Char xyz[k Char xyz[k xyz
-a?b - ab ab
--\{0,1\}[0-9]*$ b -5 -5
+const char *test_array[] =
+{
+ "# regular expression test set",
+ "# Lines are at least three fields, separated by one or more tabs. \"\" stands",
+ "# for an empty field. First field is an RE. Second field is flags. If",
+ "# C flag given, regcomp() is expected to fail, and the third field is the",
+ "# error name (minus the leading REG_).",
+ "#",
+ "# Otherwise it is expected to succeed, and the third field is the string to",
+ "# try matching it against. If there is no fourth field, the match is",
+ "# expected to fail. If there is a fourth field, it is the substring that",
+ "# the RE is expected to match. If there is a fifth field, it is a comma-",
+ "# separated list of what the subexpressions should match, with - indicating",
+ "# no match for that one. In both the fourth and fifth fields, a (sub)field",
+ "# starting with @ indicates that the (sub)expression is expected to match",
+ "# a null string followed by the stuff after the @; this provides a way to",
+ "# test where null strings match. The character `N' in REs and strings",
+ "# is newline, `S' is space, `T' is tab, `Z' is NUL.",
+ "#",
+ "# The full list of flags:",
+ "# - placeholder, does nothing",
+ "# b RE is a BRE, not an ERE",
+ "# & try it as both an ERE and a BRE",
+ "# C regcomp() error expected, third field is error name",
+ "# i REG_ICASE",
+ "# m (\"mundane\") REG_NOSPEC",
+ "# s REG_NOSUB (not really testable)",
+ "# n REG_NEWLINE",
+ "# ^ REG_NOTBOL",
+ "# $ REG_NOTEOL",
+ "# # REG_STARTEND (see below)",
+ "# p REG_PEND",
+ "#",
+ "# For REG_STARTEND, the start/end offsets are those of the substring",
+ "# enclosed in ().",
+ "",
+ "# basics",
+ "a & a a",
+ "abc & abc abc",
+ "abc|de - abc abc",
+ "a|b|c - abc a",
+ "",
+ "# parentheses and perversions thereof",
+ "a(b)c - abc abc",
+ "a\\(b\\)c b abc abc",
+ "a( C EPAREN",
+ "a( b a( a(",
+ "a\\( - a( a(",
+ "a\\( bC EPAREN",
+ "a\\(b bC EPAREN",
+ "a(b C EPAREN",
+ "a(b b a(b a(b",
+ "# gag me with a right parenthesis -- 1003.2 goofed here (my fault, partly)",
+ "a) - a) a)",
+ ") - ) )",
+ "# end gagging (in a just world, those *should* give EPAREN)",
+ "a) b a) a)",
+ "a\\) bC EPAREN",
+ "\\) bC EPAREN",
+ "a()b - ab ab",
+ "a\\(\\)b b ab ab",
+ "",
+ "# anchoring and REG_NEWLINE",
+ "^abc$ & abc abc",
+ "a^b - a^b",
+ "a^b b a^b a^b",
+ "a$b - a$b",
+ "a$b b a$b a$b",
+ "^ & abc @abc",
+ "$ & abc @",
+ "^$ & \"\" @",
+ "$^ - \"\" @",
+ "\\($\\)\\(^\\) b \"\" @",
+ "# stop retching, those are legitimate (although disgusting)",
+ "^^ - \"\" @",
+ "$$ - \"\" @",
+ "b$ & abNc",
+ "b$ &n abNc b",
+ "^b$ & aNbNc",
+ "^b$ &n aNbNc b",
+ "^$ &n aNNb @Nb",
+ "^$ n abc",
+ "^$ n abcN @",
+ "$^ n aNNb @Nb",
+ "\\($\\)\\(^\\) bn aNNb @Nb",
+ "^^ n^ aNNb @Nb",
+ "$$ n aNNb @NN",
+ "^a ^ a",
+ "a$ $ a",
+ "^a ^n aNb",
+ "^b ^n aNb b",
+ "a$ $n bNa",
+ "b$ $n bNa b",
+ "a*(^b$)c* - b b",
+ "a*\\(^b$\\)c* b b b",
+ "",
+ "# certain syntax errors and non-errors",
+ "| C EMPTY",
+ "| b | |",
+ "* C BADRPT",
+ "* b * *",
+ "+ C BADRPT",
+ "? C BADRPT",
+ "\"\" &C EMPTY",
+ "() - abc @abc",
+ "\\(\\) b abc @abc",
+ "a||b C EMPTY",
+ "|ab C EMPTY",
+ "ab| C EMPTY",
+ "(|a)b C EMPTY",
+ "(a|)b C EMPTY",
+ "(*a) C BADRPT",
+ "(+a) C BADRPT",
+ "(?a) C BADRPT",
+ "({1}a) C BADRPT",
+ "\\(\\{1\\}a\\) bC BADRPT",
+ "(a|*b) C BADRPT",
+ "(a|+b) C BADRPT",
+ "(a|?b) C BADRPT",
+ "(a|{1}b) C BADRPT",
+ "^* C BADRPT",
+ "^* b * *",
+ "^+ C BADRPT",
+ "^? C BADRPT",
+ "^{1} C BADRPT",
+ "^\\{1\\} bC BADRPT",
+ "",
+ "# metacharacters, backslashes",
+ "a.c & abc abc",
+ "a[bc]d & abd abd",
+ "a\\*c & a*c a*c",
+ "a\\\\b & a\\b a\\b",
+ "a\\\\\\*b & a\\*b a\\*b",
+ "a\\bc & abc abc",
+ "a\\ &C EESCAPE",
+ "a\\\\bc & a\\bc a\\bc",
+ "\\{ bC BADRPT",
+ "a\\[b & a[b a[b",
+ "a[b &C EBRACK",
+ "# trailing $ is a peculiar special case for the BRE code",
+ "a$ & a a",
+ "a$ & a$",
+ "a\\$ & a",
+ "a\\$ & a$ a$",
+ "a\\\\$ & a",
+ "a\\\\$ & a$",
+ "a\\\\$ & a\\$",
+ "a\\\\$ & a\\ a\\",
+ "",
+ "# back references, ugh",
+ "a\\(b\\)\\2c bC ESUBREG",
+ "a\\(b\\1\\)c bC ESUBREG",
+ "a\\(b*\\)c\\1d b abbcbbd abbcbbd bb",
+ "a\\(b*\\)c\\1d b abbcbd",
+ "a\\(b*\\)c\\1d b abbcbbbd",
+ "^\\(.\\)\\1 b abc",
+ "a\\([bc]\\)\\1d b abcdabbd abbd b",
+ "a\\(\\([bc]\\)\\2\\)*d b abbccd abbccd",
+ "a\\(\\([bc]\\)\\2\\)*d b abbcbd",
+ "# actually, this next one probably ought to fail, but the spec is unclear",
+ "a\\(\\(b\\)*\\2\\)*d b abbbd abbbd",
+ "# here is a case that no NFA implementation does right",
+ "\\(ab*\\)[ab]*\\1 b ababaaa ababaaa a",
+ "# check out normal matching in the presence of back refs",
+ "\\(a\\)\\1bcd b aabcd aabcd",
+ "\\(a\\)\\1bc*d b aabcd aabcd",
+ "\\(a\\)\\1bc*d b aabd aabd",
+ "\\(a\\)\\1bc*d b aabcccd aabcccd",
+ "\\(a\\)\\1bc*[ce]d b aabcccd aabcccd",
+ "^\\(a\\)\\1b\\(c\\)*cd$ b aabcccd aabcccd",
+ "",
+ "# ordinary repetitions",
+ "ab*c & abc abc",
+ "ab+c - abc abc",
+ "ab?c - abc abc",
+ "a\\(*\\)b b a*b a*b",
+ "a\\(**\\)b b ab ab",
+ "a\\(***\\)b bC BADRPT",
+ "*a b *a *a",
+ "**a b a a",
+ "***a bC BADRPT",
+ "",
+ "# the dreaded bounded repetitions",
+ "{ & { {",
+ "{abc & {abc {abc",
+ "{1 C BADRPT",
+ "{1} C BADRPT",
+ "a{b & a{b a{b",
+ "a{1}b - ab ab",
+ "a\\{1\\}b b ab ab",
+ "a{1,}b - ab ab",
+ "a\\{1,\\}b b ab ab",
+ "a{1,2}b - aab aab",
+ "a\\{1,2\\}b b aab aab",
+ "a{1 C EBRACE",
+ "a\\{1 bC EBRACE",
+ "a{1a C EBRACE",
+ "a\\{1a bC EBRACE",
+ "a{1a} C BADBR",
+ "a\\{1a\\} bC BADBR",
+ "a{,2} - a{,2} a{,2}",
+ "a\\{,2\\} bC BADBR",
+ "a{,} - a{,} a{,}",
+ "a\\{,\\} bC BADBR",
+ "a{1,x} C BADBR",
+ "a\\{1,x\\} bC BADBR",
+ "a{1,x C EBRACE",
+ "a\\{1,x bC EBRACE",
+ "a{300} C BADBR",
+ "a\\{300\\} bC BADBR",
+ "a{1,0} C BADBR",
+ "a\\{1,0\\} bC BADBR",
+ "ab{0,0}c - abcac ac",
+ "ab\\{0,0\\}c b abcac ac",
+ "ab{0,1}c - abcac abc",
+ "ab\\{0,1\\}c b abcac abc",
+ "ab{0,3}c - abbcac abbc",
+ "ab\\{0,3\\}c b abbcac abbc",
+ "ab{1,1}c - acabc abc",
+ "ab\\{1,1\\}c b acabc abc",
+ "ab{1,3}c - acabc abc",
+ "ab\\{1,3\\}c b acabc abc",
+ "ab{2,2}c - abcabbc abbc",
+ "ab\\{2,2\\}c b abcabbc abbc",
+ "ab{2,4}c - abcabbc abbc",
+ "ab\\{2,4\\}c b abcabbc abbc",
+ "((a{1,10}){1,10}){1,10} - a a a,a",
+ "",
+ "# multiple repetitions",
+ "a** &C BADRPT",
+ "a++ C BADRPT",
+ "a?? C BADRPT",
+ "a*+ C BADRPT",
+ "a*? C BADRPT",
+ "a+* C BADRPT",
+ "a+? C BADRPT",
+ "a?* C BADRPT",
+ "a?+ C BADRPT",
+ "a{1}{1} C BADRPT",
+ "a*{1} C BADRPT",
+ "a+{1} C BADRPT",
+ "a?{1} C BADRPT",
+ "a{1}* C BADRPT",
+ "a{1}+ C BADRPT",
+ "a{1}? C BADRPT",
+ "a*{b} - a{b} a{b}",
+ "a\\{1\\}\\{1\\} bC BADRPT",
+ "a*\\{1\\} bC BADRPT",
+ "a\\{1\\}* bC BADRPT",
+ "",
+ "# brackets, and numerous perversions thereof",
+ "a[b]c & abc abc",
+ "a[ab]c & abc abc",
+ "a[^ab]c & adc adc",
+ "a[]b]c & a]c a]c",
+ "a[[b]c & a[c a[c",
+ "a[-b]c & a-c a-c",
+ "a[^]b]c & adc adc",
+ "a[^-b]c & adc adc",
+ "a[b-]c & a-c a-c",
+ "a[b &C EBRACK",
+ "a[] &C EBRACK",
+ "a[1-3]c & a2c a2c",
+ "a[3-1]c &C ERANGE",
+ "a[1-3-5]c &C ERANGE",
+ "a[[.-.]--]c & a-c a-c",
+ "a[1- &C ERANGE",
+ "a[[. &C EBRACK",
+ "a[[.x &C EBRACK",
+ "a[[.x. &C EBRACK",
+ "a[[.x.] &C EBRACK",
+ "a[[.x.]] & ax ax",
+ "a[[.x,.]] &C ECOLLATE",
+ "a[[.one.]]b & a1b a1b",
+ "a[[.notdef.]]b &C ECOLLATE",
+ "a[[.].]]b & a]b a]b",
+ "a[[:notdef:]]c &C ECTYPE",
+ "a[[: &C EBRACK",
+ "a[[:alpha &C EBRACK",
+ "a[[:alpha:] &C EBRACK",
+ "a[[:alpha,:] &C ECTYPE",
+ "a[[:]:]]b &C ECTYPE",
+ "a[[:-:]]b &C ECTYPE",
+ "a[[:alph:]] &C ECTYPE",
+ "a[[:alphabet:]] &C ECTYPE",
+ "[[:alnum:]]+ - -%@a5X- a5X",
+ "[[:alpha:]]+ - -%@aX0- aX",
+ "# ctype_latin1 does not tag '\\t' as blank, so we will match only two spaces.",
+ "# See: Bug #55427 REGEXP does not recognize '\\t' as [:blank:]",
+ "#[[:blank:]]+ - aSSTb SST",
+ "[[:blank:]]+ - aSSTb SS",
+ "[[:cntrl:]]+ - aNTb NT",
+ "[[:digit:]]+ - a019b 019",
+ "[[:graph:]]+ - Sa%bS a%b",
+ "[[:lower:]]+ - AabC ab",
+ "[[:print:]]+ - NaSbN aSb",
+ "[[:punct:]]+ - S%-&T %-&",
+ "[[:space:]]+ - aSNTb SNT",
+ "[[:upper:]]+ - aBCd BC",
+ "[[:xdigit:]]+ - p0f3Cq 0f3C",
+ "a[[=b=]]c & abc abc",
+ "a[[= &C EBRACK",
+ "a[[=b &C EBRACK",
+ "a[[=b= &C EBRACK",
+ "a[[=b=] &C EBRACK",
+ "a[[=b,=]] &C ECOLLATE",
+ "a[[=one=]]b & a1b a1b",
+ "",
+ "# complexities",
+ "a(((b)))c - abc abc",
+ "a(b|(c))d - abd abd",
+ "a(b*|c)d - abbd abbd",
+ "# just gotta have one DFA-buster, of course",
+ "a[ab]{20} - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab",
+ "# and an inline expansion in case somebody gets tricky",
+ "a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab",
+ "# and in case somebody just slips in an NFA...",
+ "a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night) - aaaaabaaaabaaaabaaaabweeknights aaaaabaaaabaaaabaaaabweeknights",
+ "# fish for anomalies as the number of states passes 32",
+ "12345678901234567890123456789 - a12345678901234567890123456789b 12345678901234567890123456789",
+ "123456789012345678901234567890 - a123456789012345678901234567890b 123456789012345678901234567890",
+ "1234567890123456789012345678901 - a1234567890123456789012345678901b 1234567890123456789012345678901",
+ "12345678901234567890123456789012 - a12345678901234567890123456789012b 12345678901234567890123456789012",
+ "123456789012345678901234567890123 - a123456789012345678901234567890123b 123456789012345678901234567890123",
+ "# and one really big one, beyond any plausible word width",
+ "1234567890123456789012345678901234567890123456789012345678901234567890 - a1234567890123456789012345678901234567890123456789012345678901234567890b 1234567890123456789012345678901234567890123456789012345678901234567890",
+ "# fish for problems as brackets go past 8",
+ "[ab][cd][ef][gh][ij][kl][mn] - xacegikmoq acegikm",
+ "[ab][cd][ef][gh][ij][kl][mn][op] - xacegikmoq acegikmo",
+ "[ab][cd][ef][gh][ij][kl][mn][op][qr] - xacegikmoqy acegikmoq",
+ "[ab][cd][ef][gh][ij][kl][mn][op][q] - xacegikmoqy acegikmoq",
+ "",
+ "# subtleties of matching",
+ "abc & xabcy abc",
+ "a\\(b\\)?c\\1d b acd",
+ "aBc i Abc Abc",
+ "a[Bc]*d i abBCcd abBCcd",
+ "0[[:upper:]]1 &i 0a1 0a1",
+ "0[[:lower:]]1 &i 0A1 0A1",
+ "a[^b]c &i abc",
+ "a[^b]c &i aBc",
+ "a[^b]c &i adc adc",
+ "[a]b[c] - abc abc",
+ "[a]b[a] - aba aba",
+ "[abc]b[abc] - abc abc",
+ "[abc]b[abd] - abd abd",
+ "a(b?c)+d - accd accd",
+ "(wee|week)(knights|night) - weeknights weeknights",
+ "(we|wee|week|frob)(knights|night|day) - weeknights weeknights",
+ "a[bc]d - xyzaaabcaababdacd abd",
+ "a[ab]c - aaabc abc",
+ "abc s abc abc",
+ "a* & b @b",
+ "",
+ "# Let's have some fun -- try to match a C comment.",
+ "# first the obvious, which looks okay at first glance...",
+ "/\\*.*\\*/ - /*x*/ /*x*/",
+ "# but...",
+ "/\\*.*\\*/ - /*x*/y/*z*/ /*x*/y/*z*/",
+ "# okay, we must not match */ inside; try to do that...",
+ "/\\*([^*]|\\*[^/])*\\*/ - /*x*/ /*x*/",
+ "/\\*([^*]|\\*[^/])*\\*/ - /*x*/y/*z*/ /*x*/",
+ "# but...",
+ "/\\*([^*]|\\*[^/])*\\*/ - /*x**/y/*z*/ /*x**/y/*z*/",
+ "# and a still fancier version, which does it right (I think)...",
+ "/\\*([^*]|\\*+[^*/])*\\*+/ - /*x*/ /*x*/",
+ "/\\*([^*]|\\*+[^*/])*\\*+/ - /*x*/y/*z*/ /*x*/",
+ "/\\*([^*]|\\*+[^*/])*\\*+/ - /*x**/y/*z*/ /*x**/",
+ "/\\*([^*]|\\*+[^*/])*\\*+/ - /*x****/y/*z*/ /*x****/",
+ "/\\*([^*]|\\*+[^*/])*\\*+/ - /*x**x*/y/*z*/ /*x**x*/",
+ "/\\*([^*]|\\*+[^*/])*\\*+/ - /*x***x/y/*z*/ /*x***x/y/*z*/",
+ "",
+ "# subexpressions",
+ "a(b)(c)d - abcd abcd b,c",
+ "a(((b)))c - abc abc b,b,b",
+ "a(b|(c))d - abd abd b,-",
+ "a(b*|c|e)d - abbd abbd bb",
+ "a(b*|c|e)d - acd acd c",
+ "a(b*|c|e)d - ad ad @d",
+ "a(b?)c - abc abc b",
+ "a(b?)c - ac ac @c",
+ "a(b+)c - abc abc b",
+ "a(b+)c - abbbc abbbc bbb",
+ "a(b*)c - ac ac @c",
+ "(a|ab)(bc([de]+)f|cde) - abcdef abcdef a,bcdef,de",
+ "# the regression tester only asks for 9 subexpressions",
+ "a(b)(c)(d)(e)(f)(g)(h)(i)(j)k - abcdefghijk abcdefghijk b,c,d,e,f,g,h,i,j",
+ "a(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l - abcdefghijkl abcdefghijkl b,c,d,e,f,g,h,i,j,k",
+ "a([bc]?)c - abc abc b",
+ "a([bc]?)c - ac ac @c",
+ "a([bc]+)c - abc abc b",
+ "a([bc]+)c - abcc abcc bc",
+ "a([bc]+)bc - abcbc abcbc bc",
+ "a(bb+|b)b - abb abb b",
+ "a(bbb+|bb+|b)b - abb abb b",
+ "a(bbb+|bb+|b)b - abbb abbb bb",
+ "a(bbb+|bb+|b)bb - abbb abbb b",
+ "(.*).* - abcdef abcdef abcdef",
+ "(a*)* - bc @b @b",
+ "",
+ "# do we get the right subexpression when it is used more than once?",
+ "a(b|c)*d - ad ad -",
+ "a(b|c)*d - abcd abcd c",
+ "a(b|c)+d - abd abd b",
+ "a(b|c)+d - abcd abcd c",
+ "a(b|c?)+d - ad ad @d",
+ "a(b|c?)+d - abcd abcd @d",
+ "a(b|c){0,0}d - ad ad -",
+ "a(b|c){0,1}d - ad ad -",
+ "a(b|c){0,1}d - abd abd b",
+ "a(b|c){0,2}d - ad ad -",
+ "a(b|c){0,2}d - abcd abcd c",
+ "a(b|c){0,}d - ad ad -",
+ "a(b|c){0,}d - abcd abcd c",
+ "a(b|c){1,1}d - abd abd b",
+ "a(b|c){1,1}d - acd acd c",
+ "a(b|c){1,2}d - abd abd b",
+ "a(b|c){1,2}d - abcd abcd c",
+ "a(b|c){1,}d - abd abd b",
+ "a(b|c){1,}d - abcd abcd c",
+ "a(b|c){2,2}d - acbd acbd b",
+ "a(b|c){2,2}d - abcd abcd c",
+ "a(b|c){2,4}d - abcd abcd c",
+ "a(b|c){2,4}d - abcbd abcbd b",
+ "a(b|c){2,4}d - abcbcd abcbcd c",
+ "a(b|c){2,}d - abcd abcd c",
+ "a(b|c){2,}d - abcbd abcbd b",
+ "a(b+|((c)*))+d - abd abd @d,@d,-",
+ "a(b+|((c)*))+d - abcd abcd @d,@d,-",
+ "",
+ "# check out the STARTEND option",
+ "[abc] &# a(b)c b",
+ "[abc] &# a(d)c",
+ "[abc] &# a(bc)d b",
+ "[abc] &# a(dc)d c",
+ ". &# a()c",
+ "b.*c &# b(bc)c bc",
+ "b.* &# b(bc)c bc",
+ ".*c &# b(bc)c bc",
+ "",
+ "# plain strings, with the NOSPEC flag",
+ "abc m abc abc",
+ "abc m xabcy abc",
+ "abc m xyz",
+ "a*b m aba*b a*b",
+ "a*b m ab",
+ "\"\" mC EMPTY",
+ "",
+ "# cases involving NULs",
+ "aZb & a a",
+ "aZb &p a",
+ "aZb &p# (aZb) aZb",
+ "aZ*b &p# (ab) ab",
+ "a.b &# (aZb) aZb",
+ "a.* &# (aZb)c aZb",
+ "",
+ "# word boundaries (ick)",
+ "[[:<:]]a & a a",
+ "[[:<:]]a & ba",
+ "[[:<:]]a & -a a",
+ "a[[:>:]] & a a",
+ "a[[:>:]] & ab",
+ "a[[:>:]] & a- a",
+ "[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc abc",
+ "[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc-q abc",
+ "[[:<:]]a.c[[:>:]] & axc-dayc-dazce-abc axc",
+ "[[:<:]]b.c[[:>:]] & a_bxc-byc_d-bzc-q bzc",
+ "[[:<:]].x..[[:>:]] & y_xa_-_xb_y-_xc_-axdc _xc_",
+ "[[:<:]]a_b[[:>:]] & x_a_b",
+ "",
+ "# past problems, and suspected problems",
+ "(A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A[7])|(A[8])|(A[9])|(A[A]) - A1 A1",
+ "abcdefghijklmnop i abcdefghijklmnop abcdefghijklmnop",
+ "abcdefghijklmnopqrstuv i abcdefghijklmnopqrstuv abcdefghijklmnopqrstuv",
+ "(ALAK)|(ALT[AB])|(CC[123]1)|(CM[123]1)|(GAMC)|(LC[23][EO ])|(SEM[1234])|(SL[ES][12])|(SLWW)|(SLF )|(SLDT)|(VWH[12])|(WH[34][EW])|(WP1[ESN]) - CC11 CC11",
+ "CC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a - CC11 CC11",
+ "Char \\([a-z0-9_]*\\)\\[.* b Char xyz[k Char xyz[k xyz",
+ "a?b - ab ab",
+ "-\\{0,1\\}[0-9]*$ b -5 -5",
+ "",
+ NULL
+};
=== modified file 'unittest/mysys/my_vsnprintf-t.c'
--- a/unittest/mysys/my_vsnprintf-t.c 2010-09-15 11:33:22 +0000
+++ b/unittest/mysys/my_vsnprintf-t.c 2011-03-02 09:16:34 +0000
@@ -110,8 +110,11 @@ int main(void)
test1("Positional arguments octal: <7777>",
"Positional arguments octal: <%1$o>", 07777);
+ /* Can't use int arguments, as they may be different size from pointers */
+
test1("Padding and %p <0x12> <0x034> <0x0000ab> < 0xcd>",
- "Padding and %%p <%04p> <%05p> <%08p> <%8p>", 0x12, 0x34, 0xab, 0xcd);
+ "Padding and %%p <%04p> <%05p> <%08p> <%8p>",
+ (void*) 0x12, (void*) 0x34, (void*) 0xab, (void*) 0xcd);
test1("F with a width (ignored) and precision: <12.34568>",
"F with a width (ignored) and precision: <%10.5f>", 12.3456789);
No bundle (reason: revision is a merge).| Thread |
|---|
| • bzr commit into mysql-trunk branch (bjorn.munch:3752) | Bjorn Munch | 11 Mar |