From 97f5cac93c5f63822b5e855bbbab9f9188d447b4 Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Sun, 2 Jan 2005 16:57:21 +0100 Subject: [PATCH 01/11] mysql-test-run.pl: Added initial support for multiple test suites Added usage information, i.e. --help --- mysql-test/mysql-test-run.pl | 234 +++++++++++++++++++++++++++++------ 1 file changed, 194 insertions(+), 40 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index a69dcdce5c6..5565d29fb7b 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -172,6 +172,9 @@ our $path_slave_load_tmpdir; # What is this?! our $path_my_basedir; our $opt_tmpdir; # A path but set directly on cmd line +our $opt_usage; +our $opt_suite; + our $opt_netware; our $opt_script_debug= 0; # Script debugging, enable with --script-debug @@ -290,6 +293,7 @@ sub initial_setup (); sub command_line_setup (); sub executable_setup (); sub kill_and_cleanup (); +sub collect_test_cases ($); sub sleep_until_file_created ($$); sub ndbcluster_start (); sub ndbcluster_stop (); @@ -306,6 +310,7 @@ sub stop_masters_slaves (); sub stop_masters (); sub stop_slaves (); sub run_mysqltest ($$); +sub usage ($); ###################################################################### # @@ -423,6 +428,7 @@ sub command_line_setup () { # These are defaults for things that are set on the command line + $opt_suite= "main"; # Special default suite $opt_tmpdir= "$glob_mysql_test_dir/var/tmp"; # FIXME maybe unneded? $path_manager_log= "$glob_mysql_test_dir/var/log/manager.log"; @@ -436,61 +442,85 @@ sub command_line_setup () { my $opt_user; # Read the command line + # Note: Keep list, and the order, in sync with usage at end of this file GetOptions( - 'bench' => \$opt_bench, - 'big-test' => \$opt_big_test, - 'client-gdb' => \$opt_client_gdb, - 'compress' => \$opt_compress, - 'ddd' => \$opt_ddd, - 'debug' => \$opt_debug, - 'do-test=s' => \$opt_do_test, + # Control what engine/variation to run 'embedded-server' => \$opt_embedded_server, 'ps-protocol' => \$opt_ps_protocol, - 'extern' => \$opt_extern, - 'fast' => \$opt_fast, - 'force' => \$opt_force, - 'gcov' => \$opt_gcov, - 'gdb' => \$opt_gdb, - 'gprof' => \$opt_gprof, - 'local' => \$opt_local, - 'local-master' => \$opt_local_master, - 'manual-gdb' => \$opt_manual_gdb, - 'master-binary=s' => \$exe_master_mysqld, - 'master_port=i' => \$opt_master_myport, - 'mysqld=s' => \$opt_extra_mysqld_opt, - 'ndbcluster_port=i' => \$opt_ndbcluster_port, - 'ndbconnectstring=s' => \$opt_ndbconnectstring, - 'netware' => \$opt_netware, + 'bench' => \$opt_bench, + 'small-bench' => \$opt_small_bench, 'no-manager' => \$opt_no_manager, - 'old-master' => \$opt_old_master, - 'ps-protocol' => \$opt_ps_protocol, - 'record' => \$opt_record, - 'script-debug' => \$opt_script_debug, + + # Control what test suites or cases to run + 'force' => \$opt_force, + 'with-ndbcluster' => \$opt_with_ndbcluster, + 'do-test=s' => \$opt_do_test, + 'suite=s' => \$opt_suite, 'skip-rpl' => \$opt_skip_rpl, 'skip-test=s' => \$opt_skip_test, - 'slave-binary=s' => \$exe_slave_mysqld, + + # Specify ports + 'master_port=i' => \$opt_master_myport, 'slave_port=i' => \$opt_slave_myport, + 'ndbcluster_port=i' => \$opt_ndbcluster_port, + + # Test case authoring + 'record' => \$opt_record, + + # ??? + 'mysqld=s' => \$opt_extra_mysqld_opt, + + # Run test on running server + 'extern' => \$opt_extern, + 'ndbconnectstring=s' => \$opt_ndbconnectstring, + + # Debugging + 'gdb' => \$opt_gdb, + 'manual-gdb' => \$opt_manual_gdb, + 'client-gdb' => \$opt_client_gdb, + 'ddd' => \$opt_ddd, + 'strace-client' => \$opt_strace_client, + 'master-binary=s' => \$exe_master_mysqld, + 'slave-binary=s' => \$exe_slave_mysqld, + + # Coverage, profiling etc + 'gcov' => \$opt_gcov, + 'gprof' => \$opt_gprof, + 'valgrind' => \$opt_valgrind, + 'valgrind-all' => \$opt_valgrind_all, + 'valgrind-options=s' => \$opt_valgrind_options, + + # Misc + 'big-test' => \$opt_big_test, + 'compress' => \$opt_compress, + 'debug' => \$opt_debug, + 'fast' => \$opt_fast, + 'local' => \$opt_local, + 'local-master' => \$opt_local_master, + 'netware' => \$opt_netware, + 'old-master' => \$opt_old_master, + 'script-debug' => \$opt_script_debug, 'sleep=i' => \$opt_sleep, - 'small-bench' => \$opt_small_bench, 'socket=s' => \$opt_socket, 'start-and-exit' => \$opt_start_and_exit, 'start-from=s' => \$opt_start_from, - 'strace-client' => \$opt_strace_client, 'timer' => \$opt_timer, 'tmpdir=s' => \$opt_tmpdir, 'user-test=s' => \$opt_user_test, 'user=s' => \$opt_user, - 'valgrind' => \$opt_valgrind, - 'valgrind-all' => \$opt_valgrind_all, - 'valgrind-options=s' => \$opt_valgrind_options, 'verbose' => \$opt_verbose, 'wait-timeout=i' => \$opt_wait_timeout, 'warnings|log-warnings' => \$opt_warnings, - 'with-ndbcluster' => \$opt_with_ndbcluster, 'with-openssl' => \$opt_with_openssl, + + 'help|h' => \$opt_usage, ) or usage("Can't read options"); + if ( $opt_usage ) + { + usage(""); + } # Put this into a hash, will be a C struct @@ -593,7 +623,7 @@ sub command_line_setup () { if ( $opt_sleep ) { - $opt_sleep_time_after_restart= $opt_sleep; + $opt_sleep_time_after_restart= $opt_sleep; } if ( $opt_gcov and ! $opt_source_dist ) @@ -811,8 +841,22 @@ sub handle_int_signal () { # ############################################################################## -sub collect_test_cases () { - my $testdir= "$glob_mysql_test_dir/t"; +sub collect_test_cases ($) { + my $suite= shift; # Test suite name + + my $testdir; + my $resdir; + + if ( $suite eq "main" ) + { + $testdir= "$glob_mysql_test_dir/t"; + $resdir= "$glob_mysql_test_dir/r"; + } + else + { + $testdir= "$glob_mysql_test_dir/suite/$suite/t"; + $resdir= "$glob_mysql_test_dir/suite/$suite/r"; + } my @tests; # Array of hash, will be array of C struct @@ -839,7 +883,7 @@ sub collect_test_cases () { my $tinfo= {}; $tinfo->{'name'}= $tname; - $tinfo->{'result_file'}= "r/$tname.result"; + $tinfo->{'result_file'}= "$resdir/$tname.result"; push(@tests, $tinfo); if ( $opt_skip_test and defined mtr_match_prefix($tname,$opt_skip_test) ) @@ -1180,13 +1224,22 @@ sub run_benchmarks ($) { # ############################################################################## +# FIXME how to specify several suites to run? Comma separated list? + sub run_tests () { + run_suite($opt_suite); +} - mtr_report("Finding Tests"); +sub run_suite () { + my $suite= shift; - my $tests= collect_test_cases(); + mtr_print_thick_line(); - mtr_report("Starting Tests"); + mtr_report("Finding Tests in $suite suite"); + + my $tests= collect_test_cases($suite); + + mtr_report("Starting Tests in $suite suite"); mtr_print_header(); @@ -2006,3 +2059,104 @@ sub run_mysqltest ($$) { return mtr_run($exe_mysqltest,$args,$tinfo->{'path'},"",$path_timefile,""); } + +############################################################################## +# +# Usage +# +############################################################################## + +sub usage ($) +{ + print STDERR <<HERE; + +mysql-test-run [ OPTIONS ] [ TESTCASE ] + +FIXME when is TESTCASE arg used or not?! + +Options to control what engine/variation to run + + embedded-server Use the embedded server, i.e. no mysqld daemons + ps-protocol Use the binary protocol between client and server + bench Run the benchmark suite FIXME + small-bench FIXME + no-manager Use the istanse manager (currently disabled) + +Options to control what test suites or cases to run + + force Continue to run the suite after failure + with-ndbcluster Use cluster, and enable test cases that requres it + do-test=PREFIX Run test cases which name are prefixed with PREFIX + start-from=PREFIX Run test cases starting from test prefixed with PREFIX + suite=NAME Run the test suite named NAME. The default is "main" + skip-rpl Skip the replication test cases. + skip-test=PREFIX Skip test cases which name are prefixed with PREFIX + +Options that specify ports + + master_port=PORT Specify the port number used by the first master + slave_port=PORT Specify the port number used by the first slave + ndbcluster_port=i Specify the port number used by cluster FIXME + +Options for test case authoring + + record TESTNAME (Re)genereate the result file for TESTNAME + +Options that pass on options + + mysqld=ARGS Specify additional arguments to "mysqld" + +Options to run test on running server + + extern Use running server for tests FIXME DANGEROUS + ndbconnectstring=STR Use running cluster, and connect using STR + user=USER The databse user name + +Options for debugging the product + + gdb FIXME + manual-gdb FIXME + client-gdb FIXME + ddd FIXME + strace-client FIXME + master-binary=PATH Specify the master "mysqld" to use + slave-binary=PATH Specify the slave "mysqld" to use + +Options for coverage, profiling etc + + gcov FIXME + gprof FIXME + valgrind FIXME + valgrind-all FIXME + valgrind-options=ARGS Extra options to give valgrind + +Misc options + + verbose Verbose output from this script + script-debug Debug this script itself + compress Use the compressed protocol between client and server + timer Show test case execution time + start-and-exit Only initiate and start the "mysqld" servers + fast Don't try to cleanup from earlier runs + help Get this help text + +Options not yet described, or that I want to look into more + + big-test + debug + local + local-master + netware + old-master + sleep=SECONDS + socket=PATH + tmpdir=DIR + user-test=s + wait-timeout=SECONDS + warnings + log-warnings + with-openssl + +HERE + exit(1); +} From c725e090895e3d63073acc49ccad47faaf6328b5 Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Mon, 3 Jan 2005 16:54:08 +0100 Subject: [PATCH 02/11] mtr_process.pl: Added missing stop_reap_all() if returns early from function mysql-test-run.pl: Improved output from --script-debug Initial Cygwin support Improved mysqld process termination --- mysql-test/lib/mtr_process.pl | 384 +++++++++++++++++++--------------- mysql-test/lib/mtr_report.pl | 7 +- mysql-test/mysql-test-run.pl | 56 +++-- 3 files changed, 259 insertions(+), 188 deletions(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index 2263ef5bc24..8c584802b8e 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -4,13 +4,14 @@ # and is part of the translation of the Bourne shell script with the # same name. +use Carp qw(cluck); use strict; use POSIX ":sys_wait_h"; sub mtr_run ($$$$$$); sub mtr_spawn ($$$$$$); -sub mtr_stop_servers ($); +sub mtr_stop_mysqld_servers ($$); sub mtr_kill_leftovers (); # static in C @@ -77,13 +78,21 @@ sub spawn_impl ($$$$$$$) { if ( $::opt_script_debug ) { - print STDERR "-" x 78, "\n"; - print STDERR "STDIN $input\n" if $input; - print STDERR "STDOUT $output\n" if $output; - print STDERR "STDERR $error\n" if $error; - print STDERR "DAEMON\n" if !$join; - print STDERR "EXEC $path ", join(" ",@$arg_list_t), "\n"; - print STDERR "-" x 78, "\n"; + print STDERR "\n"; + print STDERR "#### ", "-" x 78, "\n"; + print STDERR "#### ", "STDIN $input\n" if $input; + print STDERR "#### ", "STDOUT $output\n" if $output; + print STDERR "#### ", "STDERR $error\n" if $error; + if ( $join ) + { + print STDERR "#### ", "run"; + } + else + { + print STDERR "#### ", "spawn"; + } + print STDERR "$path ", join(" ",@$arg_list_t), "\n"; + print STDERR "#### ", "-" x 78, "\n"; } my $pid= fork(); @@ -101,11 +110,11 @@ sub spawn_impl ($$$$$$$) { my $dumped_core= $? & 128; if ( $signal_num ) { - die("spawn got signal $signal_num"); + mtr_error("spawn got signal $signal_num"); } if ( $dumped_core ) { - die("spawn dumped core"); + mtr_error("spawn dumped core"); } return $exit_value; } @@ -127,22 +136,34 @@ sub spawn_impl ($$$$$$$) { if ( $output ) { - open(STDOUT,">",$output) or die "Can't redirect STDOUT to \"$output\": $!"; + if ( ! open(STDOUT,">",$output) ) + { + mtr_error("can't redirect STDOUT to \"$output\": $!"); + } } if ( $error ) { if ( $output eq $error ) { - open(STDERR,">&STDOUT") or die "Can't dup STDOUT: $!"; + if ( ! open(STDERR,">&STDOUT") ) + { + mtr_error("can't dup STDOUT: $!"); + } } else { - open(STDERR,">",$error) or die "Can't redirect STDERR to \"$output\": $!"; + if ( ! open(STDERR,">",$error) ) + { + mtr_error("can't redirect STDERR to \"$output\": $!"); + } } } if ( $input ) { - open(STDIN,"<",$input) or die "Can't redirect STDIN to \"$input\": $!"; + if ( ! open(STDIN,"<",$input) ) + { + mtr_error("can't redirect STDIN to \"$input\": $!"); + } } exec($path,@$arg_list_t); } @@ -163,27 +184,25 @@ sub mtr_kill_leftovers () { for ( my $idx; $idx < 2; $idx++ ) { -# if ( $::master->[$idx]->{'pid'} ) -# { - push(@args, - $::master->[$idx]->{'path_mypid'}, - $::master->[$idx]->{'path_mysock'}, - ); -# } + push(@args,{ + pid => 0, # We don't know the PID + pidfile => $::master->[$idx]->{'path_mypid'}, + sockfile => $::master->[$idx]->{'path_mysock'}, + port => $::master->[$idx]->{'path_myport'}, + }); } for ( my $idx; $idx < 3; $idx++ ) { -# if ( $::slave->[$idx]->{'pid'} ) -# { - push(@args, - $::slave->[$idx]->{'path_mypid'}, - $::slave->[$idx]->{'path_mysock'}, - ); -# } + push(@args,{ + pid => 0, # We don't know the PID + pidfile => $::slave->[$idx]->{'path_mypid'}, + sockfile => $::slave->[$idx]->{'path_mysock'}, + port => $::slave->[$idx]->{'path_myport'}, + }); } - mtr_stop_servers(\@args); + mtr_stop_mysqld_servers(\@args, 1); # We scan the "var/run/" directory for other process id's to kill my $rundir= "$::glob_mysql_test_dir/var/run"; # FIXME $path_run_dir or something @@ -211,17 +230,29 @@ sub mtr_kill_leftovers () { } closedir(RUNDIR); - my $retries= 10; # 10 seconds - do - { - kill(9, @pids); - } while ( $retries-- and kill(0, @pids) ); + start_reap_all(); - if ( kill(0, @pids) ) + if ( $::glob_cygwin_perl ) { - mtr_error("can't kill processes " . join(" ", @pids)); + # We have no (easy) way of knowing the Cygwin controlling + # process, in the PID file we only have the Windows process id. + system("kill -f " . join(" ",@pids)); # Hope for the best.... + } + else + { + my $retries= 10; # 10 seconds + do + { + kill(9, @pids); + } while ( $retries-- and kill(0, @pids) ); + + if ( kill(0, @pids) ) + { + mtr_error("can't kill processes " . join(" ", @pids)); + } } + stop_reap_all(); } } @@ -237,185 +268,200 @@ sub mtr_kill_leftovers () { # This is not perfect, there could still be other server processes # left. -sub mtr_stop_servers ($) { - my $spec= shift; +# Force flag is to be set only for killing mysqld servers this script +# didn't create in this run, i.e. initial cleanup before we start working. +# If force flag is set, we try to kill all with mysqladmin, and +# give up if we have no PIDs. +# FIXME On some operating systems, $srv->{'pid'} and $srv->{'pidfile'} +# will not be the same PID. We need to try to kill both I think. + +sub mtr_stop_mysqld_servers ($$) { + my $spec= shift; + my $force= shift; + + # ---------------------------------------------------------------------- + # If the process was not started from this file, we got no PID, + # we try to find it in the PID file. + # ---------------------------------------------------------------------- + + my $any_pid= 0; # If we have any PIDs + + foreach my $srv ( @$spec ) + { + if ( ! $srv->{'pid'} and -f $srv->{'pidfile'} ) + { + $srv->{'pid'}= mtr_get_pid_from_file($srv->{'pidfile'}); + } + if ( $srv->{'pid'} ) + { + $any_pid= 1; + } + } + + # If the processes where started from this script, and we know + # no PIDs, then we don't have to do anything. + + if ( ! $any_pid and ! $force ) + { + # cluck "This is how we got here!"; + return; + } + + # ---------------------------------------------------------------------- # First try nice normal shutdown using 'mysqladmin' + # ---------------------------------------------------------------------- + start_reap_all(); # Don't require waitpid() of children + + foreach my $srv ( @$spec ) { - my @args= @$spec; - while ( @args ) + if ( -e $srv->{'sockfile'} or $srv->{'port'} ) { - my $pidfile= shift @args; # FIXME not used here.... - my $sockfile= shift @args; + # FIXME wrong log..... + # FIXME, stderr..... + # Shutdown time must be high as slave may be in reconnect + my $args; - if ( -f $sockfile ) + mtr_init_args(\$args); + + mtr_add_arg($args, "--no-defaults"); + mtr_add_arg($args, "-uroot"); + if ( -e $srv->{'sockfile'} ) { - - # FIXME wrong log..... - # FIXME, stderr..... - # Shutdown time must be high as slave may be in reconnect - my $opts= - [ - "--no-defaults", - "-uroot", - "--socket=$sockfile", - "--connect_timeout=5", - "--shutdown_timeout=70", - "shutdown", - ]; - # We don't wait for termination of mysqladmin - mtr_spawn($::exe_mysqladmin, $opts, - "", $::path_manager_log, $::path_manager_log, ""); + mtr_add_arg($args, "--socket=%s", $srv->{'sockfile'}); } + if ( $srv->{'port'} ) + { + mtr_add_arg($args, "--port=%s", $srv->{'port'}); + } + mtr_add_arg($args, "--connect_timeout=5"); + mtr_add_arg($args, "--shutdown_timeout=70"); + mtr_add_arg($args, "shutdown"); + # We don't wait for termination of mysqladmin + mtr_spawn($::exe_mysqladmin, $args, + "", $::path_manager_log, $::path_manager_log, ""); } } - # Wait for them all to remove their socket file + # Wait for them all to remove their pid and socket file - SOCKREMOVED: + PIDSOCKFILEREMOVED: for (my $loop= $::opt_sleep_time_for_delete; $loop; $loop--) { - my $sockfiles_left= 0; - my @args= @$spec; - while ( @args ) + my $pidsockfiles_left= 0; + foreach my $srv ( @$spec ) { - my $pidfile= shift @args; - my $sockfile= shift @args; - if ( -f $sockfile or -f $pidfile ) + if ( -e $srv->{'sockfile'} or -f $srv->{'pidfile'} ) { - $sockfiles_left++; # Could be that pidfile is left + $pidsockfiles_left++; # Could be that pidfile is left } } - if ( ! $sockfiles_left ) + if ( ! $pidsockfiles_left ) { - last SOCKREMOVED; - } - if ( $loop > 1 ) - { - sleep(1); # One second + last PIDSOCKFILEREMOVED; } + mtr_debug("Sleep for 1 second waiting for pid and socket file removal"); + sleep(1); # One second } + # ---------------------------------------------------------------------- + # If no known PIDs, we have nothing more to try + # ---------------------------------------------------------------------- + + if ( ! $any_pid ) + { + stop_reap_all(); + return; + } + + # ---------------------------------------------------------------------- # We may have killed all that left a socket, but we are not sure we got - # them all killed. We now check the PID file, if any - - # Try nice kill with SIG_TERM + # them all killed. If we suspect it lives, try nice kill with SIG_TERM. + # Note that for true Win32 processes, kill(0,$pid) will not return 1. + # ---------------------------------------------------------------------- + SIGNAL: + foreach my $sig (15,9) { - my @args= @$spec; - while ( @args ) + my $process_left= 0; + foreach my $srv ( @$spec ) { - my $pidfile= shift @args; - my $sockfile= shift @args; - if (-f $pidfile) + if ( $srv->{'pid'} and + ( -f $srv->{'pidfile'} or kill(0,$srv->{'pid'}) ) ) { - my $pid= mtr_get_pid_from_file($pidfile); - mtr_warning("process $pid not cooperating with mysqladmin, " . - "will send TERM signal to process"); - kill(15,$pid); # SIG_TERM + $process_left++; + mtr_warning("process $srv->{'pid'} not cooperating, " . + "will send signal $sig to process"); + kill($sig,$srv->{'pid'}); # SIG_TERM + } + if ( ! $process_left ) + { + last SIGNAL; } } + mtr_debug("Sleep for 5 seconds waiting for processes to die"); + sleep(5); # We wait longer than usual } - # Wait for them all to die - - for (my $loop= $::opt_sleep_time_for_delete; $loop; $loop--) - { - my $pidfiles_left= 0; - my @args= @$spec; - while ( @args ) - { - my $pidfile= shift @args; - my $sockfile= shift @args; - if ( -f $pidfile ) - { - $pidfiles_left++; - } - } - if ( ! $pidfiles_left ) - { - return; - } - if ( $loop > 1 ) - { - sleep(1); # One second - } - } - - # Try hard kill with SIG_KILL + # ---------------------------------------------------------------------- + # Now, we check if all we can find using kill(0,$pid) are dead, + # and just assume the rest are. We cleanup socket and PID files. + # ---------------------------------------------------------------------- { - my @args= @$spec; - while ( @args ) + my $errors= 0; + foreach my $srv ( @$spec ) { - my $pidfile= shift @args; - my $sockfile= shift @args; - if (-f $pidfile) + if ( $srv->{'pid'} ) { - my $pid= mtr_get_pid_from_file($pidfile); - mtr_warning("$pid did not die from TERM signal, ", - "will send KILL signal to process"); - kill(9,$pid); - } - } - } - - # We check with Perl "kill 0" if process still exists - - PIDFILES: - for (my $loop= $::opt_sleep_time_for_delete; $loop; $loop--) - { - my $not_terminated= 0; - my @args= @$spec; - while ( @args ) - { - my $pidfile= shift @args; - my $sockfile= shift @args; - if (-f $pidfile) - { - my $pid= mtr_get_pid_from_file($pidfile); - if ( ! kill(0,$pid) ) + if ( kill(0,$srv->{'pid'}) ) { - $not_terminated++; - mtr_warning("could't kill $pid"); + # FIXME In Cygwin there seem to be some fast reuse + # of PIDs, so dying may not be the right thing to do. + $errors++; + mtr_warning("can't kill process $srv->{'pid'}"); + } + else + { + # We managed to kill it at last + # FIXME In Cygwin, we will get here even if the process lives. + + # Not needed as we know the process is dead, but to be safe + # we unlink and check success in two steps. We first unlink + # without checking the error code, and then check if the + # file still exists. + + foreach my $file ($srv->{'pidfile'}, $srv->{'sockfile'}) + { + unlink($file); + if ( -e $file ) + { + $errors++; + mtr_warning("couldn't delete $file"); + } + } } } } - if ( ! $not_terminated ) + if ( $errors ) { - last PIDFILES; - } - if ( $loop > 1 ) - { - sleep(1); # One second + # We are in trouble, just die.... + mtr_error("we could not kill or clean up all processes"); } } - { - my $pidfiles_left= 0; - my @args= @$spec; - while ( @args ) - { - my $pidfile= shift @args; - my $sockfile= shift @args; - if ( -f $pidfile ) - { - if ( ! unlink($pidfile) ) - { - $pidfiles_left++; - mtr_warning("could't delete $pidfile"); - } - } - } - if ( $pidfiles_left ) - { - mtr_error("one or more pid files could not be deleted"); - } - } + stop_reap_all(); # FIXME We just assume they are all dead, we don't know.... } +sub start_reap_all { + $SIG{CHLD}= 'IGNORE'; # FIXME is this enough? +} + +sub stop_reap_all { + $SIG{CHLD}= 'DEFAULT'; +} 1; diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl index 350cd993f19..0f75fc1341a 100644 --- a/mysql-test/lib/mtr_report.pl +++ b/mysql-test/lib/mtr_report.pl @@ -14,6 +14,7 @@ sub mtr_report_test_skipped($); sub mtr_show_failed_diff ($); sub mtr_report_stats ($); sub mtr_print_line (); +sub mtr_print_thick_line (); sub mtr_print_header (); sub mtr_report (@); sub mtr_warning (@); @@ -214,6 +215,10 @@ sub mtr_print_line () { print '-' x 55, "\n"; } +sub mtr_print_thick_line () { + print '=' x 55, "\n"; +} + sub mtr_print_header () { print "\n"; if ( $::opt_timer ) @@ -250,7 +255,7 @@ sub mtr_error (@) { sub mtr_debug (@) { if ( $::opt_script_debug ) { - print "mysql-test-run: DEBUG: ",join(" ", @_),"\n"; + print STDERR "####: ",join(" ", @_),"\n"; } } diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 5565d29fb7b..01729aa1018 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -67,6 +67,11 @@ # is to use the Devel::Trace package found at # "http://www.plover.com/~mjd/perl/Trace/" and run this script like # "perl -d:Trace mysql-test-run.pl" +# +# FIXME Save a PID file from this code as well, to record the process +# id we think it has. In Cygwin, a fork creates one Cygwin process, +# and then the real Win32 process. Cygwin Perl can only kill Cygwin +# processes. And "mysqld --bootstrap ..." doesn't save a PID file. $Devel::Trace::TRACE= 0; # Don't trace boring init stuff @@ -147,7 +152,9 @@ our @mysqld_src_dirs= # Misc global variables -our $glob_win32= 0; +our $glob_win32= 0; # OS and native Win32 executables +our $glob_win32_perl= 0; # ActiveState Win32 Perl +our $glob_cygwin_perl= 0; # Cygwin Perl our $glob_mysql_test_dir= undef; our $glob_mysql_bench_dir= undef; our $glob_hostname= undef; @@ -383,7 +390,9 @@ sub initial_setup () { $glob_scriptname= basename($0); - $glob_win32= ($^O eq "MSWin32"); + $glob_win32_perl= ($^O eq "MSWin32"); + $glob_cygwin_perl= ($^O eq "cygwin"); + $glob_win32= ($glob_win32_perl or $glob_cygwin_perl); # We require that we are in the "mysql-test" directory # to run mysql-test-run @@ -404,6 +413,12 @@ sub initial_setup () { # 'basedir' is always parent of "mysql-test" directory $glob_mysql_test_dir= cwd(); + if ( $glob_cygwin_perl ) + { + # Windows programs like 'mysqld' needs Windows paths + $glob_mysql_test_dir= `cygpath -m $glob_mysql_test_dir`; + chomp($glob_mysql_test_dir); + } $glob_basedir= dirname($glob_mysql_test_dir); $glob_mysql_bench_dir= "$glob_basedir/mysql-bench"; # FIXME make configurable @@ -991,7 +1006,7 @@ sub collect_test_cases ($) { if ( -f $master_sh ) { - if ( $glob_win32 ) + if ( $glob_win32_perl ) { $tinfo->{'skip'}= 1; } @@ -1004,7 +1019,7 @@ sub collect_test_cases ($) { if ( -f $slave_sh ) { - if ( $glob_win32 ) + if ( $glob_win32_perl ) { $tinfo->{'skip'}= 1; } @@ -1115,6 +1130,7 @@ sub sleep_until_file_created ($$) { { return; } + mtr_debug("Sleep for 1 second waiting for creation of $pidfile"); sleep(1); } @@ -1396,6 +1412,8 @@ sub run_testcase ($) { # the preparation. # ---------------------------------------------------------------------- + mtr_report_test_name($tinfo); + mtr_tofile($master->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n"); do_before_start_master($tname,$tinfo->{'master_sh'}); @@ -1403,8 +1421,6 @@ sub run_testcase ($) { # Start masters # ---------------------------------------------------------------------- - mtr_report_test_name($tinfo); - if ( ! $glob_use_running_server and ! $glob_use_embedded_server ) { # FIXME give the args to the embedded server?! @@ -1914,15 +1930,17 @@ sub stop_masters () { # the mysqld process from being killed if ( $master->[$idx]->{'pid'} ) { - push(@args, - $master->[$idx]->{'path_mypid'}, - $master->[$idx]->{'path_mysock'}, - ); - $master->[$idx]->{'pid'}= 0; + push(@args,{ + pid => $master->[$idx]->{'pid'}, + pidfile => $master->[$idx]->{'path_mypid'}, + sockfile => $master->[$idx]->{'path_mysock'}, + port => $master->[$idx]->{'path_myport'}, + }); + $master->[$idx]->{'pid'}= 0; # Assume we are done with it } } - mtr_stop_servers(\@args); + mtr_stop_mysqld_servers(\@args, 0); } sub stop_slaves () { @@ -1934,15 +1952,17 @@ sub stop_slaves () { { if ( $slave->[$idx]->{'pid'} ) { - push(@args, - $slave->[$idx]->{'path_mypid'}, - $slave->[$idx]->{'path_mysock'}, - ); - $slave->[$idx]->{'pid'}= 0; + push(@args,{ + pid => $slave->[$idx]->{'pid'}, + pidfile => $slave->[$idx]->{'path_mypid'}, + sockfile => $slave->[$idx]->{'path_mysock'}, + port => $slave->[$idx]->{'path_myport'}, + }); + $slave->[$idx]->{'pid'}= 0; # Assume we are done with it } } - mtr_stop_servers(\@args); + mtr_stop_mysqld_servers(\@args, 0); } From 7d0d1919999447482475820233b815899095a99b Mon Sep 17 00:00:00 2001 From: "joreland@mysql.com" <> Date: Mon, 3 Jan 2005 19:39:09 +0100 Subject: [PATCH 03/11] bug#7626 - ndb UintPtr handling --- ndb/include/ndb_types.h | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/ndb/include/ndb_types.h b/ndb/include/ndb_types.h index 0d603cc2ab3..1284ace3bbc 100644 --- a/ndb/include/ndb_types.h +++ b/ndb/include/ndb_types.h @@ -30,31 +30,22 @@ typedef unsigned int Uint32; typedef unsigned int UintR; -#ifdef __SIZE_TYPE__ -typedef __SIZE_TYPE__ UintPtr; -#else -#include <ndb_global.h> -#ifdef HAVE_STDINT_H -#include <stdint.h> -#endif -#ifdef HAVE_INTTYPES_H -#include <inttypes.h> -#endif -#if defined(WIN32) || defined(NDB_WIN32) -typedef Uint32 UintPtr; -#else -typedef uintptr_t UintPtr; -#endif -#endif - #if defined(WIN32) || defined(NDB_WIN32) typedef unsigned __int64 Uint64; typedef signed __int64 Int64; -typedef UintPtr ssize_t; #else typedef unsigned long long Uint64; typedef signed long long Int64; #endif +#ifdef __SIZE_TYPE__ +typedef __SIZE_TYPE__ UintPtr; +#else +#if SIZEOF_CHARP == 4 +typedef Uint32 UintPtr; +#else +typedef Uint64 UintPtr; +#endif +#endif #endif From 18920d4831940c1c240b5a0fb9d67d73c060204a Mon Sep 17 00:00:00 2001 From: "joreland@mysql.com" <> Date: Mon, 3 Jan 2005 20:10:23 +0100 Subject: [PATCH 04/11] bug#7626 - post review version --- ndb/include/ndb_global.h.in | 36 ++++++++++++++++++++++++++++++++++++ ndb/include/ndb_types.h | 27 +-------------------------- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/ndb/include/ndb_global.h.in b/ndb/include/ndb_global.h.in index aefb319730c..cadbb8cabf2 100644 --- a/ndb/include/ndb_global.h.in +++ b/ndb/include/ndb_global.h.in @@ -16,12 +16,48 @@ #define HAVE_STRCASECMP #define strcasecmp _strcmpi #pragma warning(disable: 4503 4786) +typedef unsigned __int64 Uint64; +typedef signed __int64 Int64; #else #undef NDB_WIN32 #define DIR_SEPARATOR "/" +typedef unsigned long long Uint64; +typedef signed long long Int64; #endif #include <my_global.h> + +typedef signed char Int8; +typedef unsigned char Uint8; +typedef signed short Int16; +typedef unsigned short Uint16; +typedef signed int Int32; +typedef unsigned int Uint32; + +typedef unsigned int UintR; + +#ifdef __SIZE_TYPE__ +typedef __SIZE_TYPE__ UintPtr; +#elif SIZEOF_CHARP == 4 +typedef Uint32 UintPtr; +#elif SIZEOF_CHARP == 8 +typedef Uint64 UintPtr; +#else +#error "Unknown size of (char *)" +#endif + +#if ! (SIZEOF_CHAR == 1) +#error "Invalid define for Uint8" +#endif + +#if ! (SIZEOF_INT == 4) +#error "Invalid define for Uint32" +#endif + +#if ! (SIZEOF_LONG_LONG == 8) +#error "Invalid define for Uint64" +#endif + #include <my_alarm.h> #ifdef _AIX diff --git a/ndb/include/ndb_types.h b/ndb/include/ndb_types.h index 1284ace3bbc..6cf9bb40d7f 100644 --- a/ndb/include/ndb_types.h +++ b/ndb/include/ndb_types.h @@ -21,31 +21,6 @@ #ifndef NDB_TYPES_H #define NDB_TYPES_H -typedef signed char Int8; -typedef unsigned char Uint8; -typedef signed short Int16; -typedef unsigned short Uint16; -typedef signed int Int32; -typedef unsigned int Uint32; - -typedef unsigned int UintR; - -#if defined(WIN32) || defined(NDB_WIN32) -typedef unsigned __int64 Uint64; -typedef signed __int64 Int64; -#else -typedef unsigned long long Uint64; -typedef signed long long Int64; -#endif - -#ifdef __SIZE_TYPE__ -typedef __SIZE_TYPE__ UintPtr; -#else -#if SIZEOF_CHARP == 4 -typedef Uint32 UintPtr; -#else -typedef Uint64 UintPtr; -#endif -#endif +#include "ndb_global.h" #endif From 76d0f49495ea712054d07affd07f874c84934627 Mon Sep 17 00:00:00 2001 From: "ingo@mysql.com" <> Date: Mon, 3 Jan 2005 20:48:49 +0100 Subject: [PATCH 05/11] Fixed a typo. --- mysys/mf_keycaches.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysys/mf_keycaches.c b/mysys/mf_keycaches.c index 8bf203e249f..fee3096de52 100644 --- a/mysys/mf_keycaches.c +++ b/mysys/mf_keycaches.c @@ -235,7 +235,7 @@ static my_bool safe_hash_set(SAFE_HASH *hash, const byte *key, uint length, if (my_hash_insert(&hash->hash, (byte*) entry)) { /* This can only happen if hash got out of memory */ - my_delete((char*) entry, MYF(0)); + my_free((char*) entry, MYF(0)); error= 1; goto end; } From 2e95c0f49a7863a1df2d219b45a1af2f1ddbae3b Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Mon, 3 Jan 2005 21:28:14 +0100 Subject: [PATCH 06/11] - Updated Bootstrap to include merge ChangeSets in the source distribution's ChangeLog, too (to be more exact when tagging a release that's based on a merge ChangeSet) --- Build-tools/Bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build-tools/Bootstrap b/Build-tools/Bootstrap index fc36c51ec85..10211dbb59c 100755 --- a/Build-tools/Bootstrap +++ b/Build-tools/Bootstrap @@ -252,7 +252,7 @@ if (defined $opt_changelog) $msg= "Adding $target_dir/ChangeLog"; $msg.= " (down to revision $opt_changelog)" if $opt_changelog ne ""; &logger($msg); - $command= "bk changes -mv"; + $command= "bk changes -v"; $command.= " -r" if ($opt_changelog ne "" || $opt_revision); $command.= $opt_changelog if $opt_changelog ne ""; $command.= ".." if ($opt_changelog ne "" && !$opt_revision); From 0f835244a6100ba573b166ce25ddd87b7d148dda Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Mon, 3 Jan 2005 23:02:26 +0100 Subject: [PATCH 07/11] Fix typo in crash-me 'MATCHES' test (Bug # 5875) --- sql-bench/crash-me.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-bench/crash-me.sh b/sql-bench/crash-me.sh index 8ec62442b11..a40ef8fbc7d 100644 --- a/sql-bench/crash-me.sh +++ b/sql-bench/crash-me.sh @@ -1039,7 +1039,7 @@ try_and_report("Automatic row id", "automatic_rowid", ["MATCH UNIQUE","match_unique", "1 match unique (select a from crash_me)",1,0], ["MATCH","match","1 match (select a from crash_me)",1,0], - ["MATCHES","matches","b matcjhes 'a*'",1,0], + ["MATCHES","matches","b matches 'a*'",1,0], ["NOT BETWEEN","not_between","7 not between 4 and 6",1,0], ["NOT EXISTS","not_exists", "not exists (select * from crash_me where a = 2)",1,0], From 663396653ab5ebed874d7ec89daf6e8e86472c9e Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Tue, 4 Jan 2005 01:49:29 +0100 Subject: [PATCH 08/11] Use 'ps xaww' in mysqld_safe (on Linux) so whole command-line is searched for port and/or pid-file parameters. (Bug #5878) --- scripts/mysqld_safe.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index 1f4d17f8885..270c08679eb 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -322,13 +322,13 @@ do # but should work for the rest of the servers. # The only thing is ps x => redhat 5 gives warnings when using ps -x. # kill -9 is used or the process won't react on the kill. - numofproces=`ps xa | grep -v "grep" | grep "$ledir/$MYSQLD\>" | grep -c "pid-file=$pid_file"` + numofproces=`ps xaww | grep -v "grep" | grep "$ledir/$MYSQLD\>" | grep -c "pid-file=$pid_file"` echo -e "\nNumber of processes running now: $numofproces" | tee -a $err_log I=1 while test "$I" -le "$numofproces" do - PROC=`ps xa | grep "$ledir/$MYSQLD\>" | grep -v "grep" | grep "pid-file=$pid_file" | sed -n '$p'` + PROC=`ps xaww | grep "$ledir/$MYSQLD\>" | grep -v "grep" | grep "pid-file=$pid_file" | sed -n '$p'` for T in $PROC do From 954d0181ec65595d887bd2953c0b8a4bbd228ef1 Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Tue, 4 Jan 2005 02:45:01 +0100 Subject: [PATCH 09/11] Make query_cache_wlock_invalidate visible in SHOW VARIABLES (Bug #7594) --- sql/set_var.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/set_var.cc b/sql/set_var.cc index d5aadbfbdab..122daa0ea95 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -593,6 +593,8 @@ struct show_var_st init_vars[]= { {sys_query_cache_limit.name,(char*) &sys_query_cache_limit, SHOW_SYS}, {sys_query_cache_size.name, (char*) &sys_query_cache_size, SHOW_SYS}, {sys_query_cache_type.name, (char*) &sys_query_cache_type, SHOW_SYS}, + {sys_query_cache_wlock_invalidate.name, + (char*) &sys_query_cache_wlock_invalidate, SHOW_SYS}, #endif /* HAVE_QUERY_CACHE */ {sys_query_prealloc_size.name, (char*) &sys_query_prealloc_size, SHOW_SYS}, {sys_range_alloc_block_size.name, (char*) &sys_range_alloc_block_size, From 913f50576956b8b07c161f01aa09979c7dd34b64 Mon Sep 17 00:00:00 2001 From: "paul@kite-hub.kitebird.com" <> Date: Tue, 4 Jan 2005 10:32:42 -0600 Subject: [PATCH 10/11] client.c: Make multi-statements the preferred option name (to coincide with the renaming of the CLIENT_MULTI_RESULTS symbol to CLIENT_MULTI_STATEMENTS). Continue to allow multi-queries for backward compatibility. --- sql-common/client.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sql-common/client.c b/sql-common/client.c index 87a781e0a0d..b6813ee4cfc 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -882,7 +882,7 @@ static const char *default_options[]= "connect-timeout", "local-infile", "disable-local-infile", "replication-probe", "enable-reads-from-master", "repl-parse-query", "ssl-cipher", "max-allowed-packet", "protocol", "shared-memory-base-name", - "multi-results", "multi-queries", "secure-auth", + "multi-results", "multi-statements", "multi-queries", "secure-auth", NullS }; @@ -1088,9 +1088,10 @@ void mysql_read_default_options(struct st_mysql_options *options, options->client_flag|= CLIENT_MULTI_RESULTS; break; case 31: + case 32: options->client_flag|= CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS; break; - case 32: /* secure-auth */ + case 33: /* secure-auth */ options->secure_auth= TRUE; break; default: From de85fdb78faa8531606e17aa2b2a15d55b5f2b5a Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Tue, 4 Jan 2005 23:07:29 +0100 Subject: [PATCH 11/11] mysql_test_run_new.dsp: Link mysql_test_run_new as console application my_manage.c: The type intptr_t isn't defined for VC 6.0 Changed return type for CreateProcess() to bool mysql_test_run_new.c: The type intptr_t isn't defined for VC 6.0 mysqltest.dsp: Added regex to additional build types for mysqltest mysqldump.dsp: Added mysys.lib for linking mysqldump --- VC++Files/client/mysqldump.dsp | 12 ++++++------ VC++Files/client/mysqltest.dsp | 16 ++++++++-------- VC++Files/mysql-test/mysql_test_run_new.dsp | 4 ++-- mysql-test/my_manage.c | 10 +++++++++- mysql-test/mysql_test_run_new.c | 7 ++++++- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/VC++Files/client/mysqldump.dsp b/VC++Files/client/mysqldump.dsp index a1ebdfe11a6..3c955639596 100644 --- a/VC++Files/client/mysqldump.dsp +++ b/VC++Files/client/mysqldump.dsp @@ -51,8 +51,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" !ELSEIF "$(CFG)" == "mysqldump - Win32 Debug" @@ -76,8 +76,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqldump.exe" /pdbtype:sept /libpath:"..\lib_debug\\" +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqldump.exe" /pdbtype:sept /libpath:"..\lib_debug\\" !ELSEIF "$(CFG)" == "mysqldump - Win32 classic" @@ -103,8 +103,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=xilink6.exe -# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" -# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\" +# ADD BASE LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqldump.exe" /libpath:"..\lib_release\\" +# ADD LINK32 mysqlclient.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib mysys.lib /nologo /subsystem:console /machine:I386 /out:"../client_classic/mysqldump.exe" /libpath:"..\lib_release\\" !ENDIF diff --git a/VC++Files/client/mysqltest.dsp b/VC++Files/client/mysqltest.dsp index 1f1613026a9..d04dc5bfce8 100644 --- a/VC++Files/client/mysqltest.dsp +++ b/VC++Files/client/mysqltest.dsp @@ -67,8 +67,8 @@ LINK32=link.exe # PROP Output_Dir ".\classic" # PROP Intermediate_Dir ".\classic" # PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /I "../include" /I "../" /W3 /Ob1 /G6 /D "_CONSOLE" /D "_WINDOWS" /D "LICENSE=Commercial" /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\classic/mysqltest.pch" /Fo".\classic/" /Fd".\classic/" /c /GX -# ADD CPP /nologo /MT /I "../include" /I "../" /W3 /Ob1 /G6 /D "_CONSOLE" /D "_WINDOWS" /D "LICENSE=Commercial" /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\classic/mysqltest.pch" /Fo".\classic/" /Fd".\classic/" /c /GX +# ADD BASE CPP /nologo /MT /I "../include" /I "../regex" /I "../" /W3 /Ob1 /G6 /D "_CONSOLE" /D "_WINDOWS" /D "LICENSE=Commercial" /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\classic/mysqltest.pch" /Fo".\classic/" /Fd".\classic/" /c /GX +# ADD CPP /nologo /MT /I "../include" /I "../regex" /I "../" /W3 /Ob1 /G6 /D "_CONSOLE" /D "_WINDOWS" /D "LICENSE=Commercial" /D "DBUG_OFF" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\classic/mysqltest.pch" /Fo".\classic/" /Fd".\classic/" /c /GX # ADD BASE MTL /nologo /tlb".\classic\mysqltest.tlb" /win32 # ADD MTL /nologo /tlb".\classic\mysqltest.tlb" /win32 # ADD BASE RSC /l 1033 /d "NDEBUG" @@ -77,8 +77,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_classic\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\classic\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 !ELSEIF "$(CFG)" == "mysqltest - Win32 Release" @@ -92,8 +92,8 @@ LINK32=link.exe # PROP Output_Dir ".\release" # PROP Intermediate_Dir ".\release" # PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /I "../include" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\release/mysqltest.pch" /Fo".\release/" /Fd".\release/" /c /GX -# ADD CPP /nologo /MT /I "../include" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\release/mysqltest.pch" /Fo".\release/" /Fd".\release/" /c /GX +# ADD BASE CPP /nologo /MT /I "../include" /I "../regex" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\release/mysqltest.pch" /Fo".\release/" /Fd".\release/" /c /GX +# ADD CPP /nologo /MT /I "../include" /I "../regex" /I "../" /W3 /Ob1 /G6 /D "DBUG_OFF" /D "_CONSOLE" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /GF /Gy /Fp".\release/mysqltest.pch" /Fo".\release/" /Fd".\release/" /c /GX # ADD BASE MTL /nologo /tlb".\release\mysqltest.tlb" /win32 # ADD MTL /nologo /tlb".\release\mysqltest.tlb" /win32 # ADD BASE RSC /l 1033 /d "NDEBUG" @@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib mysqlclient.lib wsock32.lib mysys.lib regex.lib /nologo /out:"..\client_release\mysqltest.exe" /incremental:no /libpath:"..\lib_release\" /pdb:".\release\mysqltest.pdb" /pdbtype:sept /subsystem:console /MACHINE:I386 !ENDIF diff --git a/VC++Files/mysql-test/mysql_test_run_new.dsp b/VC++Files/mysql-test/mysql_test_run_new.dsp index 7e43da20b26..61392b00b94 100644 --- a/VC++Files/mysql-test/mysql_test_run_new.dsp +++ b/VC++Files/mysql-test/mysql_test_run_new.dsp @@ -76,8 +76,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:windows -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:windows +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:console +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /out:"..\mysql-test\mysql_test_run_new.exe" /incremental:no /pdb:".\Release\mysql_test_run_new.pdb" /pdbtype:sept /subsystem:console !ENDIF diff --git a/mysql-test/my_manage.c b/mysql-test/my_manage.c index 472b0d32683..1f006f7ab90 100644 --- a/mysql-test/my_manage.c +++ b/mysql-test/my_manage.c @@ -327,7 +327,7 @@ int spawn(char *path, arg_list_t *al, int join, char *input, int spawn(char *path, arg_list_t *al, int join, char *input, char *output, char *error, HANDLE *pid) { - intptr_t result; + bool result; int i; STARTUPINFO startup_info; PROCESS_INFORMATION process_information; @@ -665,7 +665,11 @@ void del_tree(char *dir) rmdir(dir); #else struct _finddata_t parent; +#if defined(_MSC_VER) && _MSC_VER > 1200 intptr_t handle; +#else + long handle; +#endif /* _MSC_VER && _MSC_VER > 1200 */ char temp[FN_REFLEN]; char mask[FN_REFLEN]; @@ -728,7 +732,11 @@ int removef(const char *format, ...) va_list ap; char path[FN_REFLEN]; struct _finddata_t parent; +#if defined(_MSC_VER) && _MSC_VER > 1200 intptr_t handle; +#else + long handle; +#endif /* _MSC_VER && _MSC_VER > 1200 */ char temp[FN_REFLEN]; char *p; diff --git a/mysql-test/mysql_test_run_new.c b/mysql-test/mysql_test_run_new.c index fe13d71c1c2..3ffe7b28296 100644 --- a/mysql-test/mysql_test_run_new.c +++ b/mysql-test/mysql_test_run_new.c @@ -37,7 +37,8 @@ #include <sys/mode.h> #endif #ifdef __WIN__ -#include <Shlwapi.h> +#include <windows.h> +#include <shlwapi.h> #include <direct.h> #endif @@ -1544,7 +1545,11 @@ int main(int argc, char **argv) } #else struct _finddata_t dir; +#if defined(_MSC_VER) && _MSC_VER > 1200 intptr_t handle; +#else + long handle; +#endif /* _MSC_VER && _MSC_VER > 1200 */ char test[FN_LEN]; char mask[FN_REFLEN]; char *p;