From: Bjorn Munch Date: October 4 2010 8:40am Subject: bzr commit into mysql-5.5-bugteam branch (bjorn.munch:3220) List-Archive: http://lists.mysql.com/commits/119792 Message-Id: <201010040841.o948fRkj029347@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0358379171==" --===============0358379171== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/bm136801/my/mysql-5.5-bugteam/ based on revid:alexander.nozdrin@stripped 3220 Bjorn Munch 2010-10-04 [merge] merge from 5.5-mtr modified: client/mysqltest.cc mysql-test/lib/mtr_report.pm mysql-test/mysql-test-run.pl mysql-test/r/mysqltest.result mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test mysql-test/suite/sys_vars/t/div_precision_increment_func.test mysql-test/suite/sys_vars/t/secure_file_priv.test mysql-test/t/mysqltest.test === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-10-01 13:25:13 +0000 +++ b/client/mysqltest.cc 2010-10-04 08:40:28 +0000 @@ -112,6 +112,7 @@ static my_bool parsing_disabled= 0; static my_bool display_result_vertically= FALSE, display_result_lower= FALSE, display_metadata= FALSE, display_result_sorted= FALSE; static my_bool disable_query_log= 0, disable_result_log= 0; +static my_bool disable_connect_log= 1; static my_bool disable_warnings= 0; static my_bool disable_info= 1; static my_bool abort_on_error= 1; @@ -227,8 +228,9 @@ typedef struct int str_val_len; int int_val; int alloced_len; - int int_dirty; /* do not update string if int is updated until first read */ - int alloced; + bool int_dirty; /* do not update string if int is updated until first read */ + bool is_int; + bool alloced; } VAR; /*Perl/shell-like variable registers */ @@ -286,6 +288,7 @@ enum enum_commands { Q_EVAL_RESULT, Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG, Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG, + Q_ENABLE_CONNECT_LOG, Q_DISABLE_CONNECT_LOG, Q_WAIT_FOR_SLAVE_TO_STOP, Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS, Q_ENABLE_INFO, Q_DISABLE_INFO, @@ -351,6 +354,8 @@ const char *command_names[]= /* Enable/disable that the _result_ from a query is logged to result file */ "enable_result_log", "disable_result_log", + "enable_connect_log", + "disable_connect_log", "wait_for_slave_to_stop", "enable_warnings", "disable_warnings", @@ -763,7 +768,6 @@ end_thread: return 0; } - static void wait_query_thread_done(struct st_connection *con) { DBUG_ASSERT(con->tid); @@ -805,7 +809,6 @@ static int do_send_query(struct st_conne return 0; } - static int do_read_query_result(struct st_connection *cn) { DBUG_ASSERT(cn->tid); @@ -844,7 +847,6 @@ static void init_connection_thd(struct s die("Error in the thread library"); } - #else /*EMBEDDED_LIBRARY*/ #define do_send_query(cn,q,q_len) mysql_send_query(&cn->mysql, q, q_len) @@ -2036,6 +2038,21 @@ static void var_free(void *v) C_MODE_END +void var_set_int(VAR *v, const char *str) +{ + char *endptr; + /* Initially assume not a number */ + v->int_val= 0; + v->is_int= false; + v->int_dirty= false; + if (!str) return; + + v->int_val = (int) strtol(str, &endptr, 10); + /* It is an int if strtol consumed something up to end/space/tab */ + if (endptr > str && (!*endptr || *endptr == ' ' || *endptr == '\t')) + v->is_int= true; +} + VAR *var_init(VAR *v, const char *name, int name_len, const char *val, int val_len) @@ -2070,11 +2087,10 @@ VAR *var_init(VAR *v, const char *name, memcpy(tmp_var->str_val, val, val_len); tmp_var->str_val[val_len]= 0; } + var_set_int(tmp_var, val); tmp_var->name_len = name_len; tmp_var->str_val_len = val_len; tmp_var->alloced_len = val_alloc_len; - tmp_var->int_val = (val) ? atoi(val) : 0; - tmp_var->int_dirty = 0; return tmp_var; } @@ -2135,7 +2151,7 @@ VAR* var_get(const char *var_name, const if (!raw && v->int_dirty) { sprintf(v->str_val, "%d", v->int_val); - v->int_dirty = 0; + v->int_dirty= false; v->str_val_len = strlen(v->str_val); } if (var_name_end) @@ -2197,7 +2213,7 @@ void var_set(const char *var_name, const if (v->int_dirty) { sprintf(v->str_val, "%d", v->int_val); - v->int_dirty= 0; + v->int_dirty=false; v->str_val_len= strlen(v->str_val); } /* setenv() expects \0-terminated strings */ @@ -2267,8 +2283,14 @@ void var_query_set(VAR *var, const char DBUG_ENTER("var_query_set"); LINT_INIT(res); + /* Only white space or ) allowed past ending ` */ while (end > query && *end != '`') + { + if (*end && (*end != ' ' && *end != '\t' && *end != '\n' && *end != ')')) + die("Spurious text after `query` expression"); --end; + } + if (query == end) die("Syntax error in query, missing '`'"); ++query; @@ -2497,6 +2519,7 @@ void var_set_query_get_value(struct st_c void var_copy(VAR *dest, VAR *src) { dest->int_val= src->int_val; + dest->is_int= src->is_int; dest->int_dirty= src->int_dirty; /* Alloc/realloc data for str_val in dest */ @@ -2580,9 +2603,7 @@ void eval_expr(VAR *v, const char *p, co v->str_val_len = new_val_len; memcpy(v->str_val, p, new_val_len); v->str_val[new_val_len] = 0; - v->int_val=atoi(p); - DBUG_PRINT("info", ("atoi on '%s', returns: %d", p, v->int_val)); - v->int_dirty=0; + var_set_int(v, p); } DBUG_VOID_RETURN; } @@ -2929,6 +2950,8 @@ int do_modify_var(struct st_command *com die("The argument to %.*s must be a variable (start with $)", command->first_word_len, command->query); v= var_get(p, &p, 1, 0); + if (! v->is_int) + die("Cannot perform inc/dec on a non-numeric value"); switch (op) { case DO_DEC: v->int_val--; @@ -2940,7 +2963,7 @@ int do_modify_var(struct st_command *com die("Invalid operator to do_modify_var"); break; } - v->int_dirty= 1; + v->int_dirty= true; command->last_argument= (char*)++p; return 0; } @@ -3984,7 +4007,18 @@ void do_perl(struct st_command *command) if (!error) my_delete(temp_file_path, MYF(0)); - handle_command_error(command, WEXITSTATUS(error)); + /* Check for error code that indicates perl could not be started */ + int exstat= WEXITSTATUS(error); +#ifdef __WIN__ + if (exstat == 1) + /* Text must begin 'perl not found' as mtr looks for it */ + abort_not_supported_test("perl not found in path or did not start"); +#else + if (exstat == 127) + abort_not_supported_test("perl not found in path"); +#endif + else + handle_command_error(command, exstat); } dynstr_free(&ds_delimiter); DBUG_VOID_RETURN; @@ -4898,6 +4932,16 @@ void select_connection_name(const char * set_current_connection(con); + /* Connection logging if enabled */ + if (!disable_connect_log && !disable_query_log) + { + DYNAMIC_STRING *ds= &ds_res; + + dynstr_append_mem(ds, "connection ", 11); + replace_dynstr_append(ds, name); + dynstr_append_mem(ds, ";\n", 2); + } + DBUG_VOID_RETURN; } @@ -4985,6 +5029,16 @@ void do_close_connection(struct st_comma var_set_string("$CURRENT_CONNECTION", con->name); } + /* Connection logging if enabled */ + if (!disable_connect_log && !disable_query_log) + { + DYNAMIC_STRING *ds= &ds_res; + + dynstr_append_mem(ds, "disconnect ", 11); + replace_dynstr_append(ds, ds_connection.str); + dynstr_append_mem(ds, ";\n", 2); + } + DBUG_VOID_RETURN; } @@ -5119,6 +5173,13 @@ int connect_n_handle_errors(struct st_co dynstr_append_mem(ds, delimiter, delimiter_length); dynstr_append_mem(ds, "\n", 1); } + /* Simlified logging if enabled */ + if (!disable_connect_log && !disable_query_log) + { + replace_dynstr_append(ds, command->query); + dynstr_append_mem(ds, ";\n", 2); + } + while (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0, CLIENT_MULTI_STATEMENTS)) { @@ -7436,11 +7497,13 @@ void run_query(struct st_connection *cn, (flags & QUERY_REAP_FLAG)); DBUG_ENTER("run_query"); - init_dynamic_string(&ds_warnings, NULL, 0, 256); - if (cn->pending && (flags & QUERY_SEND_FLAG)) die ("Cannot run query on connection between send and reap"); + if (!(flags & QUERY_SEND_FLAG) && !cn->pending) + die ("Cannot reap on a connection without pending send"); + + init_dynamic_string(&ds_warnings, NULL, 0, 256); /* Evaluate query if this is an eval command */ @@ -8185,6 +8248,8 @@ int main(int argc, char **argv) case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break; case Q_ENABLE_RESULT_LOG: disable_result_log=0; break; case Q_DISABLE_RESULT_LOG: disable_result_log=1; break; + case Q_ENABLE_CONNECT_LOG: disable_connect_log=0; break; + case Q_DISABLE_CONNECT_LOG: disable_connect_log=1; break; case Q_ENABLE_WARNINGS: disable_warnings=0; break; case Q_DISABLE_WARNINGS: disable_warnings=1; break; case Q_ENABLE_INFO: disable_info=0; break; === modified file 'mysql-test/lib/mtr_report.pm' --- a/mysql-test/lib/mtr_report.pm 2010-06-10 08:34:16 +0000 +++ b/mysql-test/lib/mtr_report.pm 2010-09-20 08:12:39 +0000 @@ -229,7 +229,8 @@ sub mtr_report_stats ($$;$) { # Find out how we where doing # ---------------------------------------------------------------------- - my $tot_skiped= 0; + my $tot_skipped= 0; + my $tot_skipdetect= 0; my $tot_passed= 0; my $tot_failed= 0; my $tot_tests= 0; @@ -246,8 +247,9 @@ sub mtr_report_stats ($$;$) { } elsif ( $tinfo->{'result'} eq 'MTR_RES_SKIPPED' ) { - # Test was skipped - $tot_skiped++; + # Test was skipped (disabled not counted) + $tot_skipped++ unless $tinfo->{'disable'}; + $tot_skipdetect++ if $tinfo->{'skip_detected_by_test'}; } elsif ( $tinfo->{'result'} eq 'MTR_RES_PASSED' ) { @@ -376,6 +378,9 @@ sub mtr_report_stats ($$;$) { print "All $tot_tests tests were successful.\n\n"; } + print "$tot_skipped tests were skipped, ". + "$tot_skipdetect by the test itself.\n\n" if $tot_skipped; + if ( $tot_failed != 0 || $found_problems) { mtr_error("there were failing test cases") unless $dont_error; === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-09-01 13:52:31 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-09-30 10:53:36 +0000 @@ -126,12 +126,24 @@ my $path_vardir_trace; # unix f my $opt_tmpdir; # Path to use for tmp/ dir my $opt_tmpdir_pid; +my $opt_start; +my $opt_start_dirty; +my $opt_start_exit; +my $start_only; + END { if ( defined $opt_tmpdir_pid and $opt_tmpdir_pid == $$ ) { - # Remove the tempdir this process has created - mtr_verbose("Removing tmpdir '$opt_tmpdir"); - rmtree($opt_tmpdir); + if (!$opt_start_exit) + { + # Remove the tempdir this process has created + mtr_verbose("Removing tmpdir $opt_tmpdir"); + rmtree($opt_tmpdir); + } + else + { + mtr_warning("tmpdir $opt_tmpdir should be removed after the server has finished"); + } } } @@ -234,10 +246,6 @@ my $opt_start_timeout = $ENV{MTR_START sub suite_timeout { return $opt_suite_timeout * 60; }; sub check_timeout { return $opt_testcase_timeout * 6; }; -my $opt_start; -my $opt_start_dirty; -my $opt_start_exit; -my $start_only; my $opt_wait_all; my $opt_user_args; my $opt_repeat= 1; @@ -2186,6 +2194,11 @@ sub environment_setup { # to detect that valgrind is being used from test cases $ENV{'VALGRIND_TEST'}= $opt_valgrind; + # Add dir of this perl to aid mysqltest in finding perl + my $perldir= dirname($^X); + my $pathsep= ":"; + $pathsep= ";" if IS_WINDOWS && ! IS_CYGWIN; + $ENV{'PATH'}= "$ENV{'PATH'}".$pathsep.$perldir; } @@ -3658,6 +3671,9 @@ sub run_testcase ($) { # Try to get reason from test log file find_testcase_skipped_reason($tinfo); mtr_report_test_skipped($tinfo); + # Restart if skipped due to missing perl, it may have had side effects + stop_all_servers($opt_shutdown_timeout) + if ($tinfo->{'comment'} =~ /^perl not found/); } elsif ( $res == 65 ) { === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2010-08-30 13:19:46 +0000 +++ b/mysql-test/r/mysqltest.result 2010-09-28 14:00:11 +0000 @@ -177,6 +177,9 @@ mysqltest: At line 1: End of line junk d " mysqltest: At line 1: Extra delimiter ";" found mysqltest: At line 1: Extra delimiter ";" found +mysqltest: At line 1: Spurious text after `query` expression +mysqltest: At line 1: Spurious text after `query` expression +mysqltest: At line 2: Spurious text after `query` expression mysqltest: At line 1: Missing argument(s) to 'error' mysqltest: At line 1: Missing argument(s) to 'error' mysqltest: At line 1: The sqlstate definition must start with an uppercase S @@ -366,23 +369,24 @@ mysqltest: At line 1: Missing required a mysqltest: At line 1: Invalid argument to sleep "abc" mysqltest: At line 1: Invalid argument to real_sleep "abc" 1 -2 101 -hej -1 +-99 mysqltest: At line 1: Missing argument to inc mysqltest: At line 1: The argument to inc must be a variable (start with $) +mysqltest: At line 1: Cannot perform inc/dec on a non-numeric value mysqltest: At line 1: End of line junk detected: "1000" -4 -4 +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 +-96 +-96 -1 --2 99 -hej --1 mysqltest: At line 1: Missing argument to dec mysqltest: At line 1: The argument to dec must be a variable (start with $) +mysqltest: At line 1: Cannot perform inc/dec on a non-numeric value 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 @@ -449,12 +453,16 @@ mysqltest: At line 1: Missing required a mysqltest: At line 1: query 'connect con2,localhost,root,,illegal_db' failed: 1049: Unknown database 'illegal_db' mysqltest: At line 1: Illegal argument for port: 'illegal_port' mysqltest: At line 1: Illegal option to connect: SMTP -OK -mysqltest: The test didn't produce any output +200 connects succeeded mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists show tables; ERROR 3D000: No database selected +connect con1,localhost,root,,; +connection default; +connection con1; +disconnect con1; +connection default; Output from mysqltest-x.inc Output from mysqltest-x.inc Output from mysqltest-x.inc === modified file 'mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test' --- a/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test 2010-01-14 10:49:40 +0000 +++ b/mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test 2010-09-15 12:56:22 +0000 @@ -205,7 +205,7 @@ DROP TABLE `t1`; -- echo === Using mysqlbinlog to detect failure. Before the patch mysqlbinlog would find a corrupted event, thence would fail. --- let $MYSQLD_DATADIR= `SELECT @@datadir`; +-- let $MYSQLD_DATADIR= `SELECT @@datadir` -- exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug42749.binlog -- remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug42749.binlog @@ -330,7 +330,7 @@ while($ntables) -- echo ### assertion: check that binlog is not corrupt. Using mysqlbinlog to -- echo ### detect failure. Before the patch mysqlbinlog would find -- echo ### a corrupted event, thence would fail. --- let $MYSQLD_DATADIR= `SELECT @@datadir`; +-- let $MYSQLD_DATADIR= `SELECT @@datadir` -- exec $MYSQL_BINLOG -v --hex $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug50018.binlog ## clean up === modified file 'mysql-test/suite/sys_vars/t/div_precision_increment_func.test' --- a/mysql-test/suite/sys_vars/t/div_precision_increment_func.test 2009-12-22 09:35:56 +0000 +++ b/mysql-test/suite/sys_vars/t/div_precision_increment_func.test 2010-09-20 08:21:55 +0000 @@ -19,7 +19,7 @@ # # ################################################################################ -let $save_div_precision_increment = `SELECT @@global.div_precision_increment` +let $save_div_precision_increment = `SELECT @@global.div_precision_increment`; #SET @save_div_precision_increment = @@global.div_precision_increment; === modified file 'mysql-test/suite/sys_vars/t/secure_file_priv.test' --- a/mysql-test/suite/sys_vars/t/secure_file_priv.test 2010-04-16 14:10:47 +0000 +++ b/mysql-test/suite/sys_vars/t/secure_file_priv.test 2010-09-21 09:16:20 +0000 @@ -9,7 +9,7 @@ SHOW VARIABLES LIKE 'secure_file_priv'; # Doing this in a portable manner is difficult but we should be able to # count on the depth of the directory hierarchy used. Three steps up from # the datadir is the 'mysql_test' directory. ---let $PROTECTED_FILE=`SELECT concat(@@datadir,'/../../../bug50373.txt')`; +--let $PROTECTED_FILE=`SELECT concat(@@datadir,'/../../../bug50373.txt')` --eval SELECT * FROM t1 INTO OUTFILE '$PROTECTED_FILE'; DELETE FROM t1; --eval LOAD DATA INFILE '$PROTECTED_FILE' INTO TABLE t1; === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2010-08-30 13:19:46 +0000 +++ b/mysql-test/t/mysqltest.test 2010-09-28 14:00:11 +0000 @@ -494,6 +494,32 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqlt --error 1 --exec echo "--disable_query_log;" | $MYSQL_TEST 2>&1 +# +# Extra text after `` +# +# Cannot use exec echo here as ` may or may not need to be escaped +--write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql +let $x= `select 1` BOO ; +EOF +--error 1 +--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.sql 2>&1 +remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; +--write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql +--let $x= `select 1`; +EOF +--error 1 +--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.sql 2>&1 +remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; +--write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql +# Missing ; in next line should be detected and cause failure +let $x= `select 1` +let $x= 2; +echo $x; +EOF +--error 1 +--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.sql 2>&1 +remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; + # Allow trailing # comment --sleep 1 # Wait for insert delayed to be executed. @@ -980,16 +1006,13 @@ EOF # ---------------------------------------------------------------------------- # Test inc # ---------------------------------------------------------------------------- -inc $i; -echo $i; +let $i= 0; inc $i; echo $i; let $i=100; inc $i; echo $i; - -let $i=hej; -echo $i; +let $i= -100; inc $i; echo $i; @@ -998,7 +1021,13 @@ echo $i; --error 1 --exec echo "inc i;" | $MYSQL_TEST 2>&1 --error 1 +--exec echo "inc \$i;" | $MYSQL_TEST 2>&1 +--error 1 --exec echo "let \$i=100; inc \$i 1000; echo \$i;" | $MYSQL_TEST 2>&1 +--error 1 +--exec echo "let \$i=text; inc \$i; echo \$i;" | $MYSQL_TEST 2>&1 +--error 1 +--exec echo "let \$i=10cc; inc \$i; echo \$i;" | $MYSQL_TEST 2>&1 inc $i; inc $i; inc $i; --echo $i echo $i; @@ -1008,25 +1037,25 @@ echo $i; # Test dec # ---------------------------------------------------------------------------- -dec $d; -echo $d; +let $d= 0; dec $d; echo $d; let $d=100; dec $d; echo $d; -let $d=hej; -echo $d; -dec $d; -echo $d; - --error 1 --exec echo "dec;" | $MYSQL_TEST 2>&1 --error 1 --exec echo "dec i;" | $MYSQL_TEST 2>&1 --error 1 +--exec echo "dec \$i;" | $MYSQL_TEST 2>&1 +--error 1 --exec echo "let \$i=100; dec \$i 1000; echo \$i;" | $MYSQL_TEST 2>&1 +--error 1 +--exec echo "let \$i=text; dec \$i; echo \$i;" | $MYSQL_TEST 2>&1 +--error 1 +--exec echo "let \$i=10cc; dec \$i; echo \$i;" | $MYSQL_TEST 2>&1 # ---------------------------------------------------------------------------- @@ -1441,19 +1470,6 @@ eval select "$long_rep" as x; # Repeat connect/disconnect --write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql -let $i=100; -while ($i) -{ - connect (test_con1,localhost,root,,); - disconnect test_con1; - dec $i; -} -EOF ---exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql; echo OK; exit;" | $MYSQL_TEST 2>&1 -remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; - -# Repeat connect/disconnect ---write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql let $i=200; while ($i) { @@ -1461,9 +1477,8 @@ while ($i) disconnect test_con1; dec $i; } +echo 200 connects succeeded; EOF ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---error 1 --exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql;" | $MYSQL_TEST 2>&1 remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; @@ -1504,6 +1519,22 @@ show tables; disconnect con2; connection default; +# Test enable_connect_log +--enable_connect_log +connect (con1,localhost,root,,); +connection default; +connection con1; +--disable_query_log +# These should not be logged +connect (con2,localhost,root,,*NO-ONE*); +connection con2; +disconnect con2; +connection con1; +--enable_query_log +disconnect con1; +connection default; +--disable_connect_log + # ---------------------------------------------------------------------------- # Test mysqltest arguments # ---------------------------------------------------------------------------- --===============0358379171== 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/mysql-5.5-bugteam/ # testament_sha1: 7ae872254d1e08b1229d3fb3916ffb8d6881621f # timestamp: 2010-10-04 10:41:27 +0200 # source_branch: file:///home/bm136801/my/mtr-55/ # base_revision_id: alexander.nozdrin@stripped\ # rcvrajav9huizta8 # # Begin bundle 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 cTj7jtUgH1GJGUWG86O7/4u5IpwoSD907NUA --===============0358379171==--