Commit e382e37f authored by unknown's avatar unknown

Merge work:/my/mysql-4.0 into mashka.mysql.fi:/home/my/mysql-4.0

parents 113ff6aa 2773f9e7
......@@ -135,6 +135,7 @@ $ENV{'MYSQL_UNIX_PORT'}=$mysql_unix_port="$opt_tmp/mysql$opt_suffix.build";
$ENV{"PERL5LIB"}="$pwd/$host/perl5:$pwd/$host/perl5/site_perl";
$slave_port=$mysql_tcp_port+16;
$manager_port=$mysql_tcp_port+1;
$mysqladmin_args="--no-defaults -u root --connect_timeout=5 --shutdown_timeout=20";
if ($opt_stage == 0)
{
......@@ -154,13 +155,18 @@ log_timestamp();
if (-x "$host/bin/mysqladmin")
{
log_system("$host/bin/mysqladmin --no-defaults -u root -S $mysql_unix_port -s shutdown");
log_system("$host/bin/mysqladmin --no-defaults -u root -P $mysql_tcp_port -h $host -s shutdown");
log_system("$host/bin/mysqladmin --no-defaults -u root -P $slave_port -h $host -s shutdown");
log_system("$host/bin/mysqladmin --no-defaults -u root -P 9306 -h $host -s shutdown");
log_system("$host/bin/mysqladmin --no-defaults -u root -P 9307 -h $host -s shutdown");
log_system("$host/bin/mysqladmin $mysqladmin_args -S $mysql_unix_port -s shutdown");
log_system("$host/bin/mysqladmin $mysqladmin_args -P $mysql_tcp_port -h $host -s shutdown");
log_system("$host/bin/mysqladmin $mysqladmin_args -P $slave_port -h $host -s shutdown");
log_system("$host/bin/mysqladmin $mysqladmin_args -P 9306 -h $host -s shutdown");
log_system("$host/bin/mysqladmin $mysqladmin_args -P 9307 -h $host -s shutdown");
}
kill_all("mysqlmanager");
#
# Kill all old processes that are in the build directories
# This is to find any old mysqld servers left from previous builds
kill_all("$pwd/host/mysql");
kill_all("$pwd/host/test");
if ($opt_stage == 0)
{
......@@ -308,8 +314,9 @@ if ($opt_stage <= 4 && !$opt_no_test)
$tar_file =~ /(mysql[^\/]*)\.tar/;
$ver=$1;
$test_dir="$pwd/$host/test/$ver";
$ENV{"LD_LIBRARY_PATH"}= "$test_dir/lib:" . $ENV{"LD_LIBRARY_PATH"};
$ENV{"LD_LIBRARY_PATH"}= ("$test_dir/lib" .
(defined($ENV{"LD_LIBRARY_PATH"}) ?
":" . $ENV{"LD_LIBRARY_PATH"} : ""));
#
# Run the test suite
#
......@@ -328,7 +335,7 @@ if (!$opt_no_test && !$opt_no_benchmark)
{
my $extra;
safe_cd($test_dir);
log_system("./bin/mysqladmin --no-defaults -u root -S $mysql_unix_port -s shutdown") || info("There was no mysqld running\n");
log_system("./bin/mysqladmin $mysqladmin_args -S $mysql_unix_port -s shutdown") || info("There was no mysqld running\n");
sleep(2);
log_system("rm -f ./data/mysql/*");
check_system("scripts/mysql_install_db --no-defaults --skip-locking","https://order");
......@@ -418,7 +425,7 @@ if ($opt_stage <= 9 && !$opt_no_test && !$opt_no_benchmark)
rm_all($bench_tmpdir);
rm_all("$opt_tmp") if ($new_opt_tmp);
log_system("$pwd/$host/bin/mysqladmin --no-defaults -S $mysql_unix_port -u root shutdown");
log_system("$pwd/$host/bin/mysqladmin $mysqladmin_args -S $mysql_unix_port -u root shutdown");
print LOG "ok\n";
close LOG;
print "$host: ok\n";
......@@ -429,7 +436,7 @@ exit 0;
sub usage
{
print <<EOF;
$0 version 1.4
$0 version 1.5
$0 takes the following options:
......
......@@ -24,7 +24,7 @@
#endif
#include <sys/stat.h>
#define ADMIN_VERSION "8.38"
#define ADMIN_VERSION "8.39"
#define MAX_MYSQL_VAR 128
#define SHUTDOWN_DEF_TIMEOUT 3600 /* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
......@@ -70,8 +70,8 @@ static void print_relative_header();
static void print_relative_line();
static void truncate_names();
static my_bool get_pidfile(MYSQL *mysql, char *pidfile);
static void wait_pidfile(char *pidfile, time_t last_modified,
struct stat *pidfile_status);
static my_bool wait_pidfile(char *pidfile, time_t last_modified,
struct stat *pidfile_status);
static void store_values(MYSQL_RES *result);
/*
......@@ -481,7 +481,8 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
printf("Shutdown signal sent to server; Waiting for pid file to disappear\n");
/* Wait until pid file is gone */
wait_pidfile(pidfile, last_modified, &pidfile_status);
if (wait_pidfile(pidfile, last_modified, &pidfile_status))
return -1;
}
break;
}
......@@ -1110,34 +1111,51 @@ static my_bool get_pidfile(MYSQL *mysql, char *pidfile)
return 1; /* Error */
}
/*
Return 1 if pid file didn't disappear or change
*/
static void wait_pidfile(char *pidfile, time_t last_modified,
struct stat *pidfile_status)
static my_bool wait_pidfile(char *pidfile, time_t last_modified,
struct stat *pidfile_status)
{
char buff[FN_REFLEN];
int fd = -1;
uint count=0;
int error= 1;
uint count= 0;
DBUG_ENTER("wait_pidfile");
system_filename(buff, pidfile);
while (count++ <= opt_shutdown_timeout && !interrupted &&
(!last_modified || (last_modified == pidfile_status->st_mtime)) &&
(fd= my_open(buff, O_RDONLY, MYF(0))) >= 0)
do
{
if (!my_close(fd,MYF(0)))
fd= -1;
int fd;
if ((fd= my_open(buff, O_RDONLY, MYF(0))) < 0)
{
error= 0;
break;
}
(void) my_close(fd,MYF(0));
if (last_modified && !stat(pidfile, pidfile_status))
{
if (last_modified != pidfile_status->st_mtime)
{
/* File changed; Let's assume that mysqld did restart */
if (opt_verbose)
printf("pid file '%s' changed while waiting for it to disappear!\nmysqld did probably restart\n",
buff);
error= 0;
break;
}
}
if (count++ == opt_shutdown_timeout)
break;
sleep(1);
if (last_modified && stat(pidfile, pidfile_status))
last_modified= 0;
}
if (opt_verbose && last_modified &&
last_modified != pidfile_status->st_mtime)
printf("Warning; pid file '%s' changed while waiting for it to disappear!\n",
buff);
if (fd >= 0)
} while (!interrupted);
if (error)
{
my_close(fd,MYF(0));
DBUG_PRINT("warning",("Pid file didn't disappear"));
fprintf(stderr,
"Warning; Aborted waiting on pid file: '%s' after %d seconds\n",
buff, count-1);
}
DBUG_RETURN(error);
}
......@@ -42,7 +42,7 @@
**********************************************************************/
#define MTEST_VERSION "1.25"
#define MTEST_VERSION "1.26"
#include <my_global.h>
#include <mysql_embed.h>
......@@ -1797,10 +1797,8 @@ int read_query(struct st_query** q_ptr)
static struct my_option my_long_options[] =
{
#ifndef DBUG_OFF
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"database", 'D', "Database to use.", (gptr*) &db, (gptr*) &db, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"basedir", 'b', "Basedir for tests", (gptr*) &opt_basedir,
......@@ -1893,7 +1891,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
{
switch(optid) {
case '#':
#ifndef DBUG_OFF
DBUG_PUSH(argument ? argument : "d:t:S:i:O,/tmp/mysqltest.trace");
#endif
break;
case 'r':
record = 1;
......@@ -1971,7 +1971,7 @@ int parse_args(int argc, char **argv)
default_argv= argv;
if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
exit(ho_error);
exit(1);
if (argc > 1)
{
......
......@@ -88,6 +88,7 @@ sleep_until_file_created ()
wait_for_pid()
{
pid=$1
#$WAIT_PID pid $SLEEP_TIME_FOR_DELETE
}
# No paths below as we can't be sure where the program is!
......@@ -343,9 +344,9 @@ while test $# -gt 0; do
;;
--debug)
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT \
--debug=d:t:i:O,$MYSQL_TEST_DIR/var/log/master.trace"
--debug=d:t:i:A,$MYSQL_TEST_DIR/var/log/master.trace"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT \
--debug=d:t:i:O,$MYSQL_TEST_DIR/var/log/slave.trace"
--debug=d:t:i:A,$MYSQL_TEST_DIR/var/log/slave.trace"
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT --debug"
;;
--fast)
......@@ -419,6 +420,7 @@ if [ x$SOURCE_DIST = x1 ] ; then
fi
MYSQLADMIN="$BASEDIR/client/mysqladmin"
WAIT_PID="$BASEDIR/extra/mysql_waitpid"
MYSQL_MANAGER_CLIENT="$BASEDIR/client/mysqlmanagerc"
MYSQL_MANAGER="$BASEDIR/tools/mysqlmanager"
MYSQL_MANAGER_PWGEN="$BASEDIR/client/mysqlmanager-pwgen"
......@@ -435,6 +437,7 @@ else
fi
MYSQL_TEST="$BASEDIR/bin/mysqltest"
MYSQLADMIN="$BASEDIR/bin/mysqladmin"
WAIT_PID="$BASEDIR/bin/mysql_waitpid"
MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager"
MYSQL_MANAGER_CLIENT="$BASEDIR/bin/mysqlmanagerc"
MYSQL_MANAGER_PWGEN="$BASEDIR/bin/mysqlmanager-pwgen"
......@@ -749,9 +752,9 @@ manager_term()
{
pid=$1
ident=$2
shift
if [ $USE_MANAGER = 0 ] ; then
$MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=5 --shutdown_timeout=20 shutdown >> $MYSQL_MANAGER_LOG 2>&1
# Shutdown time must be high as slave may be in reconnect
$MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=5 --shutdown_timeout=70 shutdown >> $MYSQL_MANAGER_LOG 2>&1
res=$?
# Some systems require an extra connect
$MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=1 ping >> $MYSQL_MANAGER_LOG 2>&1
......@@ -873,8 +876,8 @@ start_slave()
[ x$SKIP_SLAVE = x1 ] && return
eval "this_slave_running=\$SLAVE$1_RUNNING"
[ x$this_slave_running = 1 ] && return
#when testing fail-safe replication, we will have more than one slave
#in this case, we start secondary slaves with an argument
# When testing fail-safe replication, we will have more than one slave
# in this case, we start secondary slaves with an argument
slave_ident="slave$1"
if [ -n "$1" ] ;
then
......@@ -982,9 +985,12 @@ EOF
mysql_start ()
{
$ECHO "Starting MySQL daemon"
start_master
start_slave
# We should not start the deamon here as we don't know the argumens
# for the test. Better to let the test start the deamon
# $ECHO "Starting MySQL daemon"
# start_master
# start_slave
cd $MYSQL_TEST_DIR
return 1
}
......@@ -1085,8 +1091,6 @@ run_testcase ()
slave_init_script=$TESTDIR/$tname-slave.sh
slave_master_info_file=$TESTDIR/$tname-slave-master-info.opt
echo $tname > $CURRENT_TEST
echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
SKIP_SLAVE=`$EXPR \( $tname : rpl \) = 0`
if [ $USE_MANAGER = 1 ] ; then
many_slaves=`$EXPR \( $tname : rpl_failsafe \) != 0`
......@@ -1123,13 +1127,17 @@ run_testcase ()
then
EXTRA_MASTER_OPT=`$CAT $master_opt_file | $SED -e "s;\\$MYSQL_TEST_DIR;$MYSQL_TEST_DIR;"`
stop_master
echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
start_master
else
if [ ! -z "$EXTRA_MASTER_OPT" ] || [ x$MASTER_RUNNING != x1 ] ;
then
EXTRA_MASTER_OPT=""
stop_master
echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
start_master
else
echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
fi
fi
......@@ -1159,7 +1167,10 @@ run_testcase ()
if [ x$do_slave_restart = x1 ] ; then
stop_slave
echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
start_slave
else
echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
fi
if [ x$many_slaves = x1 ]; then
start_slave 1
......
......@@ -48,7 +48,10 @@ $opt_optimization="None";
$opt_hw="";
$opt_threads=5;
$opt_time_limit=10*60; # Don't wait more than 10 min for some tests
if (!defined($opt_time_limit))
{
$opt_time_limit=10*60; # Don't wait more than 10 min for some tests
}
$log_prog_args=join(" ", skip_arguments(\@ARGV,"comments","cmp","server",
"user", "host", "database", "password",
......
......@@ -39,7 +39,7 @@
# as such, and clarify ones such as "mediumint" with comments such as
# "3-byte int" or "same as xxx".
$version="1.59";
$version="1.60";
use DBI;
use Getopt::Long;
......@@ -50,7 +50,7 @@ $opt_server="mysql"; $opt_host="localhost"; $opt_database="test";
$opt_dir="limits";
$opt_user=$opt_password="";$opt_verbose="";
$opt_debug=$opt_help=$opt_Information=$opt_restart=$opt_force=$opt_quick=0;
$opt_log_all_queries=$opt_fix_limit_file=$opt_batch_mode=0;
$opt_log_all_queries=$opt_fix_limit_file=$opt_batch_mode=$opt_version=0;
$opt_db_start_cmd=""; # the db server start command
$opt_check_server=0; # Check if server is alive before each query
$opt_sleep=10; # time to sleep while starting the db server
......@@ -68,8 +68,10 @@ GetOptions("Information","help","server=s","debug","user=s","password=s",
"database=s","restart","force","quick","log-all-queries","comment=s",
"host=s","fix-limit-file","dir=s","db-start-cmd=s","sleep=s","suffix=s",
"batch-mode","config-file=s","log-queries-to-file=s","check-server",
"version",
"verbose!" => \$opt_verbose) || usage();
usage() if ($opt_help || $opt_Information);
version() && exit(0) if ($opt_version);
$opt_suffix = '-'.$opt_suffix if (length($opt_suffix) != 0);
$opt_config_file = "$pwd/$opt_dir/$opt_server$opt_suffix.cfg"
......@@ -1190,7 +1192,7 @@ else
# Test: NOROUND
{
my $resultat = 'undefined';
my $result = 'undefined';
my $error;
print "NOROUND: ";
save_incomplete('func_extra_noround','Function NOROUND');
......@@ -1199,21 +1201,25 @@ else
$error = safe_query_l('func_extra_noround',"select noround(22.6) $end_query");
if ($error ne 1) # syntax error -- noround is not supported
{
$resultat = 'no'
} else # Ok, now check if it really works
{
$result = 'no'
}
else # Ok, now check if it really works
{
$error=safe_query_l('func_extra_noround',
["create table crash_me_nr (a int)",
"insert into crash_me_nr values(noround(10.2))",
"drop table crash_me_nr $drop_attr"]);
if ($error eq 1) {
$resultat = "syntax only";
} else {
$resultat = 'yes';
}
}
print "$resultat\n";
save_config_data('func_extra_noround',$resultat,"Function NOROUND");
if ($error == 1)
{
$result= "syntax only";
}
else
{
$result= 'yes';
}
}
print "$result\n";
save_config_data('func_extra_noround',$result,"Function NOROUND");
}
check_parenthesis("func_sql_","CURRENT_USER");
......@@ -1377,7 +1383,7 @@ if ($limits{'type_sql_date'} eq 'yes')
# Test: WEEK()
{
my $resultat="no";
my $result="no";
my $error;
print "WEEK:";
save_incomplete('func_odbc_week','WEEK');
......@@ -1388,17 +1394,17 @@ if ($limits{'type_sql_date'} eq 'yes')
# and 0 - EURO weeks
if ($error == -1) {
if ($last_result == 4) {
$resultat = 'USA';
$result = 'USA';
} else {
$resultat='error';
$result='error';
add_log('func_odbc_week',
" must return 4 or 5, but $last_result");
}
} elsif ($error == 0) {
$resultat = 'EURO';
$result = 'EURO';
}
print " $resultat\n";
save_config_data('func_odbc_week',$resultat,"WEEK");
print " $result\n";
save_config_data('func_odbc_week',$result,"WEEK");
}
my $insert_query ='insert into crash_me_d values('.
......@@ -1498,7 +1504,7 @@ if ($limits{'type_sql_date'} eq 'yes')
# NOT id BETWEEN a and b
if ($limits{'func_where_not_between'} eq 'yes')
{
my $resultat = 'error';
my $result = 'error';
my $err;
my $key='not_id_between';
my $prompt='NOT ID BETWEEN interprets as ID NOT BETWEEN';
......@@ -1512,15 +1518,15 @@ if ($limits{'func_where_not_between'} eq 'yes')
5,0);
if ($err eq 1) {
if (not defined($last_result)) {
$resultat='no';
$result='no';
};
};
if ( $err eq 0) {
$resultat = 'yes';
$result = 'yes';
};
safe_query_l($key,["drop table crash_me_b"]);
save_config_data($key,$resultat,$prompt);
print "$resultat\n";
save_config_data($key,$result,$prompt);
print "$result\n";
};
......@@ -2018,37 +2024,44 @@ report("views","views",
# Test: foreign key
{
my $resultat = 'undefined';
my $result = 'undefined';
my $error;
print "foreign keys: ";
save_incomplete('foreign_key','foreign keys');
# 1) check if foreign keys are supported
safe_query_l('foreign_key',create_table("crash_me_qf",["a integer not null"],
["primary key (a)"]));
$error = safe_query_l('foreign_key',
create_table("crash_me_qf2",["a integer not null",
"foreign key (a) references crash_me_qf (a)"], []));
if ($error eq 1) # OK -- syntax is supported
safe_query_l('foreign_key',
create_table("crash_me_qf",
["a integer not null"],
["primary key (a)"]));
$error= safe_query_l('foreign_key',
create_table("crash_me_qf2",
["a integer not null",
"foreign key (a) references crash_me_qf (a)"],
[]));
if ($error == 1) # OK -- syntax is supported
{
$resultat = 'error';
$result = 'error';
# now check if foreign key really works
safe_query_l('foreign_key', "insert into crash_me_qf values (1)");
if (safe_query_l('foreign_key', "insert into crash_me_qf2 values (2)") eq 1)
if (safe_query_l('foreign_key', "insert into crash_me_qf2 values (2)") eq 1)
{
$resultat = 'syntax only';
} else {
$resultat = 'yes';
}
} else {
$resultat = "no";
}
safe_query_l('foreign_key',
"drop table crash_me_qf2 $drop_attr","drop table crash_me_qf $drop_attr");
print "$resultat\n";
save_config_data('foreign_key',$resultat,"foreign keys");
$result = 'syntax only';
}
else
{
$result = 'yes';
}
}
else
{
$result = "no";
}
safe_query_l('foreign_key', "drop table crash_me_qf2 $drop_attr");
safe_query_l('foreign_key', "drop table crash_me_qf $drop_attr");
print "$result\n";
save_config_data('foreign_key',$result,"foreign keys");
}
report("Create SCHEMA","create_schema",
......@@ -2607,7 +2620,7 @@ sub detect_null_position
sub check_parenthesis {
my $prefix=shift;
my $fn=shift;
my $resultat='no';
my $result='no';
my $param_name=$prefix.lc($fn);
my $r;
......@@ -2616,18 +2629,18 @@ sub check_parenthesis {
add_log($param_name,$safe_query_log);
if ($r == 1)
{
$resultat="yes";
$result="yes";
}
else{
$r = safe_query("select $fn() $end_query");
add_log($param_name,$safe_query_log);
if ( $r == 1)
{
$resultat="with_parenthesis";
$result="with_parenthesis";
}
}
save_config_data($param_name,$resultat,$fn);
save_config_data($param_name,$result,$fn);
}
sub check_constraint {
......@@ -2699,10 +2712,16 @@ sub make_date {
}
sub version
{
print "$0 Ver $version\n";
}
sub usage
{
version();
print <<EOF;
$0 Ver $version
This program tries to find all limits and capabilities for a SQL
server. As it will use the server in some 'unexpected' ways, one
......@@ -3048,7 +3067,7 @@ sub safe_query_l {
my $r = safe_query($q);
add_log($key,$safe_query_log);
return $r;
}
}
sub safe_query
{
......@@ -3110,7 +3129,6 @@ sub safe_query
$retry = $retry_limit;
$retry_ok = 1;
$safe_query_log .= "> OK\n";
}
$sth->finish;
}
......
......@@ -27,6 +27,7 @@ $opt_start_field_count=8; # start with this many fields
$opt_loop_count=20; # How many tests to do
$opt_row_count=1000; # Rows in the table
$opt_field_count=1000; # Add until this many fields.
$opt_time_limit=10*60; # Don't wait more than 10 min for some tests
chomp($pwd = `pwd`); $pwd = "." if ($pwd eq '');
require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
......@@ -113,10 +114,9 @@ if ($opt_fast)
}
else
{
$add=1 if (!$limits{'alter_add_multi_col'});
$add=1 if (!$limits->{'alter_add_multi_col'});
}
$count=0;
while ($field_count < $opt_field_count)
{
......@@ -131,19 +131,43 @@ while ($field_count < $opt_field_count)
$tmp="" if (!$multi_add); # Adabas
}
do_query($dbh,"ALTER TABLE bench " . substr($fields,1));
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
$opt_field_count/$add+1));
}
$end_time=new Benchmark;
print "Time for alter_table_add ($count): " .
if ($estimated)
{ print "Estimated time"; }
else
{ print "Time"; }
print " for alter_table_add ($count): " .
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
#
# If estimated, fix table to have known number of fields
#
if ($estimated && $field_count < $opt_field_count)
{
$fields="";
$tmp="ADD ";
while ($field_count < $opt_field_count)
{
$field_count++;
$fields.=",$tmp i${field_count} integer";
$tmp="" if (!$multi_add); # Adabas
}
do_query($dbh,"ALTER TABLE bench " . substr($fields,1));
}
####
#### Test adding and deleting index on the first $opt_start_fields
####
$loop_time=new Benchmark;
for ($i=1; $i < $opt_start_field_count ; $i++)
$count= 0;
for ($i=1; $i <= $opt_start_field_count ; $i++)
{
$dbh->do("CREATE INDEX bench_ind$i ON bench (i${i})") || die $DBI::errstr;
}
......@@ -153,7 +177,7 @@ print "Time for create_index ($opt_start_field_count): " .
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
$loop_time=new Benchmark;
for ($i=1; $i < $opt_start_field_count ; $i++)
for ($i=1; $i <= $opt_start_field_count ; $i++)
{
$dbh->do($server->drop_index("bench","bench_ind$i")) || die $DBI::errstr;
}
......@@ -182,10 +206,17 @@ while ($field_count > $opt_start_field_count)
}
$dbh->do("ALTER TABLE bench " . substr($fields,1) . $server->{'drop_attr'})
|| die $DBI::errstr;
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
$opt_field_count/$add+1));
}
$end_time=new Benchmark;
print "Time for alter_table_drop ($count): " .
if ($estimated)
{ print "Estimated time"; }
else
{ print "Time"; }
print " for alter_table_drop ($count): " .
timestr(timediff($end_time, $loop_time),"all") . "\n\n";
skip_dropcol:
......
......@@ -21,10 +21,11 @@
# $opt_loop_count rows in random order
#
# changes made for Oracle compatibility
# - $limits{'func_odbc_mod'} is OK from crash-me, but it fails here so set we
# - $limits->{'func_odbc_mod'} is OK from crash-me, but it fails here so set we
# set it to 0 in server-cfg
# - the default server config runs out of rollback segments, so I added a couple
# of disconnect/connects to reset
# - the default server config runs out of rollback segments, so we added a
# couple of disconnect/connects to reset
#
##################### Standard benchmark inits ##############################
use DBI;
......
......@@ -772,7 +772,6 @@ uint calc_week(TIME *ltime, bool with_year, bool sunday_first_day_of_week,
void find_date(char *pos,uint *vek,uint flag);
TYPELIB *convert_strings_to_array_type(my_string *typelibs, my_string *end);
TYPELIB *typelib(List<String> &strings);
void clean_up(bool print_message=1);
ulong get_form_pos(File file, uchar *head, TYPELIB *save_names);
ulong make_new_entry(File file,uchar *fileinfo,TYPELIB *formnames,
const char *newname);
......
......@@ -470,6 +470,7 @@ extern "C" pthread_handler_decl(handle_slave,arg);
static uint set_maximum_open_files(uint max_file_limit);
#endif
static ulong find_bit_type(const char *x, TYPELIB *bit_lib);
static void clean_up(bool print_message);
/****************************************************************************
** Code to end mysqld
......@@ -742,13 +743,13 @@ void kill_mysql(void)
#if defined(OS2)
extern "C" void kill_server(int sig_ptr)
#define RETURN_FROM_KILL_SERVER return
#define RETURN_FROM_KILL_SERVER DBUG_RETURN
#elif !defined(__WIN__)
static void *kill_server(void *sig_ptr)
#define RETURN_FROM_KILL_SERVER return 0
#define RETURN_FROM_KILL_SERVER DBUG_RETURN(0)
#else
static void __cdecl kill_server(int sig_ptr)
#define RETURN_FROM_KILL_SERVER return
#define RETURN_FROM_KILL_SERVER DBUG_RETURN
#endif
{
int sig=(int) (long) sig_ptr; // This is passed a int
......@@ -827,7 +828,7 @@ extern "C" sig_handler print_signal_warning(int sig)
void unireg_end(void)
{
clean_up();
clean_up(1);
my_thread_end();
#ifdef SIGNALS_DONT_BREAK_READ
exit(0);
......@@ -842,7 +843,7 @@ extern "C" void unireg_abort(int exit_code)
DBUG_ENTER("unireg_abort");
if (exit_code)
sql_print_error("Aborting\n");
clean_up(); /* purecov: inspected */
clean_up(1); /* purecov: inspected */
DBUG_PRINT("quit",("done with cleanup in unireg_abort"));
my_thread_end();
exit(exit_code); /* purecov: inspected */
......@@ -887,12 +888,12 @@ void clean_up(bool print_message)
regex_end();
#endif
if (print_message && errmesg)
sql_print_error(ER(ER_SHUTDOWN_COMPLETE),my_progname);
#if !defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
if (!opt_bootstrap)
(void) my_delete(pidfile_name,MYF(0)); // This may not always exist
#endif
if (print_message && errmesg)
sql_print_error(ER(ER_SHUTDOWN_COMPLETE),my_progname);
x_free((gptr) my_errmsg[ERRMAPP]); /* Free messages */
DBUG_PRINT("quit", ("Error messages freed"));
/* Tell main we are ready */
......@@ -902,6 +903,10 @@ void clean_up(bool print_message)
/* do the broadcast inside the lock to ensure that my_end() is not called */
(void) pthread_cond_broadcast(&COND_thread_count);
(void) pthread_mutex_unlock(&LOCK_thread_count);
/*
The following lines may never be executed as the main thread may have
killed us
*/
DBUG_PRINT("quit", ("done with cleanup"));
} /* clean_up */
......@@ -1481,7 +1486,7 @@ static void init_signals(void)
/* Change limits so that we will get a core file */
struct rlimit rl;
rl.rlim_cur = rl.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_CORE, &rl))
if (setrlimit(RLIMIT_CORE, &rl) && global_system_variables.log_warnings)
sql_print_error("Warning: setrlimit could not change the size of core files to 'infinity'; We may not be able to generate a core file on signals");
}
#endif
......@@ -1550,8 +1555,11 @@ extern "C" void *signal_hand(void *arg __attribute__((unused)))
my_thread_init(); // Init new thread
DBUG_ENTER("signal_hand");
SIGNAL_THD;
/* Setup alarm handler */
init_thr_alarm(max_connections+max_insert_delayed_threads);
/*
Setup alarm handler
The two extra handlers are for slave threads
*/
init_thr_alarm(max_connections+max_insert_delayed_threads+2);
#if SIGINT != THR_KILL_SIGNAL
(void) sigemptyset(&set); // Setup up SIGINT for debug
(void) sigaddset(&set,SIGINT); // For debugging
......@@ -1639,12 +1647,15 @@ extern "C" void *signal_hand(void *arg __attribute__((unused)))
}
break;
case SIGHUP:
reload_acl_and_cache((THD*) 0,
(REFRESH_LOG | REFRESH_TABLES | REFRESH_FAST |
REFRESH_STATUS | REFRESH_GRANT | REFRESH_THREADS |
REFRESH_HOSTS),
(TABLE_LIST*) 0); // Flush logs
mysql_print_status((THD*) 0); // Send debug some info
if (!abort_loop)
{
reload_acl_and_cache((THD*) 0,
(REFRESH_LOG | REFRESH_TABLES | REFRESH_FAST |
REFRESH_STATUS | REFRESH_GRANT |
REFRESH_THREADS | REFRESH_HOSTS),
(TABLE_LIST*) 0); // Flush logs
mysql_print_status((THD*) 0); // Send debug some info
}
break;
#ifdef USE_ONE_SIGNAL_HAND
case THR_SERVER_ALARM:
......
......@@ -134,7 +134,10 @@ net_printf(NET *net, uint errcode, ...)
{
if (thd && thd->bootstrap)
{
/* In bootstrap it's ok to print on stderr */
/*
In bootstrap it's ok to print on stderr
This may also happen when we get an error from a slave thread
*/
fprintf(stderr,"ERROR: %d %s\n",errcode,text_pos);
thd->fatal_error=1;
}
......
......@@ -376,6 +376,7 @@ int terminate_slave_threads(MASTER_INFO* mi,int thread_mask,bool skip_lock)
}
if ((thread_mask & (SLAVE_IO|SLAVE_FORCE_ALL)) && mi->slave_running)
{
DBUG_PRINT("info",("Terminating IO thread"));
mi->abort_slave=1;
if ((error=terminate_slave_thread(mi->io_thd,io_lock,
io_cond_lock,
......@@ -386,6 +387,7 @@ int terminate_slave_threads(MASTER_INFO* mi,int thread_mask,bool skip_lock)
}
if ((thread_mask & (SLAVE_SQL|SLAVE_FORCE_ALL)) && mi->rli.slave_running)
{
DBUG_PRINT("info",("Terminating SQL thread"));
DBUG_ASSERT(mi->rli.sql_thd != 0) ;
mi->rli.abort_slave=1;
if ((error=terminate_slave_thread(mi->rli.sql_thd,sql_lock,
......
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