Commit d6df320d authored by Bjorn Munch's avatar Bjorn Munch

merge from 5.5-mtr

parents 8d7ea40b a6bd3ba9
...@@ -5684,6 +5684,17 @@ void do_block(enum block_cmd cmd, struct st_command* command) ...@@ -5684,6 +5684,17 @@ void do_block(enum block_cmd cmd, struct st_command* command)
while (my_isspace(charset_info, *curr_ptr)) while (my_isspace(charset_info, *curr_ptr))
curr_ptr++; curr_ptr++;
/* Strip off trailing white space */
while (my_isspace(charset_info, expr_end[-1]))
expr_end--;
/* strip off ' or " around the string */
if (*curr_ptr == '\'' || *curr_ptr == '"')
{
if (expr_end[-1] != *curr_ptr)
die("Unterminated string value");
curr_ptr++;
expr_end--;
}
VAR v2; VAR v2;
var_init(&v2,0,0,0,0); var_init(&v2,0,0,0,0);
eval_expr(&v2, curr_ptr, &expr_end); eval_expr(&v2, curr_ptr, &expr_end);
......
...@@ -53,9 +53,7 @@ source include/wait_for_slave_to_start.inc; ...@@ -53,9 +53,7 @@ source include/wait_for_slave_to_start.inc;
connection master; connection master;
# Write file to make mysql-test-run.pl expect the "crash", but don't start # Write file to make mysql-test-run.pl expect the "crash", but don't start
# it until it's told to # it until it's told to
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
# Send shutdown to the connected server and give # Send shutdown to the connected server and give
# it 10 seconds to die before zapping it # it 10 seconds to die before zapping it
...@@ -85,9 +83,7 @@ source include/wait_for_slave_io_error.inc; ...@@ -85,9 +83,7 @@ source include/wait_for_slave_io_error.inc;
eval set @@global.debug = "-d,$dbug_sync_point"; eval set @@global.debug = "-d,$dbug_sync_point";
# Write file to make mysql-test-run.pl start up the server again # Write file to make mysql-test-run.pl start up the server again
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
connection master; connection master;
# Turn on reconnect # Turn on reconnect
......
...@@ -36,8 +36,8 @@ let $ddl_cases= 41; ...@@ -36,8 +36,8 @@ let $ddl_cases= 41;
while ($ddl_cases >= 1) while ($ddl_cases >= 1)
{ {
--echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b- --echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
let $in_temporary= "no"; let $in_temporary= no;
let $ok= "yes"; let $ok= yes;
# #
# In SBR and MIXED modes, the commit event is usually the third event in the # In SBR and MIXED modes, the commit event is usually the third event in the
# binary log: # binary log:
...@@ -91,7 +91,7 @@ while ($ddl_cases >= 1) ...@@ -91,7 +91,7 @@ while ($ddl_cases >= 1)
{ {
# This seems to be related to epochs. # This seems to be related to epochs.
# We need to check this against an updated version or avoid it. # We need to check this against an updated version or avoid it.
let $ok= "no"; let $ok= no;
let $commit_event_row_number= 6; let $commit_event_row_number= 6;
} }
} }
...@@ -356,7 +356,7 @@ while ($ddl_cases >= 1) ...@@ -356,7 +356,7 @@ while ($ddl_cases >= 1)
if ($ddl_cases == 11) if ($ddl_cases == 11)
{ {
let $cmd= CREATE TEMPORARY TABLE tt_xx (a int); let $cmd= CREATE TEMPORARY TABLE tt_xx (a int);
let $in_temporary= "yes"; let $in_temporary= yes;
# In SBR and MIXED modes, the DDL statement is written to the binary log but # In SBR and MIXED modes, the DDL statement is written to the binary log but
# does not commit the current transaction. # does not commit the current transaction.
# #
...@@ -478,7 +478,7 @@ while ($ddl_cases >= 1) ...@@ -478,7 +478,7 @@ while ($ddl_cases >= 1)
if ($ddl_cases == 8) if ($ddl_cases == 8)
{ {
let $cmd= DROP TEMPORARY TABLE IF EXISTS new_tt_xx; let $cmd= DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
let $in_temporary= "yes"; let $in_temporary= yes;
# #
# In SBR and MIXED modes, the DDL statement is written to the binary log # In SBR and MIXED modes, the DDL statement is written to the binary log
# but does not commit the current transaction: # but does not commit the current transaction:
...@@ -618,14 +618,14 @@ while ($ddl_cases >= 1) ...@@ -618,14 +618,14 @@ while ($ddl_cases >= 1)
# commit. The flag in_temporary is used to avoid aborting the test in such # commit. The flag in_temporary is used to avoid aborting the test in such
# cases. Thus we force the commit. # cases. Thus we force the commit.
# #
if ($in_temporary == "yes") if ($in_temporary == yes)
{ {
--eval COMMIT --eval COMMIT
} }
let $event_commit= query_get_value("SHOW BINLOG EVENTS FROM $first_binlog_position", Info, $commit_event_row_number); let $event_commit= query_get_value("SHOW BINLOG EVENTS FROM $first_binlog_position", Info, $commit_event_row_number);
if (`SELECT SUBSTRING("$event_commit",1,6) != "COMMIT"`) if (`SELECT SUBSTRING("$event_commit",1,6) != "COMMIT"`)
{ {
if ($ok == "yes") if ($ok == yes)
{ {
--echo it *does not* commit the current transaction. --echo it *does not* commit the current transaction.
--echo $cmd --echo $cmd
......
# Write file to make mysql-test-run.pl expect the "crash", but don't start # Write file to make mysql-test-run.pl expect the "crash", but don't start
# it until it's told to # it until it's told to
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
# Send shutdown to the connected server and give # Send shutdown to the connected server and give
# it 10 seconds to die before zapping it # it 10 seconds to die before zapping it
shutdown_server 10; shutdown_server 10;
# Write file to make mysql-test-run.pl start up the server again # Write file to make mysql-test-run.pl start up the server again
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
# Turn on reconnect # Turn on reconnect
--enable_reconnect --enable_reconnect
......
...@@ -150,7 +150,7 @@ sub collect_test_cases ($$$$) { ...@@ -150,7 +150,7 @@ sub collect_test_cases ($$$$) {
{ {
last unless $opt_reorder; last unless $opt_reorder;
# test->{name} is always in suite.name format # test->{name} is always in suite.name format
if ( $test->{name} =~ /.*\.$tname/ ) if ( $test->{name} =~ /^$sname.*\.$tname$/ )
{ {
$found= 1; $found= 1;
last; last;
......
...@@ -607,7 +607,10 @@ sub run_test_server ($$$) { ...@@ -607,7 +607,10 @@ sub run_test_server ($$$) {
if ( !$opt_force ) { if ( !$opt_force ) {
# Test has failed, force is off # Test has failed, force is off
push(@$completed, $result); push(@$completed, $result);
return $completed; return $completed unless $result->{'dont_kill_server'};
# Prevent kill of server, to get valgrind report
print $sock "BYE\n";
next;
} }
elsif ($opt_max_test_fail > 0 and elsif ($opt_max_test_fail > 0 and
$num_failed_test >= $opt_max_test_fail) { $num_failed_test >= $opt_max_test_fail) {
...@@ -854,15 +857,16 @@ sub run_worker ($) { ...@@ -854,15 +857,16 @@ sub run_worker ($) {
mtr_report("Server said BYE"); mtr_report("Server said BYE");
stop_all_servers($opt_shutdown_timeout); stop_all_servers($opt_shutdown_timeout);
mark_time_used('restart'); mark_time_used('restart');
my $valgrind_reports= 0;
if ($opt_valgrind_mysqld) { if ($opt_valgrind_mysqld) {
valgrind_exit_reports(); $valgrind_reports= valgrind_exit_reports();
} }
if ( $opt_gprof ) { if ( $opt_gprof ) {
gprof_collect (find_mysqld($basedir), keys %gprof_dirs); gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
} }
mark_time_used('init'); mark_time_used('init');
print_times_used($server, $thread_num); print_times_used($server, $thread_num);
exit(0); exit($valgrind_reports);
} }
else { else {
mtr_error("Could not understand server, '$line'"); mtr_error("Could not understand server, '$line'");
...@@ -3846,7 +3850,6 @@ sub run_testcase ($) { ...@@ -3846,7 +3850,6 @@ sub run_testcase ($) {
# ---------------------------------------------------- # ----------------------------------------------------
# Check if it was an expected crash # Check if it was an expected crash
# ---------------------------------------------------- # ----------------------------------------------------
SRVDIED:
my $check_crash = check_expected_crash_and_restart($proc); my $check_crash = check_expected_crash_and_restart($proc);
if ($check_crash) if ($check_crash)
{ {
...@@ -3856,6 +3859,7 @@ sub run_testcase ($) { ...@@ -3856,6 +3859,7 @@ sub run_testcase ($) {
next; next;
} }
SRVDIED:
# ---------------------------------------------------- # ----------------------------------------------------
# Stop the test case timer # Stop the test case timer
# ---------------------------------------------------- # ----------------------------------------------------
...@@ -4386,7 +4390,12 @@ sub after_failure ($) { ...@@ -4386,7 +4390,12 @@ sub after_failure ($) {
sub report_failure_and_restart ($) { sub report_failure_and_restart ($) {
my $tinfo= shift; my $tinfo= shift;
stop_all_servers(); if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'})) {
# In these cases we may want valgrind report from normal termination
$tinfo->{'dont_kill_server'}= 1;
}
# Shotdown properly if not to be killed (for valgrind)
stop_all_servers($tinfo->{'dont_kill_server'} ? $opt_shutdown_timeout : 0);
$tinfo->{'result'}= 'MTR_RES_FAILED'; $tinfo->{'result'}= 'MTR_RES_FAILED';
...@@ -5526,6 +5535,8 @@ sub valgrind_arguments { ...@@ -5526,6 +5535,8 @@ sub valgrind_arguments {
# #
sub valgrind_exit_reports() { sub valgrind_exit_reports() {
my $found_err= 0;
foreach my $log_file (keys %mysqld_logs) foreach my $log_file (keys %mysqld_logs)
{ {
my @culprits= (); my @culprits= ();
...@@ -5561,7 +5572,7 @@ sub valgrind_exit_reports() { ...@@ -5561,7 +5572,7 @@ sub valgrind_exit_reports() {
next; next;
} }
# This line marks the start of a valgrind report # This line marks the start of a valgrind report
$found_report= 1 if $line =~ /ERROR SUMMARY:/; $found_report= 1 if $line =~ /^==\d+== .* SUMMARY:/;
if ($found_report) { if ($found_report) {
$line=~ s/^==\d+== //; $line=~ s/^==\d+== //;
...@@ -5578,8 +5589,11 @@ sub valgrind_exit_reports() { ...@@ -5578,8 +5589,11 @@ sub valgrind_exit_reports() {
mtr_print ("Valgrind report from $log_file after tests:\n", @culprits); mtr_print ("Valgrind report from $log_file after tests:\n", @culprits);
mtr_print_line(); mtr_print_line();
print ("$valgrind_rep\n"); print ("$valgrind_rep\n");
$found_err= 1;
} }
} }
return $found_err;
} }
# #
......
...@@ -423,7 +423,10 @@ while with string, only once ...@@ -423,7 +423,10 @@ while with string, only once
hello == hello hello == hello
hello == hello hello == hello
hello != goodbye hello != goodbye
'quoted' == ''quoted''
two words two words
'two words'
"two words"
two words are two words two words are two words
right answer right answer
anything goes anything goes
......
...@@ -38,9 +38,7 @@ RESET MASTER; ...@@ -38,9 +38,7 @@ RESET MASTER;
########## ##########
# 1. Stop master server # 1. Stop master server
-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -- exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
-- shutdown_server 10 -- shutdown_server 10
-- source include/wait_until_disconnected.inc -- source include/wait_until_disconnected.inc
...@@ -52,9 +50,7 @@ master-bin.2147483646 ...@@ -52,9 +50,7 @@ master-bin.2147483646
EOF EOF
# 3. Restart the server # 3. Restart the server
-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -- exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
-- enable_reconnect -- enable_reconnect
-- source include/wait_until_connected_again.inc -- source include/wait_until_connected_again.inc
...@@ -70,9 +66,7 @@ FLUSH LOGS; ...@@ -70,9 +66,7 @@ FLUSH LOGS;
############## ##############
# 1. Stop the server # 1. Stop the server
-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -- exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
-- shutdown_server 10 -- shutdown_server 10
-- source include/wait_until_disconnected.inc -- source include/wait_until_disconnected.inc
...@@ -85,8 +79,6 @@ EOF ...@@ -85,8 +79,6 @@ EOF
-- remove_file $MYSQLD_DATADIR/master-bin.2147483647 -- remove_file $MYSQLD_DATADIR/master-bin.2147483647
# 3. Restart the server # 3. Restart the server
-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect -- exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
-- enable_reconnect -- enable_reconnect
-- source include/wait_until_connected_again.inc -- source include/wait_until_connected_again.inc
...@@ -153,15 +153,11 @@ SET @@global.slave_net_timeout=50; ...@@ -153,15 +153,11 @@ SET @@global.slave_net_timeout=50;
--enable_warnings --enable_warnings
--replace_result $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=30; eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=30;
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
wait
EOF
--echo Reload slave --echo Reload slave
--shutdown_server 10 --shutdown_server 10
--source include/wait_until_disconnected.inc --source include/wait_until_disconnected.inc
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
restart
EOF
--enable_reconnect --enable_reconnect
--source include/wait_until_connected_again.inc --source include/wait_until_connected_again.inc
SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period'; SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
...@@ -456,15 +452,11 @@ let $status_var_comparsion= >; ...@@ -456,15 +452,11 @@ let $status_var_comparsion= >;
--source include/wait_for_status_var.inc --source include/wait_for_status_var.inc
--echo Heartbeat event received --echo Heartbeat event received
--connection master --connection master
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
--echo Reload master --echo Reload master
--shutdown_server 10 --shutdown_server 10
--source include/wait_until_disconnected.inc --source include/wait_until_disconnected.inc
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
--enable_reconnect --enable_reconnect
--source include/wait_until_connected_again.inc --source include/wait_until_connected_again.inc
--connection slave --connection slave
......
...@@ -315,9 +315,7 @@ FLUSH LOGS; ...@@ -315,9 +315,7 @@ FLUSH LOGS;
# Stop master server # Stop master server
--echo --> Stop master server --echo --> Stop master server
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
--shutdown_server 10 --shutdown_server 10
--source include/wait_until_disconnected.inc --source include/wait_until_disconnected.inc
# Replace binlog # Replace binlog
...@@ -325,9 +323,7 @@ remove_file $MYSQLD_DATADIR/master-bin.000001; ...@@ -325,9 +323,7 @@ remove_file $MYSQLD_DATADIR/master-bin.000001;
copy_file $MYSQL_TEST_DIR/std_data/bug16266.000001 $MYSQLD_DATADIR/master-bin.000001; copy_file $MYSQL_TEST_DIR/std_data/bug16266.000001 $MYSQLD_DATADIR/master-bin.000001;
--echo --> Start master server --echo --> Start master server
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
--enable_reconnect --enable_reconnect
--source include/wait_until_connected_again.inc --source include/wait_until_connected_again.inc
let $binlog_version= query_get_value(SHOW BINLOG EVENTS, Info, 1); let $binlog_version= query_get_value(SHOW BINLOG EVENTS, Info, 1);
......
...@@ -1276,12 +1276,24 @@ if ($ifvar != goodbye) ...@@ -1276,12 +1276,24 @@ if ($ifvar != goodbye)
{ {
echo hello != goodbye; echo hello != goodbye;
} }
let $ifvar= 'quoted';
if ($ifvar == ''quoted'')
{
echo 'quoted' == ''quoted'';
}
let $ifvar= two words; let $ifvar= two words;
if ($ifvar == two words) if ($ifvar == two words)
{ {
echo two words; echo two words;
} }
if ($ifvar == 'two words')
{
echo 'two words';
}
if ($ifvar == "two words")
{
echo "two words";
}
if ($ifvar == `SELECT 'two words'`) if ($ifvar == `SELECT 'two words'`)
{ {
echo two words are two words; echo two words are two words;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment