Merge shellback.(none):/home/msvensson/mysql/mysql-4.1-maint
into shellback.(none):/home/msvensson/mysql/mysql-5.0-maint
This commit is contained in:
commit
b9d4ccbf18
@ -1409,7 +1409,7 @@ int open_file(const char *name)
|
|||||||
|
|
||||||
void do_source(struct st_command *command)
|
void do_source(struct st_command *command)
|
||||||
{
|
{
|
||||||
DYNAMIC_STRING ds_filename;
|
static DYNAMIC_STRING ds_filename;
|
||||||
const struct command_arg source_args[] = {
|
const struct command_arg source_args[] = {
|
||||||
"filename", ARG_STRING, TRUE, &ds_filename, "File to source"
|
"filename", ARG_STRING, TRUE, &ds_filename, "File to source"
|
||||||
};
|
};
|
||||||
@ -1697,7 +1697,7 @@ void do_system(struct st_command *command)
|
|||||||
void do_remove_file(struct st_command *command)
|
void do_remove_file(struct st_command *command)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
DYNAMIC_STRING ds_filename;
|
static DYNAMIC_STRING ds_filename;
|
||||||
const struct command_arg rm_args[] = {
|
const struct command_arg rm_args[] = {
|
||||||
"filename", ARG_STRING, TRUE, &ds_filename, "File to delete"
|
"filename", ARG_STRING, TRUE, &ds_filename, "File to delete"
|
||||||
};
|
};
|
||||||
@ -1730,8 +1730,8 @@ void do_remove_file(struct st_command *command)
|
|||||||
void do_copy_file(struct st_command *command)
|
void do_copy_file(struct st_command *command)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
DYNAMIC_STRING ds_from_file;
|
static DYNAMIC_STRING ds_from_file;
|
||||||
DYNAMIC_STRING ds_to_file;
|
static DYNAMIC_STRING ds_to_file;
|
||||||
const struct command_arg copy_file_args[] = {
|
const struct command_arg copy_file_args[] = {
|
||||||
"from_file", ARG_STRING, TRUE, &ds_from_file, "Filename to copy from",
|
"from_file", ARG_STRING, TRUE, &ds_from_file, "Filename to copy from",
|
||||||
"to_file", ARG_STRING, TRUE, &ds_to_file, "Filename to copy to"
|
"to_file", ARG_STRING, TRUE, &ds_to_file, "Filename to copy to"
|
||||||
@ -1766,7 +1766,7 @@ void do_copy_file(struct st_command *command)
|
|||||||
void do_file_exist(struct st_command *command)
|
void do_file_exist(struct st_command *command)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
DYNAMIC_STRING ds_filename;
|
static DYNAMIC_STRING ds_filename;
|
||||||
const struct command_arg file_exist_args[] = {
|
const struct command_arg file_exist_args[] = {
|
||||||
"filename", ARG_STRING, TRUE, &ds_filename, "File to check if it exist"
|
"filename", ARG_STRING, TRUE, &ds_filename, "File to check if it exist"
|
||||||
};
|
};
|
||||||
@ -1873,9 +1873,9 @@ void read_until_delimiter(DYNAMIC_STRING *ds,
|
|||||||
|
|
||||||
void do_write_file(struct st_command *command)
|
void do_write_file(struct st_command *command)
|
||||||
{
|
{
|
||||||
DYNAMIC_STRING ds_content;
|
static DYNAMIC_STRING ds_content;
|
||||||
DYNAMIC_STRING ds_filename;
|
static DYNAMIC_STRING ds_filename;
|
||||||
DYNAMIC_STRING ds_delimiter;
|
static DYNAMIC_STRING ds_delimiter;
|
||||||
const struct command_arg write_file_args[] = {
|
const struct command_arg write_file_args[] = {
|
||||||
"filename", ARG_STRING, TRUE, &ds_filename, "File to write to",
|
"filename", ARG_STRING, TRUE, &ds_filename, "File to write to",
|
||||||
"delimiter", ARG_STRING, FALSE, &ds_delimiter, "Delimiter to read until"
|
"delimiter", ARG_STRING, FALSE, &ds_delimiter, "Delimiter to read until"
|
||||||
@ -1927,8 +1927,8 @@ void do_perl(struct st_command *command)
|
|||||||
int error;
|
int error;
|
||||||
char buf[FN_REFLEN];
|
char buf[FN_REFLEN];
|
||||||
FILE *res_file;
|
FILE *res_file;
|
||||||
DYNAMIC_STRING ds_script;
|
static DYNAMIC_STRING ds_script;
|
||||||
DYNAMIC_STRING ds_delimiter;
|
static DYNAMIC_STRING ds_delimiter;
|
||||||
const struct command_arg perl_args[] = {
|
const struct command_arg perl_args[] = {
|
||||||
"delimiter", ARG_STRING, FALSE, &ds_delimiter, "Delimiter to read until"
|
"delimiter", ARG_STRING, FALSE, &ds_delimiter, "Delimiter to read until"
|
||||||
};
|
};
|
||||||
@ -2985,14 +2985,14 @@ void do_connect(struct st_command *command)
|
|||||||
bool con_ssl= 0, con_compress= 0;
|
bool con_ssl= 0, con_compress= 0;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
DYNAMIC_STRING ds_connection_name;
|
static DYNAMIC_STRING ds_connection_name;
|
||||||
DYNAMIC_STRING ds_host;
|
static DYNAMIC_STRING ds_host;
|
||||||
DYNAMIC_STRING ds_user;
|
static DYNAMIC_STRING ds_user;
|
||||||
DYNAMIC_STRING ds_password;
|
static DYNAMIC_STRING ds_password;
|
||||||
DYNAMIC_STRING ds_database;
|
static DYNAMIC_STRING ds_database;
|
||||||
DYNAMIC_STRING ds_port;
|
static DYNAMIC_STRING ds_port;
|
||||||
DYNAMIC_STRING ds_sock;
|
static DYNAMIC_STRING ds_sock;
|
||||||
DYNAMIC_STRING ds_options;
|
static DYNAMIC_STRING ds_options;
|
||||||
const struct command_arg connect_args[] = {
|
const struct command_arg connect_args[] = {
|
||||||
"connection name", ARG_STRING, TRUE, &ds_connection_name,
|
"connection name", ARG_STRING, TRUE, &ds_connection_name,
|
||||||
"Name of the connection",
|
"Name of the connection",
|
||||||
|
25
mysql-test/include/wait_for_query_to_suceed.inc
Normal file
25
mysql-test/include/wait_for_query_to_suceed.inc
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#
|
||||||
|
# Run a query over and over until it suceeds ot timeout occurs
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
let $counter= 100;
|
||||||
|
|
||||||
|
disable_abort_on_error;
|
||||||
|
disable_query_log;
|
||||||
|
disable_result_log;
|
||||||
|
eval $query;
|
||||||
|
while ($mysql_errno)
|
||||||
|
{
|
||||||
|
eval $query;
|
||||||
|
sleep 0.1;
|
||||||
|
dec $counter;
|
||||||
|
|
||||||
|
if (!$counter)
|
||||||
|
{
|
||||||
|
die("Waited too long for query to suceed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
enable_abort_on_error;
|
||||||
|
enable_query_log;
|
||||||
|
enable_result_log;
|
@ -37,18 +37,16 @@ sub mtr_get_pid_from_file ($) {
|
|||||||
open(FILE, '<', $pid_file_path)
|
open(FILE, '<', $pid_file_path)
|
||||||
or mtr_error("can't open file \"$pid_file_path\": $!");
|
or mtr_error("can't open file \"$pid_file_path\": $!");
|
||||||
|
|
||||||
|
# Read pid number from file
|
||||||
my $pid= <FILE>;
|
my $pid= <FILE>;
|
||||||
|
|
||||||
chomp($pid) if defined $pid;
|
|
||||||
|
|
||||||
close FILE;
|
close FILE;
|
||||||
|
|
||||||
return $pid if defined $pid && $pid ne '';
|
return $pid if $pid=~ /^(\d+)/;
|
||||||
|
|
||||||
mtr_debug("Pid file '$pid_file_path' is empty. " .
|
mtr_debug("Pid file '$pid_file_path' does not yet contain pid number.\n" .
|
||||||
"Sleeping $timeout second(s)...");
|
"Sleeping $timeout second(s) more...");
|
||||||
|
|
||||||
sleep(1);
|
sleep($timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_error("Pid file '$pid_file_path' is corrupted. " .
|
mtr_error("Pid file '$pid_file_path' is corrupted. " .
|
||||||
|
@ -438,25 +438,35 @@ sub mtr_kill_leftovers () {
|
|||||||
|
|
||||||
while ( my $elem= readdir(RUNDIR) )
|
while ( my $elem= readdir(RUNDIR) )
|
||||||
{
|
{
|
||||||
my $pidfile= "$rundir/$elem";
|
# Only read pid from files that end with .pid
|
||||||
|
if ( $elem =~ /.*[.]pid$/)
|
||||||
if ( -f $pidfile )
|
|
||||||
{
|
{
|
||||||
mtr_debug("Processing PID file: '$pidfile'...");
|
|
||||||
|
|
||||||
my $pid= mtr_get_pid_from_file($pidfile);
|
my $pidfile= "$rundir/$elem";
|
||||||
|
|
||||||
mtr_debug("Got pid: $pid from file '$pidfile'");
|
if ( -f $pidfile )
|
||||||
|
{
|
||||||
|
mtr_debug("Processing PID file: '$pidfile'...");
|
||||||
|
|
||||||
if ( $::glob_cygwin_perl or kill(0, $pid) )
|
my $pid= mtr_get_pid_from_file($pidfile);
|
||||||
{
|
|
||||||
mtr_debug("There is process with pid $pid -- scheduling for kill.");
|
mtr_debug("Got pid: $pid from file '$pidfile'");
|
||||||
push(@pids, $pid); # We know (cygwin guess) it exists
|
|
||||||
}
|
if ( $::glob_cygwin_perl or kill(0, $pid) )
|
||||||
else
|
{
|
||||||
{
|
mtr_debug("There is process with pid $pid -- scheduling for kill.");
|
||||||
mtr_debug("There is no process with pid $pid -- skipping.");
|
push(@pids, $pid); # We know (cygwin guess) it exists
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_debug("There is no process with pid $pid -- skipping.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_warning("Found non pid file $elem in $rundir");
|
||||||
|
next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(RUNDIR);
|
closedir(RUNDIR);
|
||||||
|
@ -1801,14 +1801,16 @@ sub environment_setup () {
|
|||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Setup env so childs can execute mysql_fix_system_tables
|
# Setup env so childs can execute mysql_fix_system_tables
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $cmdline_mysql_fix_system_tables=
|
if ( ! $glob_win32 )
|
||||||
"$exe_mysql_fix_system_tables --no-defaults --host=localhost " .
|
{
|
||||||
"--user=root --password= " .
|
my $cmdline_mysql_fix_system_tables=
|
||||||
"--basedir=$glob_basedir --bindir=$path_client_bindir --verbose " .
|
"$exe_mysql_fix_system_tables --no-defaults --host=localhost " .
|
||||||
"--port=$master->[0]->{'port'} " .
|
"--user=root --password= " .
|
||||||
"--socket=$master->[0]->{'path_sock'}";
|
"--basedir=$glob_basedir --bindir=$path_client_bindir --verbose " .
|
||||||
|
"--port=$master->[0]->{'port'} " .
|
||||||
$ENV{'MYSQL_FIX_SYSTEM_TABLES'}= $cmdline_mysql_fix_system_tables;
|
"--socket=$master->[0]->{'path_sock'}";
|
||||||
|
$ENV{'MYSQL_FIX_SYSTEM_TABLES'}= $cmdline_mysql_fix_system_tables;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Setup env so childs can execute my_print_defaults
|
# Setup env so childs can execute my_print_defaults
|
||||||
|
@ -43,8 +43,8 @@ select * from t3;
|
|||||||
drop table if exists t1,t2,t3,t4;
|
drop table if exists t1,t2,t3,t4;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test-case for Bug #2397 RENAME TABLES is not blocked by
|
# Bug #2397 RENAME TABLES is not blocked by
|
||||||
# FLUSH TABLES WITH READ LOCK
|
# FLUSH TABLES WITH READ LOCK
|
||||||
#
|
#
|
||||||
|
|
||||||
connect (con1,localhost,root,,);
|
connect (con1,localhost,root,,);
|
||||||
@ -58,12 +58,17 @@ FLUSH TABLES WITH READ LOCK;
|
|||||||
connection con1;
|
connection con1;
|
||||||
send RENAME TABLE t1 TO t2, t3 to t4;
|
send RENAME TABLE t1 TO t2, t3 to t4;
|
||||||
connection con2;
|
connection con2;
|
||||||
sleep 1;
|
|
||||||
show tables;
|
show tables;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
connection con1;
|
connection con1;
|
||||||
reap;
|
reap;
|
||||||
connection con2;
|
connection con2;
|
||||||
|
|
||||||
|
# Wait for the the tables to be renamed
|
||||||
|
# i.e the query below succeds
|
||||||
|
let $query= select * from t2, t4;
|
||||||
|
source include/wait_for_query_to_suceed.inc;
|
||||||
|
|
||||||
show tables;
|
show tables;
|
||||||
|
|
||||||
drop table t2, t4;
|
drop table t2, t4;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user