From: Bjorn Munch Date: September 10 2010 9:56am Subject: bzr push into mysql-5.5-merge branch (bjorn.munch:3198 to 3200) List-Archive: http://lists.mysql.com/commits/117989 Message-Id: <201009100956.o8A9udDu028458@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0186851357==" --===============0186851357== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3200 Bjorn Munch 2010-09-10 [merge] null upmerge 3199 Bjorn Munch 2010-09-10 [merge] merge 55178,55413,56383 modified: client/mysqltest.cc mysql-test/lib/mtr_cases.pm mysql-test/mysql-test-run.pl mysql-test/r/mysqltest.result mysql-test/t/mysqltest.test 3198 Alexey Kopytov 2010-09-09 [merge] Manual merge of the fix for bug #54190 and the addendum patch to 5.5 (removed one test case as it is no longer valid). @ mysql-test/r/select.result Removed a part of the test case for bug#48291 since it is not valid anymore. The comments for the removed part were actually describing a side-effect from the problem addressed by the addendum patch for bug #54190. @ mysql-test/t/select.test Removed a part of the test case for bug#48291 since it is not valid anymore. The comments for the removed part were actually describing a side-effect from the problem addressed by the addendum patch for bug #54190. modified: mysql-test/r/row.result mysql-test/r/select.result mysql-test/r/subselect.result mysql-test/t/row.test mysql-test/t/select.test sql/item.cc sql/item_cmpfunc.cc sql/item_subselect.cc === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-08-27 11:33:32 +0000 +++ b/client/mysqltest.cc 2010-09-10 08:05:04 +0000 @@ -5542,6 +5542,8 @@ int read_line(char *buf, int size) char c, UNINIT_VAR(last_quote), last_char= 0; char *p= buf, *buf_end= buf + size - 1; int skip_char= 0; + my_bool have_slash= FALSE; + enum {R_NORMAL, R_Q, R_SLASH_IN_Q, R_COMMENT, R_LINE_START} state= R_LINE_START; DBUG_ENTER("read_line"); @@ -5613,9 +5615,13 @@ int read_line(char *buf, int size) } else if (c == '\'' || c == '"' || c == '`') { - last_quote= c; - state= R_Q; + if (! have_slash) + { + last_quote= c; + state= R_Q; + } } + have_slash= (c == '\\'); break; case R_COMMENT: === modified file 'mysql-test/lib/mtr_cases.pm' --- a/mysql-test/lib/mtr_cases.pm 2010-08-16 06:46:21 +0000 +++ b/mysql-test/lib/mtr_cases.pm 2010-08-30 13:19:46 +0000 @@ -701,6 +701,13 @@ sub process_opts_file { next; } + $value= mtr_match_prefix($opt, "--testcase-timeout="); + if ( defined $value ) { + # Overrides test case timeout for this test + $tinfo->{'case-timeout'}= $value; + next; + } + # Ok, this was a real option, add it push(@{$tinfo->{$opt_name}}, $opt); } === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-08-25 13:55:22 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-09-01 13:52:31 +0000 @@ -231,7 +231,6 @@ my $opt_suite_timeout = $ENV{MTR_SUITE my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds -sub testcase_timeout { return $opt_testcase_timeout * 60; }; sub suite_timeout { return $opt_suite_timeout * 60; }; sub check_timeout { return $opt_testcase_timeout * 6; }; @@ -245,6 +244,7 @@ my $opt_repeat= 1; my $opt_retry= 3; my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2); my $opt_reorder= 1; +my $opt_force_restart= 0; my $opt_strace_client; @@ -260,6 +260,17 @@ my $opt_callgrind; my %mysqld_logs; my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions. +sub testcase_timeout ($) { + my ($tinfo)= @_; + if (exists $tinfo->{'case-timeout'}) { + # Return test specific timeout if *longer* that the general timeout + my $test_to= $tinfo->{'case-timeout'}; + $test_to*= 10 if $opt_valgrind; + return $test_to * 60 if $test_to > $opt_testcase_timeout; + } + return $opt_testcase_timeout * 60; +} + our $opt_warnings= 1; our $opt_skip_ndbcluster= 0; @@ -934,6 +945,7 @@ sub command_line_setup { 'report-features' => \$opt_report_features, 'comment=s' => \$opt_comment, 'fast' => \$opt_fast, + 'force-restart' => \$opt_force_restart, 'reorder!' => \$opt_reorder, 'enable-disabled' => \&collect_option, 'verbose+' => \$opt_verbose, @@ -3552,7 +3564,7 @@ sub run_testcase ($) { } } - my $test_timeout= start_timer(testcase_timeout()); + my $test_timeout= start_timer(testcase_timeout($tinfo)); do_before_run_mysqltest($tinfo); @@ -3752,7 +3764,7 @@ sub run_testcase ($) { { my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log"; $tinfo->{comment}= - "Test case timeout after ".testcase_timeout(). + "Test case timeout after ".testcase_timeout($tinfo). " seconds\n\n"; # Add 20 last executed commands from test case log file if (-e $log_file_name) @@ -3761,7 +3773,7 @@ sub run_testcase ($) { "== $log_file_name == \n". mtr_lastlinesfromfile($log_file_name, 20)."\n"; } - $tinfo->{'timeout'}= testcase_timeout(); # Mark as timeout + $tinfo->{'timeout'}= testcase_timeout($tinfo); # Mark as timeout run_on_all($tinfo, 'analyze-timeout'); report_failure_and_restart($tinfo); @@ -4567,6 +4579,11 @@ sub server_need_restart { return 1; } + if ( $opt_force_restart ) { + mtr_verbose_restart($server, "forced restart turned on"); + return 1; + } + if ( $tinfo->{template_path} ne $current_config_name) { mtr_verbose_restart($server, "using different config file"); @@ -5595,6 +5612,7 @@ Misc options servers to exit before finishing the process fast Run as fast as possible, dont't wait for servers to shutdown etc. + force-restart Always restart servers between tests parallel=N Run tests in N parallel threads (default=1) Use parallel=auto for auto-setting of N repeat=N Run each test N number of times === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2010-08-16 06:46:21 +0000 +++ b/mysql-test/r/mysqltest.result 2010-08-30 13:19:46 +0000 @@ -262,6 +262,9 @@ a long \$where variable content banana = banana Not a banana: ba\$cat\$cat +with\`some"escaped\'quotes +with\`some"escaped\'quotes +single'tick`backtick mysqltest: At line 1: Missing arguments to let mysqltest: At line 1: Missing variable name in let mysqltest: At line 1: Missing assignment operator in let === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2010-08-16 06:46:21 +0000 +++ b/mysql-test/t/mysqltest.test 2010-08-30 13:19:46 +0000 @@ -701,6 +701,16 @@ echo banana = $cat; let $cat=ba\\\$cat\\\$cat; echo Not a banana: $cat; +# Bug #55413 would cause this to fail +let $escape= with\`some\"escaped\'quotes; +echo $escape; + +--let $escape= with\`some\"escaped\'quotes +echo $escape; + +# This only works with "--let" syntax +--let $tick= single'tick`backtick +echo $tick; # Test illegal uses of let --===============0186851357== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/bjorn.munch@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: bjorn.munch@stripped # target_branch: file:///home/bm136801/my/merge-55/ # testament_sha1: 326b244710c02a2fea3fe0f064efe187402ae4e9 # timestamp: 2010-09-10 11:56:39 +0200 # source_branch: file:///home/bm136801/my/mtr-55/ # base_revision_id: alexey.kopytov@stripped\ # gtnby55f059gxn60 # # Begin bundle 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 VvAP/F3JFOFCQ8T2zAg= --===============0186851357==--