From: Bjorn Munch Date: December 9 2010 2:50pm Subject: bzr push into mysql-5.5-mtr branch (bjorn.munch:3122 to 3127) List-Archive: http://lists.mysql.com/commits/126436 Message-Id: <201012091450.oB9EoDAv028175@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3127 Bjorn Munch 2010-12-09 [merge] upmerge 58511,58522,58608,58092 modified: client/mysqltest.cc mysql-test/mysql-test-run.pl mysql-test/r/mysqltest.result mysql-test/t/mysqltest.test 3126 Bjorn Munch 2010-12-09 Bug #58282 "mtr --mem" does not work on a machine with libaio installed Workaround: add --loose-skip-innodb-use-native-aio Only on linux if explicitly using --mem or setting $OPT_MEM modified: mysql-test/mysql-test-run.pl 3125 Bjorn Munch 2010-12-09 Bug #58695 mysqltest coredumps on "if($x == ){" Add check that there is a RHS of the expression Added to mysqltest.test modified: client/mysqltest.cc mysql-test/r/mysqltest.result mysql-test/t/mysqltest.test 3124 Bjorn Munch 2010-12-09 Bug #58710 Valgrind warnings in mysqltest Var's string value was not 0-terminated if intially null. While at it, also removed some reported memory leaks Added sanity check, setting val_len=0 if val==0 modified: client/mysqltest.cc 3123 Bjorn Munch 2010-12-09 Bug #58122 Using DBUG_EXECUTE_IF and normal DBUG printouts not compatible Added option --debug-common which sets 'd' debug flags to the suggested list modified: mysql-test/mysql-test-run.pl 3122 Bjorn Munch 2010-11-26 [merge] upmerge 58515 modified: mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test mysql-test/include/restart_mysqld.inc mysql-test/suite/binlog/t/binlog_max_extension.test mysql-test/suite/rpl/t/rpl_heartbeat_basic.test mysql-test/suite/rpl/t/rpl_trigger.test === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-11-26 09:57:01 +0000 +++ b/client/mysqltest.cc 2010-12-09 14:32:39 +0000 @@ -1169,8 +1169,8 @@ void handle_command_error(struct st_comm int i; if (command->abort_on_error) - die("command \"%.*s\" failed with error %d", - command->first_word_len, command->query, error); + die("command \"%.*s\" failed with error %d. my_errno=%d", + command->first_word_len, command->query, error, my_errno); i= match_expected_error(command, error, NULL); @@ -1181,8 +1181,8 @@ void handle_command_error(struct st_comm DBUG_VOID_RETURN; } if (command->expected_errors.count > 0) - die("command \"%.*s\" failed with wrong error: %d", - command->first_word_len, command->query, error); + die("command \"%.*s\" failed with wrong error: %d. my_errno=%d", + command->first_word_len, command->query, error, my_errno); } else if (command->expected_errors.err[0].type == ERR_ERRNO && command->expected_errors.err[0].code.errnum != 0) @@ -2073,9 +2073,11 @@ VAR *var_init(VAR *v, const char *name, name_len = strlen(name); if (!val_len && val) val_len = strlen(val) ; + if (!val) + val_len= 0; val_alloc_len = val_len + 16; /* room to grow */ if (!(tmp_var=v) && !(tmp_var = (VAR*)my_malloc(sizeof(*tmp_var) - + name_len+1, MYF(MY_WME)))) + + name_len+2, MYF(MY_WME)))) die("Out of memory"); if (name != NULL) @@ -2093,10 +2095,9 @@ VAR *var_init(VAR *v, const char *name, die("Out of memory"); if (val) - { memcpy(tmp_var->str_val, val, val_len); - tmp_var->str_val[val_len]= 0; - } + tmp_var->str_val[val_len]= 0; + var_check_int(tmp_var); tmp_var->name_len = name_len; tmp_var->str_val_len = val_len; @@ -5053,6 +5054,7 @@ void do_close_connection(struct st_comma dynstr_append_mem(ds, ";\n", 2); } + dynstr_free(&ds_connection); DBUG_VOID_RETURN; } @@ -5481,6 +5483,7 @@ void do_connect(struct st_command *comma dynstr_free(&ds_port); dynstr_free(&ds_sock); dynstr_free(&ds_options); + dynstr_free(&ds_default_auth); #ifdef HAVE_SMEM dynstr_free(&ds_shm); #endif @@ -5677,6 +5680,8 @@ void do_block(enum block_cmd cmd, struct } while (my_isspace(charset_info, *curr_ptr)) curr_ptr++; + if (curr_ptr == expr_end) + die("Missing right operand in comparison"); /* Strip off trailing white space */ while (my_isspace(charset_info, expr_end[-1])) @@ -5729,6 +5734,7 @@ void do_block(enum block_cmd cmd, struct } v.is_int= TRUE; + var_free(&v2); } else { if (*expr_start != '`' && ! my_isdigit(charset_info, *expr_start)) @@ -7822,7 +7828,7 @@ void run_query(struct st_connection *cn, ds, &ds_warnings); dynstr_free(&ds_warnings); - if (command->type == Q_EVAL) + if (command->type == Q_EVAL || command->type == Q_SEND_EVAL) dynstr_free(&eval_query); if (display_result_sorted) @@ -7928,6 +7934,16 @@ void init_re(void) int match_re(my_regex_t *re, char *str) { + while (my_isspace(charset_info, *str)) + str++; + if (str[0] == '/' && str[1] == '*') + { + char *comm_end= strstr (str, "*/"); + if (! comm_end) + die("Statement is unterminated comment"); + str= comm_end + 2; + } + int err= my_regexec(re, str, (size_t)0, NULL, 0); if (err == 0) === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-11-24 20:09:08 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-12-09 14:32:39 +0000 @@ -188,6 +188,8 @@ my $opt_cursor_protocol; my $opt_view_protocol; our $opt_debug; +my $debug_d= "d"; +my $opt_debug_common; our @opt_cases; # The test cases names in argv our $opt_embedded_server; @@ -908,7 +910,7 @@ sub command_line_setup { my $opt_list_options; # Read the command line options - # Note: Keep list, and the order, in sync with usage at end of this file + # Note: Keep list in sync with usage at end of this file Getopt::Long::Configure("pass_through"); my %options=( # Control what engine/variation to run @@ -944,6 +946,7 @@ sub command_line_setup { 'combination=s' => \@opt_combinations, 'skip-combinations' => \&collect_option, 'experimental=s' => \@opt_experimentals, + # skip-im is deprecated and silently ignored 'skip-im' => \&ignore_option, # Specify ports @@ -963,6 +966,7 @@ sub command_line_setup { # Debugging 'debug' => \$opt_debug, + 'debug-common' => \$opt_debug_common, 'gdb' => \$opt_gdb, 'client-gdb' => \$opt_client_gdb, 'manual-gdb' => \$opt_manual_gdb, @@ -1039,7 +1043,8 @@ sub command_line_setup { 'report-times' => \$opt_report_times, 'help|h' => \$opt_usage, - 'list-options' => \$opt_list_options, + # list-options is internal, not listed in help + 'list-options' => \$opt_list_options, 'skip-test-list=s' => \@opt_skip_test_list ); @@ -1546,6 +1551,18 @@ sub command_line_setup { join(" ", @valgrind_args), "\""); } + if ($opt_debug_common) + { + $opt_debug= 1; + $debug_d= "d,query,info,error,enter,exit"; + } + + if ($opt_debug && $opt_debug ne "1") + { + $debug_d= "d,$opt_debug"; + $debug_d= "d,query,info,error,enter,exit" if $opt_debug eq "std"; + } + mtr_report("Checking supported features..."); check_ndbcluster_support(\%mysqld_variables); @@ -1843,7 +1860,7 @@ sub client_debug_arg($$) { if ( $opt_debug ) { mtr_add_arg($args, - "--debug=d:t:A,%s/log/%s.trace", + "--debug=$debug_d:t:A,%s/log/%s.trace", $path_vardir_trace, $client_name) } } @@ -3008,13 +3025,19 @@ sub mysql_install_db { if ( $opt_debug ) { - mtr_add_arg($args, "--debug=d:t:i:A,%s/log/bootstrap.trace", + mtr_add_arg($args, "--debug=$debug_d:t:i:A,%s/log/bootstrap.trace", $path_vardir_trace); } mtr_add_arg($args, "--lc-messages-dir=%s", $install_lang); mtr_add_arg($args, "--character-sets-dir=%s", $install_chsdir); + # On some old linux kernels, aio on tmpfs is not supported + # Remove this if/when Bug #58421 fixes this in the server + if ($^O eq "linux" && $opt_mem) { + mtr_add_arg($args, "--loose-skip-innodb-use-native-aio"); + } + # InnoDB arguments that affect file location and sizes may # need to be given to the bootstrap process as well as the # server process. @@ -4500,6 +4523,13 @@ sub mysqld_arguments ($$$) { } } + # On some old linux kernels, aio on tmpfs is not supported + # Remove this if/when Bug #58421 fixes this in the server + if ($^O eq "linux" && $opt_mem) + { + mtr_add_arg($args, "--loose-skip-innodb-use-native-aio"); + } + if ( $mysql_version_id >= 50106 && !$opt_user_args) { # Turn on logging to file @@ -4589,7 +4619,7 @@ sub mysqld_start ($$) { if ( $opt_debug ) { - mtr_add_arg($args, "--debug=d:t:i:A,%s/log/%s.trace", + mtr_add_arg($args, "--debug=$debug_d:t:i:A,%s/log/%s.trace", $path_vardir_trace, $mysqld->name()); } @@ -5604,7 +5634,7 @@ Options to control what engine/variation defaults-file= Use fixed config template for all tests - defaults_extra_file= Extra config template to add to + defaults-extra-file= Extra config template to add to all generated configs combination= Use at least twice to run tests with specified options to mysqld @@ -5692,6 +5722,8 @@ Options for debugging the product client-gdb Start mysqltest client in gdb ddd Start mysqld in ddd debug Dump trace output for all servers and client programs + debug-common Same as debug, but sets 'd' debug flags to + "query,info,error,enter,exit" debugger=NAME Start mysqld in the selected debugger gdb Start the mysqld(s) in gdb manual-debug Let user manually start mysqld in debugger, before @@ -5700,7 +5732,7 @@ Options for debugging the product test(s) manual-ddd Let user manually start mysqld in ddd, before running test(s) - strace-client=[path] Create strace output for mysqltest client, optionally + strace-client[=path] Create strace output for mysqltest client, optionally specifying name and path to the trace program to use. Example: $0 --strace-client=ktrace max-save-core Limit the number of core files saved (to avoid filling @@ -5733,7 +5765,7 @@ Options for valgrind Misc options user=USER User for connecting to mysqld(default: $opt_user) comment=STR Write STR to the output - notimer Don't show test case execution time + timer Show test case execution time. verbose More verbose output(use multiple times for even more) verbose-restart Write when and why servers are restarted start Only initialize and start the servers, using the @@ -5773,6 +5805,7 @@ Misc options actions. Disable facility with NUM=0. gcov Collect coverage information after the test. The result is a gcov file per source and header file. + gprof Collect profiling information using gprof. experimental= Refer to list of tests considered experimental; failures will be marked exp-fail instead of fail. report-features First run a "test" that reports mysql features @@ -5785,6 +5818,11 @@ Misc options engine to InnoDB. report-times Report how much time has been spent on different phases of test execution. + +Some options that control enabling a feature for normal test runs, +can be turned off by prepending 'no' to the option, e.g. --notimer. +This applies to reorder, timer, check-testcases and warnings. + HERE exit(1); === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2010-11-26 09:57:01 +0000 +++ b/mysql-test/r/mysqltest.result 2010-12-09 14:32:39 +0000 @@ -434,6 +434,8 @@ anything goes mysqltest: At line 2: Only == and != are supported for string values mysqltest: At line 2: Found junk '~= 6' after $variable in condition mysqltest: At line 2: Expression in if/while must beging with $, ` or a number +mysqltest: At line 1: Missing right operand in comparison +mysqltest: At line 1: Missing right operand in comparison counter is 2 counter is 3 counter is 4 @@ -623,7 +625,7 @@ if things work as expected Some data for cat_file command of mysqltest -mysqltest: At line 1: command "cat_file" failed with error 1 +mysqltest: At line 1: command "cat_file" failed with error 1. (my_errno) mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists' mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file' === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2010-11-26 09:57:01 +0000 +++ b/mysql-test/t/mysqltest.test 2010-12-09 14:32:39 +0000 @@ -1354,6 +1354,11 @@ EOF --exec $MYSQL_TEST < $MYSQL_TMP_DIR/mysqltest.sql 2>&1 remove_file $MYSQL_TMP_DIR/mysqltest.sql; +--error 1 +--exec echo "if (\$var ==) {" | $MYSQL_TEST 2>&1 +--error 1 +--exec echo "if (\$var > ) {" | $MYSQL_TEST 2>&1 + # ---------------------------------------------------------------------------- # Test while with compare conditions # ---------------------------------------------------------------------------- @@ -2125,6 +2130,7 @@ EOF cat_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp; remove_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp; +--replace_regex /my_errno=[0-9]*/(my_errno)/ --error 1 --exec echo "cat_file non_existing_file;" | $MYSQL_TEST 2>&1 No bundle (reason: useless for push emails).