mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/jonas/src/mysql-5.0
This commit is contained in:
@ -128,6 +128,7 @@ miguel@light.
|
|||||||
miguel@light.local
|
miguel@light.local
|
||||||
miguel@sartre.local
|
miguel@sartre.local
|
||||||
mikael@mc04.(none)
|
mikael@mc04.(none)
|
||||||
|
mikael@orca.ndb.mysql.com
|
||||||
mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se
|
mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se
|
||||||
mikron@mikael-ronstr-ms-dator.local
|
mikron@mikael-ronstr-ms-dator.local
|
||||||
mleich@mysql.com
|
mleich@mysql.com
|
||||||
|
@ -488,6 +488,15 @@ end:
|
|||||||
|
|
||||||
static struct my_option my_long_options[] =
|
static struct my_option my_long_options[] =
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
mysqlbinlog needs charsets knowledge, to be able to convert a charset
|
||||||
|
number found in binlog to a charset name (to be able to print things
|
||||||
|
like this:
|
||||||
|
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
|
||||||
|
*/
|
||||||
|
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||||
|
"Directory where character sets are.", (gptr*) &charsets_dir,
|
||||||
|
(gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
{"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
|
{"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
|
||||||
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
@ -135,7 +135,13 @@
|
|||||||
#ifdef HAVE_UNIXWARE7_THREADS
|
#ifdef HAVE_UNIXWARE7_THREADS
|
||||||
#include <thread.h>
|
#include <thread.h>
|
||||||
#else
|
#else
|
||||||
|
#if defined(HPUX10) || defined(HPUX11)
|
||||||
|
C_MODE_START /* HPUX needs this, signal.h bug */
|
||||||
|
#include <pthread.h>
|
||||||
|
C_MODE_END
|
||||||
|
#else
|
||||||
#include <pthread.h> /* AIX must have this included first */
|
#include <pthread.h> /* AIX must have this included first */
|
||||||
|
#endif
|
||||||
#endif /* HAVE_UNIXWARE7_THREADS */
|
#endif /* HAVE_UNIXWARE7_THREADS */
|
||||||
#endif /* HAVE_mit_thread */
|
#endif /* HAVE_mit_thread */
|
||||||
#if !defined(SCO) && !defined(_REENTRANT)
|
#if !defined(SCO) && !defined(_REENTRANT)
|
||||||
|
@ -8,6 +8,7 @@ use strict;
|
|||||||
|
|
||||||
sub mtr_get_pid_from_file ($);
|
sub mtr_get_pid_from_file ($);
|
||||||
sub mtr_get_opts_from_file ($);
|
sub mtr_get_opts_from_file ($);
|
||||||
|
sub mtr_fromfile ($);
|
||||||
sub mtr_tofile ($@);
|
sub mtr_tofile ($@);
|
||||||
sub mtr_tonewfile($@);
|
sub mtr_tonewfile($@);
|
||||||
|
|
||||||
@ -107,6 +108,8 @@ sub mtr_fromfile ($) {
|
|||||||
open(FILE,"<",$file) or mtr_error("can't open file \"$file\": $!");
|
open(FILE,"<",$file) or mtr_error("can't open file \"$file\": $!");
|
||||||
my $text= join('', <FILE>);
|
my $text= join('', <FILE>);
|
||||||
close FILE;
|
close FILE;
|
||||||
|
$text =~ s/^\s+//; # Remove starting space, incl newlines
|
||||||
|
$text =~ s/\s+$//; # Remove ending space, incl newlines
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,14 +5,19 @@
|
|||||||
# same name.
|
# same name.
|
||||||
|
|
||||||
#use Carp qw(cluck);
|
#use Carp qw(cluck);
|
||||||
|
use Socket;
|
||||||
|
use Errno;
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
use POSIX ":sys_wait_h";
|
#use POSIX ":sys_wait_h";
|
||||||
|
use POSIX 'WNOHANG';
|
||||||
|
|
||||||
sub mtr_run ($$$$$$);
|
sub mtr_run ($$$$$$);
|
||||||
sub mtr_spawn ($$$$$$);
|
sub mtr_spawn ($$$$$$);
|
||||||
sub mtr_stop_mysqld_servers ($$);
|
sub mtr_stop_mysqld_servers ($);
|
||||||
sub mtr_kill_leftovers ();
|
sub mtr_kill_leftovers ();
|
||||||
|
sub mtr_record_dead_children ();
|
||||||
|
sub sleep_until_file_created ($$$);
|
||||||
|
|
||||||
# static in C
|
# static in C
|
||||||
sub spawn_impl ($$$$$$$);
|
sub spawn_impl ($$$$$$$);
|
||||||
@ -34,7 +39,18 @@ sub mtr_run ($$$$$$) {
|
|||||||
my $error= shift;
|
my $error= shift;
|
||||||
my $pid_file= shift;
|
my $pid_file= shift;
|
||||||
|
|
||||||
return spawn_impl($path,$arg_list_t,1,$input,$output,$error,$pid_file);
|
return spawn_impl($path,$arg_list_t,'run',$input,$output,$error,$pid_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mtr_run_test ($$$$$$) {
|
||||||
|
my $path= shift;
|
||||||
|
my $arg_list_t= shift;
|
||||||
|
my $input= shift;
|
||||||
|
my $output= shift;
|
||||||
|
my $error= shift;
|
||||||
|
my $pid_file= shift;
|
||||||
|
|
||||||
|
return spawn_impl($path,$arg_list_t,'test',$input,$output,$error,$pid_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub mtr_spawn ($$$$$$) {
|
sub mtr_spawn ($$$$$$) {
|
||||||
@ -45,7 +61,7 @@ sub mtr_spawn ($$$$$$) {
|
|||||||
my $error= shift;
|
my $error= shift;
|
||||||
my $pid_file= shift;
|
my $pid_file= shift;
|
||||||
|
|
||||||
return spawn_impl($path,$arg_list_t,0,$input,$output,$error,$pid_file);
|
return spawn_impl($path,$arg_list_t,'spawn',$input,$output,$error,$pid_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -58,7 +74,7 @@ sub mtr_spawn ($$$$$$) {
|
|||||||
sub spawn_impl ($$$$$$$) {
|
sub spawn_impl ($$$$$$$) {
|
||||||
my $path= shift;
|
my $path= shift;
|
||||||
my $arg_list_t= shift;
|
my $arg_list_t= shift;
|
||||||
my $join= shift;
|
my $mode= shift;
|
||||||
my $input= shift;
|
my $input= shift;
|
||||||
my $output= shift;
|
my $output= shift;
|
||||||
my $error= shift;
|
my $error= shift;
|
||||||
@ -71,107 +87,203 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
print STDERR "#### ", "STDIN $input\n" if $input;
|
print STDERR "#### ", "STDIN $input\n" if $input;
|
||||||
print STDERR "#### ", "STDOUT $output\n" if $output;
|
print STDERR "#### ", "STDOUT $output\n" if $output;
|
||||||
print STDERR "#### ", "STDERR $error\n" if $error;
|
print STDERR "#### ", "STDERR $error\n" if $error;
|
||||||
if ( $join )
|
print STDERR "#### ", "$mode : $path ", join(" ",@$arg_list_t), "\n";
|
||||||
{
|
|
||||||
print STDERR "#### ", "RUN ";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print STDERR "#### ", "SPAWN ";
|
|
||||||
}
|
|
||||||
print STDERR "$path ", join(" ",@$arg_list_t), "\n";
|
|
||||||
print STDERR "#### ", "-" x 78, "\n";
|
print STDERR "#### ", "-" x 78, "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $pid= fork();
|
FORK:
|
||||||
if ( ! defined $pid )
|
|
||||||
{
|
{
|
||||||
mtr_error("$path ($pid) can't be forked");
|
my $pid= fork();
|
||||||
}
|
|
||||||
|
|
||||||
if ( $pid )
|
if ( ! defined $pid )
|
||||||
{
|
|
||||||
# Parent, i.e. the main script
|
|
||||||
if ( $join )
|
|
||||||
{
|
{
|
||||||
# We run a command and wait for the result
|
if ( $! == $!{EAGAIN} ) # See "perldoc Errno"
|
||||||
# FIXME this need to be improved
|
{
|
||||||
my $res= waitpid($pid,0);
|
mtr_debug("Got EAGAIN from fork(), sleep 1 second and redo");
|
||||||
|
sleep(1);
|
||||||
|
redo FORK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_error("$path ($pid) can't be forked");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( $res == -1 )
|
if ( $pid )
|
||||||
|
{
|
||||||
|
spawn_parent_impl($pid,$mode,$path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# Child, redirect output and exec
|
||||||
|
# FIXME I tried POSIX::setsid() here to detach and, I hoped,
|
||||||
|
# avoid zombies. But everything went wild, somehow the parent
|
||||||
|
# became a deamon as well, and was hard to kill ;-)
|
||||||
|
# Need to catch SIGCHLD and do waitpid or something instead......
|
||||||
|
|
||||||
|
$SIG{INT}= 'DEFAULT'; # Parent do some stuff, we don't
|
||||||
|
|
||||||
|
if ( $output )
|
||||||
|
{
|
||||||
|
if ( ! open(STDOUT,">",$output) )
|
||||||
|
{
|
||||||
|
mtr_error("can't redirect STDOUT to \"$output\": $!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( $error )
|
||||||
|
{
|
||||||
|
if ( $output eq $error )
|
||||||
|
{
|
||||||
|
if ( ! open(STDERR,">&STDOUT") )
|
||||||
|
{
|
||||||
|
mtr_error("can't dup STDOUT: $!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( ! open(STDERR,">",$error) )
|
||||||
|
{
|
||||||
|
mtr_error("can't redirect STDERR to \"$output\": $!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( $input )
|
||||||
|
{
|
||||||
|
if ( ! open(STDIN,"<",$input) )
|
||||||
|
{
|
||||||
|
mtr_error("can't redirect STDIN to \"$input\": $!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exec($path,@$arg_list_t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub spawn_parent_impl {
|
||||||
|
my $pid= shift;
|
||||||
|
my $mode= shift;
|
||||||
|
my $path= shift;
|
||||||
|
|
||||||
|
if ( $mode eq 'run' or $mode eq 'test' )
|
||||||
|
{
|
||||||
|
my $exit_value= -1;
|
||||||
|
my $signal_num= 0;
|
||||||
|
my $dumped_core= 0;
|
||||||
|
|
||||||
|
if ( $mode eq 'run' )
|
||||||
|
{
|
||||||
|
# Simple run of command, we wait for it to return
|
||||||
|
my $ret_pid= waitpid($pid,0);
|
||||||
|
|
||||||
|
if ( $ret_pid <= 0 )
|
||||||
{
|
{
|
||||||
mtr_error("$path ($pid) got lost somehow");
|
mtr_error("$path ($pid) got lost somehow");
|
||||||
}
|
}
|
||||||
my $exit_value= $? >> 8;
|
|
||||||
my $signal_num= $? & 127;
|
$exit_value= $? >> 8;
|
||||||
my $dumped_core= $? & 128;
|
$signal_num= $? & 127;
|
||||||
if ( $signal_num )
|
$dumped_core= $? & 128;
|
||||||
{
|
|
||||||
mtr_error("$path ($pid) got signal $signal_num");
|
|
||||||
}
|
|
||||||
if ( $dumped_core )
|
|
||||||
{
|
|
||||||
mtr_error("$path ($pid) dumped core");
|
|
||||||
}
|
|
||||||
return $exit_value;
|
return $exit_value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
# We spawned a process we don't wait for
|
# We run mysqltest and wait for it to return. But we try to
|
||||||
return $pid;
|
# catch dying mysqld processes as well.
|
||||||
|
#
|
||||||
|
# We do blocking waitpid() until we get the return from the
|
||||||
|
# "mysqltest" call. But if a mysqld process dies that we
|
||||||
|
# started, we take this as an error, and kill mysqltest.
|
||||||
|
#
|
||||||
|
# FIXME is this as it should be? Can't mysqld terminate
|
||||||
|
# normally from running a test case?
|
||||||
|
|
||||||
|
my $ret_pid; # What waitpid() returns
|
||||||
|
|
||||||
|
while ( ($ret_pid= waitpid(-1,0)) != -1 )
|
||||||
|
{
|
||||||
|
# Someone terminated, don't know who. Collect
|
||||||
|
# status info first before $? is lost,
|
||||||
|
# but not $exit_value, this is flagged from
|
||||||
|
#
|
||||||
|
|
||||||
|
if ( $ret_pid == $pid )
|
||||||
|
{
|
||||||
|
# We got termination of mysqltest, we are done
|
||||||
|
$exit_value= $? >> 8;
|
||||||
|
$signal_num= $? & 127;
|
||||||
|
$dumped_core= $? & 128;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
|
||||||
|
# If one of the mysqld processes died, we want to
|
||||||
|
# mark this, and kill the mysqltest process.
|
||||||
|
|
||||||
|
foreach my $idx (0..1)
|
||||||
|
{
|
||||||
|
if ( $::master->[$idx]->{'pid'} eq $ret_pid )
|
||||||
|
{
|
||||||
|
mtr_debug("child $ret_pid was master[$idx], " .
|
||||||
|
"exit during mysqltest run");
|
||||||
|
$::master->[$idx]->{'pid'}= 0;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $idx (0..2)
|
||||||
|
{
|
||||||
|
if ( $::slave->[$idx]->{'pid'} eq $ret_pid )
|
||||||
|
{
|
||||||
|
mtr_debug("child $ret_pid was slave[$idx], " .
|
||||||
|
"exit during mysqltest run");
|
||||||
|
$::slave->[$idx]->{'pid'}= 0;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mtr_debug("waitpid() catched exit of unknown child $ret_pid, " .
|
||||||
|
"exit during mysqltest run");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $ret_pid != $pid )
|
||||||
|
{
|
||||||
|
# We terminated the waiting because a "mysqld" process died.
|
||||||
|
# Kill the mysqltest process.
|
||||||
|
|
||||||
|
kill(9,$pid);
|
||||||
|
|
||||||
|
$ret_pid= waitpid($pid,0);
|
||||||
|
|
||||||
|
if ( $ret_pid == -1 )
|
||||||
|
{
|
||||||
|
mtr_error("$path ($pid) got lost somehow");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $exit_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
# Child, redirect output and exec
|
# We spawned a process we don't wait for
|
||||||
# FIXME I tried POSIX::setsid() here to detach and, I hoped,
|
return $pid;
|
||||||
# avoid zombies. But everything went wild, somehow the parent
|
|
||||||
# became a deamon as well, and was hard to kill ;-)
|
|
||||||
# Need to catch SIGCHLD and do waitpid or something instead......
|
|
||||||
|
|
||||||
$SIG{INT}= 'DEFAULT'; # Parent do some stuff, we don't
|
|
||||||
|
|
||||||
if ( $output )
|
|
||||||
{
|
|
||||||
if ( ! open(STDOUT,">",$output) )
|
|
||||||
{
|
|
||||||
mtr_error("can't redirect STDOUT to \"$output\": $!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( $error )
|
|
||||||
{
|
|
||||||
if ( $output eq $error )
|
|
||||||
{
|
|
||||||
if ( ! open(STDERR,">&STDOUT") )
|
|
||||||
{
|
|
||||||
mtr_error("can't dup STDOUT: $!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( ! open(STDERR,">",$error) )
|
|
||||||
{
|
|
||||||
mtr_error("can't redirect STDERR to \"$output\": $!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( $input )
|
|
||||||
{
|
|
||||||
if ( ! open(STDIN,"<",$input) )
|
|
||||||
{
|
|
||||||
mtr_error("can't redirect STDIN to \"$input\": $!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exec($path,@$arg_list_t);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Kill processes left from previous runs
|
# Kill processes left from previous runs
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
# We just "ping" on the ports, and if we can't do a socket connect
|
||||||
|
# we assume the server is dead. So we don't *really* know a server
|
||||||
|
# is dead, we just hope that it after letting the listen port go,
|
||||||
|
# it is dead enough for us to start a new server.
|
||||||
|
|
||||||
sub mtr_kill_leftovers () {
|
sub mtr_kill_leftovers () {
|
||||||
|
|
||||||
# First, kill all masters and slaves that would conflict with
|
# First, kill all masters and slaves that would conflict with
|
||||||
@ -199,10 +311,23 @@ sub mtr_kill_leftovers () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_stop_mysqld_servers(\@args, 1);
|
mtr_mysqladmin_shutdown(\@args);
|
||||||
|
|
||||||
|
# We now have tried to terminate nice. We have waited for the listen
|
||||||
|
# port to be free, but can't really tell if the mysqld process died
|
||||||
|
# or not. We now try to find the process PID from the PID file, and
|
||||||
|
# send a kill to that process. Note that Perl let kill(0,@pids) be
|
||||||
|
# a way to just return the numer of processes the kernel can send
|
||||||
|
# signals to. So this can be used (except on Cygwin) to determine
|
||||||
|
# if there are processes left running that we cound out might exists.
|
||||||
|
#
|
||||||
|
# But still after all this work, all we know is that we have
|
||||||
|
# the ports free.
|
||||||
|
|
||||||
# We scan the "var/run/" directory for other process id's to kill
|
# 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
|
|
||||||
|
# FIXME $path_run_dir or something
|
||||||
|
my $rundir= "$::glob_mysql_test_dir/var/run";
|
||||||
|
|
||||||
if ( -d $rundir )
|
if ( -d $rundir )
|
||||||
{
|
{
|
||||||
@ -218,193 +343,157 @@ sub mtr_kill_leftovers () {
|
|||||||
if ( -f $pidfile )
|
if ( -f $pidfile )
|
||||||
{
|
{
|
||||||
my $pid= mtr_get_pid_from_file($pidfile);
|
my $pid= mtr_get_pid_from_file($pidfile);
|
||||||
if ( ! unlink($pidfile) )
|
|
||||||
|
# Race, could have been removed between I tested with -f
|
||||||
|
# and the unlink() below, so I better check again with -f
|
||||||
|
|
||||||
|
if ( ! unlink($pidfile) and -f $pidfile )
|
||||||
{
|
{
|
||||||
mtr_error("can't remove $pidfile");
|
mtr_error("can't remove $pidfile");
|
||||||
}
|
}
|
||||||
push(@pids, $pid);
|
|
||||||
|
if ( $::glob_cygwin_perl or kill(0, $pid) )
|
||||||
|
{
|
||||||
|
push(@pids, $pid); # We know (cygwin guess) it exists
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(RUNDIR);
|
closedir(RUNDIR);
|
||||||
|
|
||||||
start_reap_all();
|
if ( @pids )
|
||||||
|
|
||||||
if ( $::glob_cygwin_perl )
|
|
||||||
{
|
{
|
||||||
# We have no (easy) way of knowing the Cygwin controlling
|
if ( $::glob_cygwin_perl )
|
||||||
# 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);
|
# We have no (easy) way of knowing the Cygwin controlling
|
||||||
} while ( $retries-- and kill(0, @pids) );
|
# process, in the PID file we only have the Windows process id.
|
||||||
|
system("kill -f " . join(" ",@pids)); # Hope for the best....
|
||||||
|
mtr_debug("Sleep 5 seconds waiting for processes to die");
|
||||||
|
sleep(5);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $retries= 10; # 10 seconds
|
||||||
|
do
|
||||||
|
{
|
||||||
|
kill(9, @pids);
|
||||||
|
mtr_debug("Sleep 1 second waiting for processes to die");
|
||||||
|
sleep(1) # Wait one second
|
||||||
|
} while ( $retries-- and kill(0, @pids) );
|
||||||
|
|
||||||
if ( kill(0, @pids) )
|
if ( kill(0, @pids) ) # Check if some left
|
||||||
{
|
{
|
||||||
mtr_error("can't kill processes " . join(" ", @pids));
|
# FIXME maybe just mtr_warning() ?
|
||||||
|
mtr_error("can't kill process(es) " . join(" ", @pids));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stop_reap_all();
|
# We may have failed everything, bug we now check again if we have
|
||||||
|
# the listen ports free to use, and if they are free, just go for it.
|
||||||
|
|
||||||
|
foreach my $srv ( @args )
|
||||||
|
{
|
||||||
|
if ( mtr_ping_mysqld_server($srv->{'port'}, $srv->{'sockfile'}) )
|
||||||
|
{
|
||||||
|
mtr_error("can't kill old mysqld holding port $srv->{'port'}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Shut down mysqld servers
|
# Shut down mysqld servers we have started from this run of this script
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# To speed things we kill servers in parallel.
|
# To speed things we kill servers in parallel. The argument is a list
|
||||||
# The argument is a list of 'pidfiles' and 'socketfiles'.
|
# of 'ports', 'pids', 'pidfiles' and 'socketfiles'.
|
||||||
# We use the pidfiles and socketfiles to try to terminate the servers.
|
|
||||||
# This is not perfect, there could still be other server processes
|
|
||||||
# left.
|
|
||||||
|
|
||||||
# Force flag is to be set only for killing mysqld servers this script
|
# FIXME On Cygwin, and maybe some other platforms, $srv->{'pid'} and
|
||||||
# didn't create in this run, i.e. initial cleanup before we start working.
|
# $srv->{'pidfile'} will not be the same PID. We need to try to kill
|
||||||
# If force flag is set, we try to kill all with mysqladmin, and
|
# both I think.
|
||||||
# give up if we have no PIDs.
|
|
||||||
|
|
||||||
# FIXME On some operating systems, $srv->{'pid'} and $srv->{'pidfile'}
|
sub mtr_stop_mysqld_servers ($) {
|
||||||
# will not be the same PID. We need to try to kill both I think.
|
|
||||||
|
|
||||||
sub mtr_stop_mysqld_servers ($$) {
|
|
||||||
my $spec= shift;
|
my $spec= shift;
|
||||||
my $force= shift;
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# If the process was not started from this file, we got no PID,
|
# First try nice normal shutdown using 'mysqladmin'
|
||||||
# we try to find it in the PID file.
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
my $any_pid= 0; # If we have any PIDs
|
mtr_mysqladmin_shutdown($spec);
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# We loop with waitpid() nonblocking to see how many of the ones we
|
||||||
|
# are to kill, actually got killed by mtr_mysqladmin_shutdown().
|
||||||
|
# Note that we don't rely on this, the mysqld server might have stop
|
||||||
|
# listening to the port, but still be alive. But it is a start.
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
foreach my $srv ( @$spec )
|
foreach my $srv ( @$spec )
|
||||||
{
|
{
|
||||||
if ( ! $srv->{'pid'} and -f $srv->{'pidfile'} )
|
if ( $srv->{'pid'} and (waitpid($srv->{'pid'},&WNOHANG) == $srv->{'pid'}) )
|
||||||
{
|
{
|
||||||
$srv->{'pid'}= mtr_get_pid_from_file($srv->{'pidfile'});
|
$srv->{'pid'}= 0;
|
||||||
}
|
|
||||||
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.
|
# We know the process was started from this file, so there is a PID
|
||||||
|
# saved, or else we have nothing to do.
|
||||||
|
# Might be that is is recorded to be missing, but we failed to
|
||||||
|
# take away the PID file earlier, then we do it now.
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
if ( ! $any_pid and ! $force )
|
my %mysqld_pids;
|
||||||
|
|
||||||
|
foreach my $srv ( @$spec )
|
||||||
|
{
|
||||||
|
if ( $srv->{'pid'} )
|
||||||
|
{
|
||||||
|
$mysqld_pids{$srv->{'pid'}}= 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
# Race, could have been removed between I tested with -f
|
||||||
|
# and the unlink() below, so I better check again with -f
|
||||||
|
|
||||||
|
if ( -f $srv->{'pidfile'} and ! unlink($srv->{'pidfile'}) and
|
||||||
|
-f $srv->{'pidfile'} )
|
||||||
|
{
|
||||||
|
mtr_error("can't remove $srv->{'pidfile'}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# If the processes where started from this script, and we had no PIDS
|
||||||
|
# then we don't have to do anything.
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
if ( ! keys %mysqld_pids )
|
||||||
{
|
{
|
||||||
# cluck "This is how we got here!";
|
# cluck "This is how we got here!";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# First try nice normal shutdown using 'mysqladmin'
|
# In mtr_mysqladmin_shutdown() we only waited for the mysqld servers
|
||||||
# ----------------------------------------------------------------------
|
# not to listen to the port. But we are not sure we got them all
|
||||||
|
# killed. If we suspect it lives, try nice kill with SIG_TERM. Note
|
||||||
start_reap_all(); # Don't require waitpid() of children
|
# that for true Win32 processes, kill(0,$pid) will not return 1.
|
||||||
|
|
||||||
foreach my $srv ( @$spec )
|
|
||||||
{
|
|
||||||
if ( -e $srv->{'sockfile'} or $srv->{'port'} )
|
|
||||||
{
|
|
||||||
# FIXME wrong log.....
|
|
||||||
# FIXME, stderr.....
|
|
||||||
# Shutdown time must be high as slave may be in reconnect
|
|
||||||
my $args;
|
|
||||||
|
|
||||||
mtr_init_args(\$args);
|
|
||||||
|
|
||||||
mtr_add_arg($args, "--no-defaults");
|
|
||||||
mtr_add_arg($args, "--user=%s", $::opt_user);
|
|
||||||
mtr_add_arg($args, "--password=");
|
|
||||||
if ( -e $srv->{'sockfile'} )
|
|
||||||
{
|
|
||||||
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=20");
|
|
||||||
mtr_add_arg($args, "--protocol=tcp"); # FIXME new thing, will it help?!
|
|
||||||
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 pid and socket file
|
|
||||||
|
|
||||||
PIDSOCKFILEREMOVED:
|
|
||||||
for (my $loop= $::opt_sleep_time_for_delete; $loop; $loop--)
|
|
||||||
{
|
|
||||||
my $pidsockfiles_left= 0;
|
|
||||||
foreach my $srv ( @$spec )
|
|
||||||
{
|
|
||||||
if ( -e $srv->{'sockfile'} or -f $srv->{'pidfile'} )
|
|
||||||
{
|
|
||||||
$pidsockfiles_left++; # Could be that pidfile is left
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( ! $pidsockfiles_left )
|
|
||||||
{
|
|
||||||
last PIDSOCKFILEREMOVED;
|
|
||||||
}
|
|
||||||
if ( $loop % 20 == 1 )
|
|
||||||
{
|
|
||||||
mtr_warning("Still processes alive after 10 seconds, retrying for $loop seconds...");
|
|
||||||
}
|
|
||||||
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. 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:
|
SIGNAL:
|
||||||
foreach my $sig (15,9)
|
foreach my $sig (15,9)
|
||||||
{
|
{
|
||||||
my $process_left= 0;
|
my $retries= 10; # 10 seconds
|
||||||
foreach my $srv ( @$spec )
|
kill($sig, keys %mysqld_pids);
|
||||||
|
while ( $retries-- and kill(0, keys %mysqld_pids) )
|
||||||
{
|
{
|
||||||
if ( $srv->{'pid'} and
|
mtr_debug("Sleep 1 second waiting for processes to die");
|
||||||
( -f $srv->{'pidfile'} or kill(0,$srv->{'pid'}) ) )
|
sleep(1) # Wait one second
|
||||||
{
|
|
||||||
$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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
@ -437,8 +526,8 @@ sub mtr_stop_mysqld_servers ($$) {
|
|||||||
|
|
||||||
foreach my $file ($srv->{'pidfile'}, $srv->{'sockfile'})
|
foreach my $file ($srv->{'pidfile'}, $srv->{'sockfile'})
|
||||||
{
|
{
|
||||||
unlink($file);
|
# Know it is dead so should be no race, careful anyway
|
||||||
if ( -e $file )
|
if ( -f $file and ! unlink($file) and -f $file )
|
||||||
{
|
{
|
||||||
$errors++;
|
$errors++;
|
||||||
mtr_warning("couldn't delete $file");
|
mtr_warning("couldn't delete $file");
|
||||||
@ -454,9 +543,147 @@ sub mtr_stop_mysqld_servers ($$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_reap_all();
|
# FIXME We just assume they are all dead, for Cygwin we are not
|
||||||
|
# really sure
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# FIXME We just assume they are all dead, we don't know....
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Shut down mysqld servers using "mysqladmin ... shutdown".
|
||||||
|
# To speed this up, we start them in parallel and use waitpid() to
|
||||||
|
# catch their termination. Note that this doesn't say the servers
|
||||||
|
# are terminated, just that 'mysqladmin' is terminated.
|
||||||
|
#
|
||||||
|
# Note that mysqladmin will ask the server about what PID file it uses,
|
||||||
|
# and mysqladmin will wait for it to be removed before it terminates
|
||||||
|
# (unless passes timeout).
|
||||||
|
#
|
||||||
|
# This function will take at most about 20 seconds, and we still are not
|
||||||
|
# sure we killed them all. If none is responding to ping, we return 1,
|
||||||
|
# else we return 0.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
sub mtr_mysqladmin_shutdown () {
|
||||||
|
my $spec= shift;
|
||||||
|
|
||||||
|
my @mysql_admin_pids;
|
||||||
|
my @to_kill_specs;
|
||||||
|
|
||||||
|
foreach my $srv ( @$spec )
|
||||||
|
{
|
||||||
|
if ( mtr_ping_mysqld_server($srv->{'port'}, $srv->{'sockfile'}) )
|
||||||
|
{
|
||||||
|
push(@to_kill_specs, $srv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach my $srv ( @to_kill_specs )
|
||||||
|
{
|
||||||
|
# FIXME wrong log.....
|
||||||
|
# FIXME, stderr.....
|
||||||
|
# Shutdown time must be high as slave may be in reconnect
|
||||||
|
my $args;
|
||||||
|
|
||||||
|
mtr_init_args(\$args);
|
||||||
|
|
||||||
|
mtr_add_arg($args, "--no-defaults");
|
||||||
|
mtr_add_arg($args, "--user=%s", $::opt_user);
|
||||||
|
mtr_add_arg($args, "--password=");
|
||||||
|
if ( -e $srv->{'sockfile'} )
|
||||||
|
{
|
||||||
|
mtr_add_arg($args, "--socket=%s", $srv->{'sockfile'});
|
||||||
|
}
|
||||||
|
if ( $srv->{'port'} )
|
||||||
|
{
|
||||||
|
mtr_add_arg($args, "--port=%s", $srv->{'port'});
|
||||||
|
}
|
||||||
|
if ( $srv->{'port'} and ! -e $srv->{'sockfile'} )
|
||||||
|
{
|
||||||
|
mtr_add_arg($args, "--protocol=tcp"); # Needed if no --socket
|
||||||
|
}
|
||||||
|
mtr_add_arg($args, "--connect_timeout=5");
|
||||||
|
mtr_add_arg($args, "--shutdown_timeout=20");
|
||||||
|
mtr_add_arg($args, "shutdown");
|
||||||
|
# We don't wait for termination of mysqladmin
|
||||||
|
my $pid= mtr_spawn($::exe_mysqladmin, $args,
|
||||||
|
"", $::path_manager_log, $::path_manager_log, "");
|
||||||
|
push(@mysql_admin_pids, $pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
# We wait blocking, we wait for the last one anyway
|
||||||
|
foreach my $pid (@mysql_admin_pids)
|
||||||
|
{
|
||||||
|
waitpid($pid,0); # FIXME no need to check -1 or 0?
|
||||||
|
}
|
||||||
|
|
||||||
|
# If we trusted "mysqladmin --shutdown_timeout= ..." we could just
|
||||||
|
# terminate now, but we don't (FIXME should be debugged).
|
||||||
|
# So we try again to ping and at least wait the same amount of time
|
||||||
|
# mysqladmin would for all to die.
|
||||||
|
|
||||||
|
my $timeout= 20; # 20 seconds max
|
||||||
|
my $res= 1; # If we just fall through, we are done
|
||||||
|
|
||||||
|
TIME:
|
||||||
|
while ( $timeout-- )
|
||||||
|
{
|
||||||
|
foreach my $srv ( @to_kill_specs )
|
||||||
|
{
|
||||||
|
$res= 1; # We are optimistic
|
||||||
|
if ( mtr_ping_mysqld_server($srv->{'port'}, $srv->{'sockfile'}) )
|
||||||
|
{
|
||||||
|
mtr_debug("Sleep 1 second waiting for processes to stop using port");
|
||||||
|
sleep(1); # One second
|
||||||
|
$res= 0;
|
||||||
|
next TIME;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
last; # If we got here, we are done
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# The operating system will keep information about dead children,
|
||||||
|
# we read this information here, and if we have records the process
|
||||||
|
# is alive, we mark it as dead.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
sub mtr_record_dead_children () {
|
||||||
|
|
||||||
|
my $ret_pid;
|
||||||
|
|
||||||
|
# FIXME the man page says to wait for -1 to terminate,
|
||||||
|
# but on OS X we get '0' all the time...
|
||||||
|
while ( ($ret_pid= waitpid(-1,&WNOHANG)) > 0 )
|
||||||
|
{
|
||||||
|
mtr_debug("waitpid() catched exit of child $ret_pid");
|
||||||
|
foreach my $idx (0..1)
|
||||||
|
{
|
||||||
|
if ( $::master->[$idx]->{'pid'} eq $ret_pid )
|
||||||
|
{
|
||||||
|
mtr_debug("child $ret_pid was master[$idx]");
|
||||||
|
$::master->[$idx]->{'pid'}= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $idx (0..2)
|
||||||
|
{
|
||||||
|
if ( $::slave->[$idx]->{'pid'} eq $ret_pid )
|
||||||
|
{
|
||||||
|
mtr_debug("child $ret_pid was slave[$idx]");
|
||||||
|
$::slave->[$idx]->{'pid'}= 0;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub start_reap_all {
|
sub start_reap_all {
|
||||||
@ -467,6 +694,32 @@ sub stop_reap_all {
|
|||||||
$SIG{CHLD}= 'DEFAULT';
|
$SIG{CHLD}= 'DEFAULT';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub mtr_ping_mysqld_server () {
|
||||||
|
my $port= shift;
|
||||||
|
|
||||||
|
my $remote= "localhost";
|
||||||
|
my $iaddr= inet_aton($remote);
|
||||||
|
if ( ! $iaddr )
|
||||||
|
{
|
||||||
|
mtr_error("can't find IP number for $remote");
|
||||||
|
}
|
||||||
|
my $paddr= sockaddr_in($port, $iaddr);
|
||||||
|
my $proto= getprotobyname('tcp');
|
||||||
|
if ( ! socket(SOCK, PF_INET, SOCK_STREAM, $proto) )
|
||||||
|
{
|
||||||
|
mtr_error("can't create socket: $!");
|
||||||
|
}
|
||||||
|
if ( connect(SOCK, $paddr) )
|
||||||
|
{
|
||||||
|
close(SOCK); # FIXME check error?
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Wait for a file to be created
|
# Wait for a file to be created
|
||||||
@ -474,33 +727,38 @@ sub stop_reap_all {
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
sub sleep_until_file_created ($$) {
|
sub sleep_until_file_created ($$$) {
|
||||||
my $pidfile= shift;
|
my $pidfile= shift;
|
||||||
my $timeout= shift;
|
my $timeout= shift;
|
||||||
|
my $pid= shift;
|
||||||
|
|
||||||
my $loop= $timeout;
|
for ( my $loop= 1; $loop <= $timeout; $loop++ )
|
||||||
while ( $loop-- )
|
|
||||||
{
|
{
|
||||||
if ( -r $pidfile )
|
if ( -r $pidfile )
|
||||||
{
|
{
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
mtr_debug("Sleep for 1 second waiting for creation of $pidfile");
|
|
||||||
|
|
||||||
if ( $loop % 20 == 1 )
|
# Check if it died after the fork() was successful
|
||||||
|
if ( waitpid($pid,&WNOHANG) == $pid )
|
||||||
{
|
{
|
||||||
mtr_warning("Waiting for $pidfile to be created, still trying for $loop seconds...");
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
mtr_debug("Sleep 1 second waiting for creation of $pidfile");
|
||||||
|
|
||||||
|
if ( $loop % 60 == 0 )
|
||||||
|
{
|
||||||
|
my $left= $timeout - $loop;
|
||||||
|
mtr_warning("Waited $loop seconds for $pidfile to be created, " .
|
||||||
|
"still waiting for $left seconds...");
|
||||||
}
|
}
|
||||||
|
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! -r $pidfile )
|
return 0;
|
||||||
{
|
|
||||||
mtr_error("No $pidfile was created");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -10,6 +10,7 @@ sub mtr_report_test_name($);
|
|||||||
sub mtr_report_test_passed($);
|
sub mtr_report_test_passed($);
|
||||||
sub mtr_report_test_failed($);
|
sub mtr_report_test_failed($);
|
||||||
sub mtr_report_test_skipped($);
|
sub mtr_report_test_skipped($);
|
||||||
|
sub mtr_report_test_disabled($);
|
||||||
|
|
||||||
sub mtr_show_failed_diff ($);
|
sub mtr_show_failed_diff ($);
|
||||||
sub mtr_report_stats ($);
|
sub mtr_report_stats ($);
|
||||||
@ -72,7 +73,14 @@ sub mtr_report_test_skipped ($) {
|
|||||||
my $tinfo= shift;
|
my $tinfo= shift;
|
||||||
|
|
||||||
$tinfo->{'result'}= 'MTR_RES_SKIPPED';
|
$tinfo->{'result'}= 'MTR_RES_SKIPPED';
|
||||||
print "[ skipped ]\n";
|
if ( $tinfo->{'disable'} )
|
||||||
|
{
|
||||||
|
print "[ disabled ] $tinfo->{'comment'}\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "[ skipped ]\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub mtr_report_test_passed ($) {
|
sub mtr_report_test_passed ($) {
|
||||||
@ -95,9 +103,18 @@ sub mtr_report_test_failed ($) {
|
|||||||
$tinfo->{'result'}= 'MTR_RES_FAILED';
|
$tinfo->{'result'}= 'MTR_RES_FAILED';
|
||||||
print "[ fail ]\n";
|
print "[ fail ]\n";
|
||||||
|
|
||||||
print "Errors are (from $::path_timefile) :\n";
|
# FIXME Instead of this test, and meaningless error message in 'else'
|
||||||
print mtr_fromfile($::path_timefile); # FIXME print_file() instead
|
# we should write out into $::path_timefile when the error occurs.
|
||||||
print "\n(the last lines may be the most important ones)\n";
|
if ( -f $::path_timefile )
|
||||||
|
{
|
||||||
|
print "Errors are (from $::path_timefile) :\n";
|
||||||
|
print mtr_fromfile($::path_timefile); # FIXME print_file() instead
|
||||||
|
print "\n(the last lines may be the most important ones)\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print "Unexpected termination, probably when starting mysqld\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub mtr_report_stats ($) {
|
sub mtr_report_stats ($) {
|
||||||
|
@ -84,10 +84,11 @@ use Sys::Hostname;
|
|||||||
#use Carp;
|
#use Carp;
|
||||||
use IO::Socket;
|
use IO::Socket;
|
||||||
use IO::Socket::INET;
|
use IO::Socket::INET;
|
||||||
use Data::Dumper;
|
#use Data::Dumper;
|
||||||
use strict;
|
use strict;
|
||||||
#use diagnostics;
|
#use diagnostics;
|
||||||
|
|
||||||
|
require "lib/mtr_cases.pl";
|
||||||
require "lib/mtr_process.pl";
|
require "lib/mtr_process.pl";
|
||||||
require "lib/mtr_io.pl";
|
require "lib/mtr_io.pl";
|
||||||
require "lib/mtr_gcov.pl";
|
require "lib/mtr_gcov.pl";
|
||||||
@ -165,14 +166,12 @@ our $glob_user= 'test';
|
|||||||
our $glob_use_embedded_server= 0;
|
our $glob_use_embedded_server= 0;
|
||||||
|
|
||||||
our $glob_basedir;
|
our $glob_basedir;
|
||||||
our $glob_do_test;
|
|
||||||
|
|
||||||
# The total result
|
# The total result
|
||||||
|
|
||||||
our $path_charsetsdir;
|
our $path_charsetsdir;
|
||||||
our $path_client_bindir;
|
our $path_client_bindir;
|
||||||
our $path_language;
|
our $path_language;
|
||||||
our $path_tests_bindir;
|
|
||||||
our $path_timefile;
|
our $path_timefile;
|
||||||
our $path_manager_log; # Used by mysqldadmin
|
our $path_manager_log; # Used by mysqldadmin
|
||||||
our $path_slave_load_tmpdir; # What is this?!
|
our $path_slave_load_tmpdir; # What is this?!
|
||||||
@ -192,8 +191,10 @@ our $exe_master_mysqld;
|
|||||||
our $exe_mysql;
|
our $exe_mysql;
|
||||||
our $exe_mysqladmin;
|
our $exe_mysqladmin;
|
||||||
our $exe_mysqlbinlog;
|
our $exe_mysqlbinlog;
|
||||||
|
our $exe_mysql_client_test;
|
||||||
our $exe_mysqld;
|
our $exe_mysqld;
|
||||||
our $exe_mysqldump; # Called from test case
|
our $exe_mysqldump; # Called from test case
|
||||||
|
our $exe_mysql_fix_system_tables;
|
||||||
our $exe_mysqltest;
|
our $exe_mysqltest;
|
||||||
our $exe_slave_mysqld;
|
our $exe_slave_mysqld;
|
||||||
|
|
||||||
@ -208,6 +209,7 @@ our $opt_current_test;
|
|||||||
our $opt_ddd;
|
our $opt_ddd;
|
||||||
our $opt_debug;
|
our $opt_debug;
|
||||||
our $opt_do_test;
|
our $opt_do_test;
|
||||||
|
our @opt_cases; # The test cases names in argv
|
||||||
our $opt_embedded_server;
|
our $opt_embedded_server;
|
||||||
our $opt_extern;
|
our $opt_extern;
|
||||||
our $opt_fast;
|
our $opt_fast;
|
||||||
@ -232,8 +234,6 @@ our $opt_local_master;
|
|||||||
our $master; # Will be struct in C
|
our $master; # Will be struct in C
|
||||||
our $slave;
|
our $slave;
|
||||||
|
|
||||||
our $opt_master_myport;
|
|
||||||
our $opt_slave_myport;
|
|
||||||
our $opt_ndbcluster_port;
|
our $opt_ndbcluster_port;
|
||||||
our $opt_ndbconnectstring;
|
our $opt_ndbconnectstring;
|
||||||
|
|
||||||
@ -297,8 +297,6 @@ sub command_line_setup ();
|
|||||||
sub executable_setup ();
|
sub executable_setup ();
|
||||||
sub environment_setup ();
|
sub environment_setup ();
|
||||||
sub kill_and_cleanup ();
|
sub kill_and_cleanup ();
|
||||||
sub collect_test_cases ($);
|
|
||||||
sub sleep_until_file_created ($$);
|
|
||||||
sub ndbcluster_start ();
|
sub ndbcluster_start ();
|
||||||
sub ndbcluster_stop ();
|
sub ndbcluster_stop ();
|
||||||
sub run_benchmarks ($);
|
sub run_benchmarks ($);
|
||||||
@ -306,6 +304,7 @@ sub run_tests ();
|
|||||||
sub mysql_install_db ();
|
sub mysql_install_db ();
|
||||||
sub install_db ($$);
|
sub install_db ($$);
|
||||||
sub run_testcase ($);
|
sub run_testcase ($);
|
||||||
|
sub report_failure_and_restart ($);
|
||||||
sub do_before_start_master ($$);
|
sub do_before_start_master ($$);
|
||||||
sub do_before_start_slave ($$);
|
sub do_before_start_slave ($$);
|
||||||
sub mysqld_start ($$$$);
|
sub mysqld_start ($$$$);
|
||||||
@ -358,7 +357,15 @@ sub main () {
|
|||||||
|
|
||||||
if ( $opt_start_and_exit )
|
if ( $opt_start_and_exit )
|
||||||
{
|
{
|
||||||
mtr_report("Servers started, exiting");
|
# FIXME what about ndb?
|
||||||
|
if ( mysqld_start('master',0,[],[]) )
|
||||||
|
{
|
||||||
|
mtr_report("Servers started, exiting");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mtr_error("Can't start the mysqld server");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -447,8 +454,8 @@ sub command_line_setup () {
|
|||||||
$path_manager_log= "$glob_mysql_test_dir/var/log/manager.log";
|
$path_manager_log= "$glob_mysql_test_dir/var/log/manager.log";
|
||||||
$opt_current_test= "$glob_mysql_test_dir/var/log/current_test";
|
$opt_current_test= "$glob_mysql_test_dir/var/log/current_test";
|
||||||
|
|
||||||
$opt_master_myport= 9306;
|
my $opt_master_myport= 9306;
|
||||||
$opt_slave_myport= 9308;
|
my $opt_slave_myport= 9308;
|
||||||
$opt_ndbcluster_port= 9350;
|
$opt_ndbcluster_port= 9350;
|
||||||
|
|
||||||
# Read the command line
|
# Read the command line
|
||||||
@ -532,6 +539,8 @@ sub command_line_setup () {
|
|||||||
usage("");
|
usage("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@opt_cases= @ARGV;
|
||||||
|
|
||||||
# Put this into a hash, will be a C struct
|
# Put this into a hash, will be a C struct
|
||||||
|
|
||||||
$master->[0]->{'path_myddir'}= "$glob_mysql_test_dir/var/master-data";
|
$master->[0]->{'path_myddir'}= "$glob_mysql_test_dir/var/master-data";
|
||||||
@ -598,7 +607,7 @@ sub command_line_setup () {
|
|||||||
# Look at the command line options and set script flags
|
# Look at the command line options and set script flags
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
if ( $opt_record and ! @ARGV)
|
if ( $opt_record and ! @opt_cases )
|
||||||
{
|
{
|
||||||
mtr_error("Will not run in record mode without a specific test case");
|
mtr_error("Will not run in record mode without a specific test case");
|
||||||
}
|
}
|
||||||
@ -733,7 +742,8 @@ sub executable_setup () {
|
|||||||
{
|
{
|
||||||
mtr_error("Can't find embedded server 'mysqltest'");
|
mtr_error("Can't find embedded server 'mysqltest'");
|
||||||
}
|
}
|
||||||
$path_tests_bindir= "$glob_basedir/libmysqld/examples";
|
$exe_mysql_client_test=
|
||||||
|
"$glob_basedir/libmysqld/examples/mysql_client_test_embedded";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -749,7 +759,8 @@ sub executable_setup () {
|
|||||||
{
|
{
|
||||||
$exe_mysqltest= "$glob_basedir/client/mysqltest";
|
$exe_mysqltest= "$glob_basedir/client/mysqltest";
|
||||||
}
|
}
|
||||||
$path_tests_bindir= "$glob_basedir/tests";
|
$exe_mysql_client_test=
|
||||||
|
"$glob_basedir/tests/mysql_client_test";
|
||||||
}
|
}
|
||||||
if ( -f "$glob_basedir/client/.libs/mysqldump" )
|
if ( -f "$glob_basedir/client/.libs/mysqldump" )
|
||||||
{
|
{
|
||||||
@ -768,22 +779,26 @@ sub executable_setup () {
|
|||||||
$exe_mysqlbinlog= "$glob_basedir/client/mysqlbinlog";
|
$exe_mysqlbinlog= "$glob_basedir/client/mysqlbinlog";
|
||||||
}
|
}
|
||||||
|
|
||||||
$exe_mysqld= "$glob_basedir/sql/mysqld";
|
$path_client_bindir= "$glob_basedir/client";
|
||||||
$path_client_bindir= "$glob_basedir/client";
|
$exe_mysqld= "$glob_basedir/sql/mysqld";
|
||||||
$exe_mysqladmin= "$path_client_bindir/mysqladmin";
|
$exe_mysqladmin= "$path_client_bindir/mysqladmin";
|
||||||
$exe_mysql= "$path_client_bindir/mysql";
|
$exe_mysql= "$path_client_bindir/mysql";
|
||||||
$path_language= "$glob_basedir/sql/share/english/";
|
$exe_mysql_fix_system_tables= "$glob_basedir/scripts/mysql_fix_privilege_tables";
|
||||||
$path_charsetsdir= "$glob_basedir/sql/share/charsets";
|
$path_language= "$glob_basedir/sql/share/english/";
|
||||||
|
$path_charsetsdir= "$glob_basedir/sql/share/charsets";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$path_client_bindir= "$glob_basedir/bin";
|
my $path_tests_bindir= "$glob_basedir/tests";
|
||||||
$path_tests_bindir= "$glob_basedir/tests";
|
|
||||||
$exe_mysqltest= "$path_client_bindir/mysqltest";
|
$path_client_bindir= "$glob_basedir/bin";
|
||||||
$exe_mysqldump= "$path_client_bindir/mysqldump";
|
$exe_mysqltest= "$path_client_bindir/mysqltest";
|
||||||
$exe_mysqlbinlog= "$path_client_bindir/mysqlbinlog";
|
$exe_mysqldump= "$path_client_bindir/mysqldump";
|
||||||
$exe_mysqladmin= "$path_client_bindir/mysqladmin";
|
$exe_mysqlbinlog= "$path_client_bindir/mysqlbinlog";
|
||||||
$exe_mysql= "$path_client_bindir/mysql";
|
$exe_mysqladmin= "$path_client_bindir/mysqladmin";
|
||||||
|
$exe_mysql= "$path_client_bindir/mysql";
|
||||||
|
$exe_mysql_fix_system_tables= "$path_client_bindir/scripts/mysql_fix_privilege_tables";
|
||||||
|
|
||||||
if ( -d "$glob_basedir/share/mysql/english" )
|
if ( -d "$glob_basedir/share/mysql/english" )
|
||||||
{
|
{
|
||||||
$path_language ="$glob_basedir/share/mysql/english/";
|
$path_language ="$glob_basedir/share/mysql/english/";
|
||||||
@ -804,6 +819,33 @@ sub executable_setup () {
|
|||||||
$exe_mysqld= "$glob_basedir/bin/mysqld";
|
$exe_mysqld= "$glob_basedir/bin/mysqld";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $glob_use_embedded_server )
|
||||||
|
{
|
||||||
|
if ( -f "$path_client_bindir/mysqltest_embedded" )
|
||||||
|
{
|
||||||
|
# FIXME valgrind?
|
||||||
|
$exe_mysqltest="$path_client_bindir/mysqltest_embedded";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error("Cannot find embedded server 'mysqltest_embedded'");
|
||||||
|
}
|
||||||
|
if ( -d "$path_tests_bindir/mysql_client_test_embedded" )
|
||||||
|
{
|
||||||
|
$exe_mysql_client_test=
|
||||||
|
"$path_tests_bindir/mysql_client_test_embedded";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$exe_mysql_client_test=
|
||||||
|
"$path_client_bindir/mysql_client_test_embedded";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$exe_mysqltest="$path_client_bindir/mysqltest";
|
||||||
|
$exe_mysql_client_test="$path_client_bindir/mysql_client_test";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# FIXME special $exe_master_mysqld and $exe_slave_mysqld
|
# FIXME special $exe_master_mysqld and $exe_slave_mysqld
|
||||||
@ -846,13 +888,18 @@ sub environment_setup () {
|
|||||||
# Also command lines in .opt files may contain env vars
|
# Also command lines in .opt files may contain env vars
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
$ENV{'LC_COLLATE'}= "C";
|
$ENV{'UMASK'}= "0660"; # The octal *string*
|
||||||
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
|
$ENV{'UMASK_DIR'}= "0770"; # The octal *string*
|
||||||
$ENV{'MASTER_MYPORT'}= $opt_master_myport;
|
$ENV{'LC_COLLATE'}= "C";
|
||||||
$ENV{'SLAVE_MYPORT'}= $opt_slave_myport;
|
$ENV{'USE_RUNNING_SERVER'}= $glob_use_running_server;
|
||||||
# $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME
|
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
|
||||||
$ENV{'MYSQL_TCP_PORT'}= 3306;
|
$ENV{'MASTER_MYSOCK'}= $master->[0]->{'path_mysock'};
|
||||||
$ENV{'MASTER_MYSOCK'}= $master->[0]->{'path_mysock'};
|
$ENV{'MASTER_MYSOCK1'}= $master->[1]->{'path_mysock'};
|
||||||
|
$ENV{'MASTER_MYPORT'}= $master->[0]->{'path_myport'};
|
||||||
|
$ENV{'MASTER_MYPORT1'}= $master->[1]->{'path_myport'};
|
||||||
|
$ENV{'SLAVE_MYPORT'}= $slave->[0]->{'path_myport'};
|
||||||
|
# $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME
|
||||||
|
$ENV{'MYSQL_TCP_PORT'}= 3306;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -875,203 +922,6 @@ sub handle_int_signal () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# Collect information about test cases we are to run
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!");
|
|
||||||
|
|
||||||
foreach my $elem ( sort readdir(TESTDIR) ) {
|
|
||||||
my $tname= mtr_match_extension($elem,"test");
|
|
||||||
next if ! defined $tname;
|
|
||||||
next if $opt_do_test and ! defined mtr_match_prefix($elem,$opt_do_test);
|
|
||||||
my $path= "$testdir/$elem";
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
# Skip some tests silently
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
if ( $opt_start_from and $tname lt $opt_start_from )
|
|
||||||
{
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
# Skip some tests but include in list, just mark them to skip
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
my $tinfo= {};
|
|
||||||
$tinfo->{'name'}= $tname;
|
|
||||||
$tinfo->{'result_file'}= "$resdir/$tname.result";
|
|
||||||
push(@tests, $tinfo);
|
|
||||||
|
|
||||||
if ( $opt_skip_test and defined mtr_match_prefix($tname,$opt_skip_test) )
|
|
||||||
{
|
|
||||||
$tinfo->{'skip'}= 1;
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIXME temporary solution, we have a hard coded list of test cases to
|
|
||||||
# skip if we are using the embedded server
|
|
||||||
|
|
||||||
if ( $glob_use_embedded_server and
|
|
||||||
mtr_match_any_exact($tname,\@skip_if_embedded_server) )
|
|
||||||
{
|
|
||||||
$tinfo->{'skip'}= 1;
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
# Collect information about test case
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
$tinfo->{'path'}= $path;
|
|
||||||
$tinfo->{'timezone'}= "GMT-3"; # for UNIX_TIMESTAMP tests to work
|
|
||||||
|
|
||||||
if ( defined mtr_match_prefix($tname,"rpl") )
|
|
||||||
{
|
|
||||||
if ( $opt_skip_rpl )
|
|
||||||
{
|
|
||||||
$tinfo->{'skip'}= 1;
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIXME currently we always restart slaves
|
|
||||||
$tinfo->{'slave_restart'}= 1;
|
|
||||||
|
|
||||||
if ( $tname eq 'rpl_failsafe' or $tname eq 'rpl_chain_temp_table' )
|
|
||||||
{
|
|
||||||
$tinfo->{'slave_num'}= 3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$tinfo->{'slave_num'}= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIXME what about embedded_server + ndbcluster, skip ?!
|
|
||||||
|
|
||||||
my $master_opt_file= "$testdir/$tname-master.opt";
|
|
||||||
my $slave_opt_file= "$testdir/$tname-slave.opt";
|
|
||||||
my $slave_mi_file= "$testdir/$tname.slave-mi";
|
|
||||||
my $master_sh= "$testdir/$tname-master.sh";
|
|
||||||
my $slave_sh= "$testdir/$tname-slave.sh";
|
|
||||||
|
|
||||||
if ( -f $master_opt_file )
|
|
||||||
{
|
|
||||||
$tinfo->{'master_restart'}= 1; # We think so for now
|
|
||||||
# This is a dirty hack from old mysql-test-run, we use the opt file
|
|
||||||
# to flag other things as well, it is not a opt list at all
|
|
||||||
my $extra_master_opt= mtr_get_opts_from_file($master_opt_file);
|
|
||||||
|
|
||||||
foreach my $opt (@$extra_master_opt)
|
|
||||||
{
|
|
||||||
my $value;
|
|
||||||
|
|
||||||
$value= mtr_match_prefix($opt, "--timezone=");
|
|
||||||
|
|
||||||
if ( defined $value )
|
|
||||||
{
|
|
||||||
$tinfo->{'timezone'}= $value;
|
|
||||||
$extra_master_opt= [];
|
|
||||||
$tinfo->{'master_restart'}= 0;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
|
|
||||||
$value= mtr_match_prefix($opt, "--result-file=");
|
|
||||||
|
|
||||||
if ( defined $value )
|
|
||||||
{
|
|
||||||
$tinfo->{'result_file'}= "r/$value.result";
|
|
||||||
if ( $opt_result_ext and $opt_record or
|
|
||||||
-f "$tinfo->{'result_file'}$opt_result_ext")
|
|
||||||
{
|
|
||||||
$tinfo->{'result_file'}.= $opt_result_ext;
|
|
||||||
}
|
|
||||||
$extra_master_opt= [];
|
|
||||||
$tinfo->{'master_restart'}= 0;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$tinfo->{'master_opt'}= $extra_master_opt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( -f $slave_opt_file )
|
|
||||||
{
|
|
||||||
$tinfo->{'slave_opt'}= mtr_get_opts_from_file($slave_opt_file);
|
|
||||||
$tinfo->{'slave_restart'}= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( -f $slave_mi_file )
|
|
||||||
{
|
|
||||||
$tinfo->{'slave_mi'}= mtr_get_opts_from_file($slave_mi_file);
|
|
||||||
$tinfo->{'slave_restart'}= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( -f $master_sh )
|
|
||||||
{
|
|
||||||
if ( $glob_win32_perl )
|
|
||||||
{
|
|
||||||
$tinfo->{'skip'}= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$tinfo->{'master_sh'}= $master_sh;
|
|
||||||
$tinfo->{'master_restart'}= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( -f $slave_sh )
|
|
||||||
{
|
|
||||||
if ( $glob_win32_perl )
|
|
||||||
{
|
|
||||||
$tinfo->{'skip'}= 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$tinfo->{'slave_sh'}= $slave_sh;
|
|
||||||
$tinfo->{'slave_restart'}= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# We can't restart a running server that may be in use
|
|
||||||
|
|
||||||
if ( $glob_use_running_server and
|
|
||||||
( $tinfo->{'master_restart'} or $tinfo->{'slave_restart'} ) )
|
|
||||||
{
|
|
||||||
$tinfo->{'skip'}= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir TESTDIR;
|
|
||||||
|
|
||||||
return \@tests;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Handle left overs from previous runs
|
# Handle left overs from previous runs
|
||||||
@ -1189,6 +1039,10 @@ sub run_benchmarks ($) {
|
|||||||
if ( ! $glob_use_embedded_server and ! $opt_local_master )
|
if ( ! $glob_use_embedded_server and ! $opt_local_master )
|
||||||
{
|
{
|
||||||
$master->[0]->{'pid'}= mysqld_start('master',0,[],[]);
|
$master->[0]->{'pid'}= mysqld_start('master',0,[],[]);
|
||||||
|
if ( ! $master->[0]->{'pid'} )
|
||||||
|
{
|
||||||
|
mtr_error("Can't start the mysqld server");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_init_args(\$args);
|
mtr_init_args(\$args);
|
||||||
@ -1254,7 +1108,7 @@ sub run_suite () {
|
|||||||
|
|
||||||
mtr_print_thick_line();
|
mtr_print_thick_line();
|
||||||
|
|
||||||
mtr_report("Finding Tests in the '$suite' suite");
|
mtr_report("Finding Tests in the '$suite' suite");
|
||||||
|
|
||||||
my $tests= collect_test_cases($suite);
|
my $tests= collect_test_cases($suite);
|
||||||
|
|
||||||
@ -1301,10 +1155,12 @@ sub run_suite () {
|
|||||||
|
|
||||||
sub mysql_install_db () {
|
sub mysql_install_db () {
|
||||||
|
|
||||||
mtr_report("Installing Test Databases");
|
# FIXME not exactly true I think, needs improvements
|
||||||
|
|
||||||
install_db('master', $master->[0]->{'path_myddir'});
|
install_db('master', $master->[0]->{'path_myddir'});
|
||||||
|
install_db('master', $master->[1]->{'path_myddir'});
|
||||||
install_db('slave', $slave->[0]->{'path_myddir'});
|
install_db('slave', $slave->[0]->{'path_myddir'});
|
||||||
|
install_db('slave', $slave->[1]->{'path_myddir'});
|
||||||
|
install_db('slave', $slave->[2]->{'path_myddir'});
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1422,6 +1278,12 @@ sub run_testcase ($) {
|
|||||||
mtr_tofile($master->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n");
|
mtr_tofile($master->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n");
|
||||||
do_before_start_master($tname,$tinfo->{'master_sh'});
|
do_before_start_master($tname,$tinfo->{'master_sh'});
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# If any mysqld servers running died, we have to know
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
mtr_record_dead_children();
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# Start masters
|
# Start masters
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
@ -1439,14 +1301,24 @@ sub run_testcase ($) {
|
|||||||
{
|
{
|
||||||
$master->[0]->{'pid'}=
|
$master->[0]->{'pid'}=
|
||||||
mysqld_start('master',0,$tinfo->{'master_opt'},[]);
|
mysqld_start('master',0,$tinfo->{'master_opt'},[]);
|
||||||
|
if ( ! $master->[0]->{'pid'} )
|
||||||
|
{
|
||||||
|
report_failure_and_restart($tinfo);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ( $opt_with_ndbcluster and ! $master->[1]->{'pid'} )
|
if ( $opt_with_ndbcluster and ! $master->[1]->{'pid'} )
|
||||||
{
|
{
|
||||||
$master->[1]->{'pid'}=
|
$master->[1]->{'pid'}=
|
||||||
mysqld_start('master',1,$tinfo->{'master_opt'},[]);
|
mysqld_start('master',1,$tinfo->{'master_opt'},[]);
|
||||||
|
if ( ! $master->[1]->{'pid'} )
|
||||||
|
{
|
||||||
|
report_failure_and_restart($tinfo);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $tinfo->{'master_opt'} )
|
if ( @{$tinfo->{'master_opt'}} )
|
||||||
{
|
{
|
||||||
$master->[0]->{'uses_special_flags'}= 1;
|
$master->[0]->{'uses_special_flags'}= 1;
|
||||||
}
|
}
|
||||||
@ -1469,6 +1341,11 @@ sub run_testcase ($) {
|
|||||||
$slave->[$idx]->{'pid'}=
|
$slave->[$idx]->{'pid'}=
|
||||||
mysqld_start('slave',$idx,
|
mysqld_start('slave',$idx,
|
||||||
$tinfo->{'slave_opt'}, $tinfo->{'slave_mi'});
|
$tinfo->{'slave_opt'}, $tinfo->{'slave_mi'});
|
||||||
|
if ( ! $slave->[$idx]->{'pid'} )
|
||||||
|
{
|
||||||
|
report_failure_and_restart($tinfo);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1502,33 +1379,40 @@ sub run_testcase ($) {
|
|||||||
"mysqltest returned unexpected code $res, " .
|
"mysqltest returned unexpected code $res, " .
|
||||||
"it has probably crashed");
|
"it has probably crashed");
|
||||||
}
|
}
|
||||||
mtr_report_test_failed($tinfo);
|
report_failure_and_restart($tinfo);
|
||||||
mtr_show_failed_diff($tname);
|
|
||||||
print "\n";
|
|
||||||
if ( ! $opt_force )
|
|
||||||
{
|
|
||||||
print "Aborting: $tname failed. To continue, re-run with '--force'.";
|
|
||||||
print "\n";
|
|
||||||
if ( ! $opt_gdb and ! $glob_use_running_server and
|
|
||||||
! $opt_ddd and ! $glob_use_embedded_server )
|
|
||||||
{
|
|
||||||
stop_masters_slaves();
|
|
||||||
}
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIXME always terminate on failure?!
|
|
||||||
if ( ! $opt_gdb and ! $glob_use_running_server and
|
|
||||||
! $opt_ddd and ! $glob_use_embedded_server )
|
|
||||||
{
|
|
||||||
stop_masters_slaves();
|
|
||||||
}
|
|
||||||
print "Resuming Tests\n\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub report_failure_and_restart ($) {
|
||||||
|
my $tinfo= shift;
|
||||||
|
|
||||||
|
mtr_report_test_failed($tinfo);
|
||||||
|
mtr_show_failed_diff($tinfo->{'name'});
|
||||||
|
print "\n";
|
||||||
|
if ( ! $opt_force )
|
||||||
|
{
|
||||||
|
print "Aborting: $tinfo->{'name'} failed. To continue, re-run with '--force'.";
|
||||||
|
print "\n";
|
||||||
|
if ( ! $opt_gdb and ! $glob_use_running_server and
|
||||||
|
! $opt_ddd and ! $glob_use_embedded_server )
|
||||||
|
{
|
||||||
|
stop_masters_slaves();
|
||||||
|
}
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
# FIXME always terminate on failure?!
|
||||||
|
if ( ! $opt_gdb and ! $glob_use_running_server and
|
||||||
|
! $opt_ddd and ! $glob_use_embedded_server )
|
||||||
|
{
|
||||||
|
stop_masters_slaves();
|
||||||
|
}
|
||||||
|
print "Resuming Tests\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Start and stop servers
|
# Start and stop servers
|
||||||
@ -1603,11 +1487,13 @@ sub do_before_start_slave ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub mysqld_arguments ($$$$$) {
|
sub mysqld_arguments ($$$$$) {
|
||||||
my $args= shift;
|
my $args= shift;
|
||||||
my $type= shift; # master/slave/bootstrap
|
my $type= shift; # master/slave/bootstrap
|
||||||
my $idx= shift;
|
my $idx= shift;
|
||||||
my $extra_opt= shift;
|
my $extra_opt= shift;
|
||||||
my $slave_master_info= shift;
|
my $slave_master_info= shift;
|
||||||
|
|
||||||
|
# print STDERR Dumper($extra_opt);
|
||||||
|
|
||||||
my $sidx= ""; # Index as string, 0 is empty string
|
my $sidx= ""; # Index as string, 0 is empty string
|
||||||
if ( $idx > 0 )
|
if ( $idx > 0 )
|
||||||
@ -1835,10 +1721,10 @@ sub mysqld_arguments ($$$$$) {
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
sub mysqld_start ($$$$) {
|
sub mysqld_start ($$$$) {
|
||||||
my $type= shift; # master/slave/bootstrap
|
my $type= shift; # master/slave/bootstrap
|
||||||
my $idx= shift;
|
my $idx= shift;
|
||||||
my $extra_opt= shift;
|
my $extra_opt= shift;
|
||||||
my $slave_master_info= shift;
|
my $slave_master_info= shift;
|
||||||
|
|
||||||
my $args; # Arg vector
|
my $args; # Arg vector
|
||||||
my $exe;
|
my $exe;
|
||||||
@ -1893,9 +1779,8 @@ sub mysqld_start ($$$$) {
|
|||||||
$master->[$idx]->{'path_myerr'},
|
$master->[$idx]->{'path_myerr'},
|
||||||
$master->[$idx]->{'path_myerr'}, "") )
|
$master->[$idx]->{'path_myerr'}, "") )
|
||||||
{
|
{
|
||||||
sleep_until_file_created($master->[$idx]->{'path_mypid'},
|
return sleep_until_file_created($master->[$idx]->{'path_mypid'},
|
||||||
$master->[$idx]->{'start_timeout'});
|
$master->[$idx]->{'start_timeout'}, $pid);
|
||||||
return $pid;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1905,13 +1790,12 @@ sub mysqld_start ($$$$) {
|
|||||||
$slave->[$idx]->{'path_myerr'},
|
$slave->[$idx]->{'path_myerr'},
|
||||||
$slave->[$idx]->{'path_myerr'}, "") )
|
$slave->[$idx]->{'path_myerr'}, "") )
|
||||||
{
|
{
|
||||||
sleep_until_file_created($slave->[$idx]->{'path_mypid'},
|
return sleep_until_file_created($slave->[$idx]->{'path_mypid'},
|
||||||
$master->[$idx]->{'start_timeout'});
|
$master->[$idx]->{'start_timeout'}, $pid);
|
||||||
return $pid;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_error("Can't start mysqld FIXME");
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub stop_masters_slaves () {
|
sub stop_masters_slaves () {
|
||||||
@ -1944,7 +1828,7 @@ sub stop_masters () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_stop_mysqld_servers(\@args, 0);
|
mtr_stop_mysqld_servers(\@args);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub stop_slaves () {
|
sub stop_slaves () {
|
||||||
@ -1966,7 +1850,7 @@ sub stop_slaves () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_stop_mysqld_servers(\@args, 0);
|
mtr_stop_mysqld_servers(\@args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1992,17 +1876,32 @@ sub run_mysqltest ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $cmdline_mysql=
|
my $cmdline_mysql=
|
||||||
"$exe_mysql --host=localhost --port=$master->[0]->{'path_myport'} " .
|
"$exe_mysql --host=localhost --user=root --password= " .
|
||||||
"--socket=$master->[0]->{'path_mysock'} --user=root --password=";
|
"--port=$master->[0]->{'path_myport'} " .
|
||||||
|
"--socket=$master->[0]->{'path_mysock'}";
|
||||||
|
|
||||||
|
my $cmdline_mysql_client_test=
|
||||||
|
"$exe_mysql_client_test --no-defaults --testcase --user=root --silent " .
|
||||||
|
"--port=$master->[0]->{'path_myport'} " .
|
||||||
|
"--socket=$master->[0]->{'path_mysock'}";
|
||||||
|
|
||||||
|
my $cmdline_mysql_fix_system_tables=
|
||||||
|
"$exe_mysql_fix_system_tables --no-defaults --host=localhost --user=root --password= " .
|
||||||
|
"--basedir=$glob_basedir --bindir=$path_client_bindir --verbose " .
|
||||||
|
"--port=$master->[0]->{'path_myport'} " .
|
||||||
|
"--socket=$master->[0]->{'path_mysock'}";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# FIXME really needing a PATH???
|
# FIXME really needing a PATH???
|
||||||
# $ENV{'PATH'}= "/bin:/usr/bin:/usr/local/bin:/usr/bsd:/usr/X11R6/bin:/usr/openwin/bin:/usr/bin/X11:$ENV{'PATH'}";
|
# $ENV{'PATH'}= "/bin:/usr/bin:/usr/local/bin:/usr/bsd:/usr/X11R6/bin:/usr/openwin/bin:/usr/bin/X11:$ENV{'PATH'}";
|
||||||
|
|
||||||
$ENV{'MYSQL'}= $exe_mysql;
|
$ENV{'MYSQL'}= $cmdline_mysql;
|
||||||
$ENV{'MYSQL_DUMP'}= $cmdline_mysqldump;
|
$ENV{'MYSQL_DUMP'}= $cmdline_mysqldump;
|
||||||
$ENV{'MYSQL_BINLOG'}= $exe_mysqlbinlog;
|
$ENV{'MYSQL_BINLOG'}= $cmdline_mysqlbinlog;
|
||||||
$ENV{'CLIENT_BINDIR'}= $path_client_bindir;
|
$ENV{'MYSQL_FIX_SYSTEM_TABLES'}= $cmdline_mysql_fix_system_tables;
|
||||||
$ENV{'TESTS_BINDIR'}= $path_tests_bindir;
|
$ENV{'MYSQL_CLIENT_TEST'}= $cmdline_mysql_client_test;
|
||||||
|
$ENV{'CHARSETSDIR'}= $path_charsetsdir;
|
||||||
|
|
||||||
my $exe= $exe_mysqltest;
|
my $exe= $exe_mysqltest;
|
||||||
my $args;
|
my $args;
|
||||||
|
@ -693,7 +693,7 @@ fi
|
|||||||
|
|
||||||
MYSQL_CLIENT_TEST="$MYSQL_CLIENT_TEST --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent"
|
MYSQL_CLIENT_TEST="$MYSQL_CLIENT_TEST --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent"
|
||||||
MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||||
MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR $EXTRA_MYSQLBINLOG_OPT"
|
MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR --character-sets-dir=$CHARSETSDIR $EXTRA_MYSQLBINLOG_OPT"
|
||||||
MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose"
|
MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose"
|
||||||
MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
|
MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
|
||||||
export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES
|
export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES
|
||||||
|
@ -526,13 +526,14 @@ insert into t2 values (@v);
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 User var 1 135 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
master-bin.000001 95 User var 1 135 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
||||||
master-bin.000001 135 Query 1 218 use `test`; insert into t2 values (@v)
|
master-bin.000001 135 Query 1 225 use `test`; insert into t2 values (@v)
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`;
|
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t2 values (@v);
|
insert into t2 values (@v);
|
||||||
drop table t2;
|
drop table t2;
|
||||||
set names latin1;
|
set names latin1;
|
||||||
|
@ -11,8 +11,8 @@ get_lock("a",10)
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 206 create database `drop-temp+table-test`
|
master-bin.000001 95 Query 1 213 create database `drop-temp+table-test`
|
||||||
master-bin.000001 206 Query 1 322 use `drop-temp+table-test`; create temporary table `table:name` (a int)
|
master-bin.000001 213 Query 1 336 use `drop-temp+table-test`; create temporary table `table:name` (a int)
|
||||||
master-bin.000001 322 Query 1 473 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
|
master-bin.000001 336 Query 1 494 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
|
||||||
master-bin.000001 473 Query 1 566 use `drop-temp+table-test`; DO RELEASE_LOCK("a")
|
master-bin.000001 494 Query 1 594 use `drop-temp+table-test`; DO RELEASE_LOCK("a")
|
||||||
drop database `drop-temp+table-test`;
|
drop database `drop-temp+table-test`;
|
||||||
|
@ -183,3 +183,13 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
|
|||||||
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
||||||
5 mod 3 5 mod -3 -5 mod 3 -5 mod -3
|
5 mod 3 5 mod -3 -5 mod 3 -5 mod -3
|
||||||
2 2 -2 -2
|
2 2 -2 -2
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
insert into t1 values (1,2), (2,3), (3,4), (4,5);
|
||||||
|
select * from t1 where a not between 1 and 2;
|
||||||
|
a b
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
select * from t1 where a not between 1 and 2 and b not between 3 and 4;
|
||||||
|
a b
|
||||||
|
4 5
|
||||||
|
drop table t1;
|
||||||
|
@ -75,7 +75,7 @@ ERROR 23000: Duplicate entry '2' for key 1
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 183 use `test`; insert into t1 select * from t2
|
master-bin.000001 95 Query 1 190 use `test`; insert into t1 select * from t2
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
|
@ -9,9 +9,9 @@ commit;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(1)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(1)
|
||||||
master-bin.000001 238 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 252 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 326 Query 1 # use `test`; COMMIT
|
master-bin.000001 347 Query 1 # use `test`; COMMIT
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -24,9 +24,9 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(2)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(2)
|
||||||
master-bin.000001 238 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 252 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 326 Query 1 # use `test`; ROLLBACK
|
master-bin.000001 347 Query 1 # use `test`; ROLLBACK
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -42,12 +42,12 @@ commit;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(3)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(3)
|
||||||
master-bin.000001 238 Query 1 # use `test`; savepoint my_savepoint
|
master-bin.000001 252 Query 1 # use `test`; savepoint my_savepoint
|
||||||
master-bin.000001 317 Query 1 # use `test`; insert into t1 values(4)
|
master-bin.000001 338 Query 1 # use `test`; insert into t1 values(4)
|
||||||
master-bin.000001 398 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 426 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 486 Query 1 # use `test`; rollback to savepoint my_savepoint
|
master-bin.000001 521 Query 1 # use `test`; rollback to savepoint my_savepoint
|
||||||
master-bin.000001 577 Query 1 # use `test`; COMMIT
|
master-bin.000001 619 Query 1 # use `test`; COMMIT
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -68,13 +68,13 @@ a
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(5)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(5)
|
||||||
master-bin.000001 238 Query 1 # use `test`; savepoint my_savepoint
|
master-bin.000001 252 Query 1 # use `test`; savepoint my_savepoint
|
||||||
master-bin.000001 317 Query 1 # use `test`; insert into t1 values(6)
|
master-bin.000001 338 Query 1 # use `test`; insert into t1 values(6)
|
||||||
master-bin.000001 398 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 426 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 486 Query 1 # use `test`; rollback to savepoint my_savepoint
|
master-bin.000001 521 Query 1 # use `test`; rollback to savepoint my_savepoint
|
||||||
master-bin.000001 577 Query 1 # use `test`; insert into t1 values(7)
|
master-bin.000001 619 Query 1 # use `test`; insert into t1 values(7)
|
||||||
master-bin.000001 658 Query 1 # use `test`; COMMIT
|
master-bin.000001 707 Query 1 # use `test`; COMMIT
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -90,9 +90,9 @@ get_lock("a",10)
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(8)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(8)
|
||||||
master-bin.000001 238 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 252 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 326 Query 1 # use `test`; ROLLBACK
|
master-bin.000001 347 Query 1 # use `test`; ROLLBACK
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -101,7 +101,7 @@ insert into t2 select * from t1;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(9)
|
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(9)
|
||||||
master-bin.000001 176 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 183 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -111,16 +111,16 @@ insert into t2 select * from t1;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(10)
|
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(10)
|
||||||
master-bin.000001 177 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 184 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
insert into t1 values(11);
|
insert into t1 values(11);
|
||||||
commit;
|
commit;
|
||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(10)
|
master-bin.000001 95 Query 1 # use `test`; insert into t1 values(10)
|
||||||
master-bin.000001 177 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 184 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 265 Query 1 # use `test`; BEGIN
|
master-bin.000001 279 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 327 Query 1 # use `test`; insert into t1 values(11)
|
master-bin.000001 348 Query 1 # use `test`; insert into t1 values(11)
|
||||||
master-bin.000001 409 Query 1 # use `test`; COMMIT
|
master-bin.000001 437 Query 1 # use `test`; COMMIT
|
||||||
alter table t2 engine=INNODB;
|
alter table t2 engine=INNODB;
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
@ -132,9 +132,9 @@ commit;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(12)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(12)
|
||||||
master-bin.000001 239 Query 1 # use `test`; insert into t2 select * from t1
|
master-bin.000001 253 Query 1 # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 327 Query 1 # use `test`; COMMIT
|
master-bin.000001 348 Query 1 # use `test`; COMMIT
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -157,8 +157,8 @@ commit;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(14)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(14)
|
||||||
master-bin.000001 239 Query 1 # use `test`; COMMIT
|
master-bin.000001 253 Query 1 # use `test`; COMMIT
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
reset master;
|
reset master;
|
||||||
@ -177,9 +177,9 @@ a
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
master-bin.000001 95 Query 1 # use `test`; BEGIN
|
||||||
master-bin.000001 157 Query 1 # use `test`; insert into t1 values(16)
|
master-bin.000001 164 Query 1 # use `test`; insert into t1 values(16)
|
||||||
master-bin.000001 239 Query 1 # use `test`; insert into t1 values(18)
|
master-bin.000001 253 Query 1 # use `test`; insert into t1 values(18)
|
||||||
master-bin.000001 321 Query 1 # use `test`; COMMIT
|
master-bin.000001 342 Query 1 # use `test`; COMMIT
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
alter table t2 type=MyISAM;
|
alter table t2 type=MyISAM;
|
||||||
|
@ -19,6 +19,7 @@ use test;
|
|||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
drop table if exists t1,t2;
|
drop table if exists t1,t2;
|
||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
create table t1 (word varchar(20));
|
create table t1 (word varchar(20));
|
||||||
@ -41,6 +42,7 @@ use test;
|
|||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values ("Alas");
|
insert into t1 values ("Alas");
|
||||||
|
|
||||||
--- --database --
|
--- --database --
|
||||||
@ -53,6 +55,7 @@ use test;
|
|||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values ("Alas");
|
insert into t1 values ("Alas");
|
||||||
|
|
||||||
--- Remote --
|
--- Remote --
|
||||||
@ -61,6 +64,7 @@ use test;
|
|||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
drop table if exists t1,t2;
|
drop table if exists t1,t2;
|
||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
create table t1 (word varchar(20));
|
create table t1 (word varchar(20));
|
||||||
@ -83,6 +87,7 @@ use test;
|
|||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values ("Alas");
|
insert into t1 values ("Alas");
|
||||||
|
|
||||||
--- --database --
|
--- --database --
|
||||||
@ -95,5 +100,6 @@ use test;
|
|||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values ("Alas");
|
insert into t1 values ("Alas");
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
@ -20,6 +20,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -44,6 +45,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "a");
|
insert into t1 values(null, "a");
|
||||||
SET INSERT_ID=2;
|
SET INSERT_ID=2;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -60,10 +62,12 @@ insert into t1 values(null, "e");
|
|||||||
|
|
||||||
--- start-position --
|
--- start-position --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
SET INSERT_ID=4;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "d");
|
insert into t1 values(null, "d");
|
||||||
SET INSERT_ID=5;
|
SET INSERT_ID=5;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -75,6 +79,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -85,7 +90,6 @@ insert into t1 values(null, "b");
|
|||||||
SET INSERT_ID=3;
|
SET INSERT_ID=3;
|
||||||
SET TIMESTAMP=1579609944;
|
SET TIMESTAMP=1579609944;
|
||||||
insert into t1 values(null, "c");
|
insert into t1 values(null, "c");
|
||||||
SET INSERT_ID=4;
|
|
||||||
|
|
||||||
--- start-datetime --
|
--- start-datetime --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
@ -94,6 +98,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609944;
|
SET TIMESTAMP=1579609944;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "c");
|
insert into t1 values(null, "c");
|
||||||
SET INSERT_ID=4;
|
SET INSERT_ID=4;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -108,6 +113,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -122,6 +128,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -143,6 +150,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- offset --
|
--- offset --
|
||||||
@ -152,6 +160,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "a");
|
insert into t1 values(null, "a");
|
||||||
SET INSERT_ID=2;
|
SET INSERT_ID=2;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -170,14 +179,17 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- start-position --
|
--- start-position --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
SET INSERT_ID=4;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "d");
|
insert into t1 values(null, "d");
|
||||||
SET INSERT_ID=5;
|
SET INSERT_ID=5;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -187,6 +199,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- stop-position --
|
--- stop-position --
|
||||||
@ -195,6 +208,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -220,6 +234,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609944;
|
SET TIMESTAMP=1579609944;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "c");
|
insert into t1 values(null, "c");
|
||||||
SET INSERT_ID=4;
|
SET INSERT_ID=4;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -232,6 +247,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- stop-datetime --
|
--- stop-datetime --
|
||||||
@ -240,6 +256,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -254,6 +271,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -278,6 +296,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "a");
|
insert into t1 values(null, "a");
|
||||||
SET INSERT_ID=2;
|
SET INSERT_ID=2;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -294,10 +313,12 @@ insert into t1 values(null, "e");
|
|||||||
|
|
||||||
--- start-position --
|
--- start-position --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
SET INSERT_ID=4;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "d");
|
insert into t1 values(null, "d");
|
||||||
SET INSERT_ID=5;
|
SET INSERT_ID=5;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -309,6 +330,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -319,7 +341,6 @@ insert into t1 values(null, "b");
|
|||||||
SET INSERT_ID=3;
|
SET INSERT_ID=3;
|
||||||
SET TIMESTAMP=1579609944;
|
SET TIMESTAMP=1579609944;
|
||||||
insert into t1 values(null, "c");
|
insert into t1 values(null, "c");
|
||||||
SET INSERT_ID=4;
|
|
||||||
|
|
||||||
--- start-datetime --
|
--- start-datetime --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
@ -328,6 +349,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609944;
|
SET TIMESTAMP=1579609944;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "c");
|
insert into t1 values(null, "c");
|
||||||
SET INSERT_ID=4;
|
SET INSERT_ID=4;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -342,6 +364,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -356,6 +379,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -377,6 +401,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- offset --
|
--- offset --
|
||||||
@ -386,6 +411,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "a");
|
insert into t1 values(null, "a");
|
||||||
SET INSERT_ID=2;
|
SET INSERT_ID=2;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -404,14 +430,17 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- start-position --
|
--- start-position --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
SET INSERT_ID=4;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "d");
|
insert into t1 values(null, "d");
|
||||||
SET INSERT_ID=5;
|
SET INSERT_ID=5;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -421,6 +450,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- stop-position --
|
--- stop-position --
|
||||||
@ -429,6 +459,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -454,6 +485,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609944;
|
SET TIMESTAMP=1579609944;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "c");
|
insert into t1 values(null, "c");
|
||||||
SET INSERT_ID=4;
|
SET INSERT_ID=4;
|
||||||
SET TIMESTAMP=1579609946;
|
SET TIMESTAMP=1579609946;
|
||||||
@ -466,6 +498,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609943;
|
SET TIMESTAMP=1579609943;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
insert into t1 values(null, "f");
|
insert into t1 values(null, "f");
|
||||||
|
|
||||||
--- stop-datetime --
|
--- stop-datetime --
|
||||||
@ -474,6 +507,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
@ -488,6 +522,7 @@ use test;
|
|||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
create table t1 (a int auto_increment not null primary key, b char(3));
|
create table t1 (a int auto_increment not null primary key, b char(3));
|
||||||
SET INSERT_ID=1;
|
SET INSERT_ID=1;
|
||||||
SET TIMESTAMP=1579609942;
|
SET TIMESTAMP=1579609942;
|
||||||
|
@ -16,11 +16,11 @@ n
|
|||||||
1
|
1
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 355 # # master-bin.000001 No No 0 0 274 # None 0 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 376 # # master-bin.000001 No No 0 0 288 # None 0 No #
|
||||||
change master to master_user='root';
|
change master to master_user='root';
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 274 # # master-bin.000001 No No 0 0 274 # None 0 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 288 # # master-bin.000001 No No 0 0 288 # None 0 No #
|
||||||
select release_lock("a");
|
select release_lock("a");
|
||||||
release_lock("a")
|
release_lock("a")
|
||||||
1
|
1
|
||||||
|
@ -4,6 +4,7 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
set timestamp=1000000000;
|
||||||
drop database if exists mysqltest2;
|
drop database if exists mysqltest2;
|
||||||
drop database if exists mysqltest3;
|
drop database if exists mysqltest3;
|
||||||
create database mysqltest2 character set latin2;
|
create database mysqltest2 character set latin2;
|
||||||
@ -87,7 +88,6 @@ a b
|
|||||||
2 Muffler
|
2 Muffler
|
||||||
3 latin1_german2_ci
|
3 latin1_german2_ci
|
||||||
4 M<>ller
|
4 M<>ller
|
||||||
load data infile '../../std_data/words.dat' into table t1 (b);
|
|
||||||
set @a= _cp850 'M<>ller' collate cp850_general_ci;
|
set @a= _cp850 'M<>ller' collate cp850_general_ci;
|
||||||
truncate table t1;
|
truncate table t1;
|
||||||
insert into t1 (b) values(collation(@a));
|
insert into t1 (b) values(collation(@a));
|
||||||
@ -108,63 +108,39 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
master-bin.000001 # Query 1 # drop database if exists mysqltest2
|
master-bin.000001 # Query 1 # drop database if exists mysqltest2
|
||||||
master-bin.000001 # Query 1 # drop database if exists mysqltest3
|
master-bin.000001 # Query 1 # drop database if exists mysqltest3
|
||||||
master-bin.000001 # Query 1 # create database mysqltest2 character set latin2
|
master-bin.000001 # Query 1 # create database mysqltest2 character set latin2
|
||||||
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30
|
|
||||||
master-bin.000001 # Query 1 # create database mysqltest3
|
master-bin.000001 # Query 1 # create database mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # drop database mysqltest3
|
master-bin.000001 # Query 1 # drop database mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # create database mysqltest3
|
master-bin.000001 # Query 1 # create database mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
|
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=1
|
master-bin.000001 # Intvar 1 # INSERT_ID=1
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@character_set_server)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@character_set_server)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=2
|
master-bin.000001 # Intvar 1 # INSERT_ID=2
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_server)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_server)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=3
|
master-bin.000001 # Intvar 1 # INSERT_ID=3
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@character_set_client)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@character_set_client)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=4
|
master-bin.000001 # Intvar 1 # INSERT_ID=4
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@character_set_connection)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@character_set_connection)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=5
|
master-bin.000001 # Intvar 1 # INSERT_ID=5
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
|
master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=1
|
master-bin.000001 # Intvar 1 # INSERT_ID=1
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=2
|
master-bin.000001 # Intvar 1 # INSERT_ID=2
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(LEAST("M<>ller","Muffler"))
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(LEAST("M<>ller","Muffler"))
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=3
|
master-bin.000001 # Intvar 1 # INSERT_ID=3
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=4
|
master-bin.000001 # Intvar 1 # INSERT_ID=4
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(LEAST("M<>ller","Muffler"))
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(LEAST("M<>ller","Muffler"))
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=74
|
|
||||||
master-bin.000001 # Create_file 1 # db=mysqltest2;table=t1;file_id=1;block_len=581
|
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=5
|
|
||||||
master-bin.000001 # Exec_load 1 # ;file_id=1
|
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
|
master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=1
|
master-bin.000001 # Intvar 1 # INSERT_ID=1
|
||||||
master-bin.000001 # User var 1 # @`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci
|
master-bin.000001 # User var 1 # @`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(collation(@a))
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(collation(@a))
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # drop database mysqltest2
|
master-bin.000001 # Query 1 # drop database mysqltest2
|
||||||
master-bin.000001 # Query 1 # SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
|
||||||
master-bin.000001 # Query 1 # drop database mysqltest3
|
master-bin.000001 # Query 1 # drop database mysqltest3
|
||||||
set global character_set_server=latin2;
|
set global character_set_server=latin2;
|
||||||
ERROR HY000: Binary logging and replication forbid changing the global server character set, collation
|
set global character_set_server=latin1;
|
||||||
set global character_set_server=latin2;
|
set global character_set_server=latin2;
|
||||||
ERROR HY000: Binary logging and replication forbid changing the global server character set, collation
|
set global character_set_server=latin1;
|
||||||
set one_shot @@character_set_server=latin5;
|
set one_shot @@character_set_server=latin5;
|
||||||
set @@max_join_size=1000;
|
set @@max_join_size=1000;
|
||||||
select @@character_set_server;
|
select @@character_set_server;
|
||||||
@ -198,12 +174,74 @@ CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
|||||||
select hex(c1), hex(c2) from t1;
|
select hex(c1), hex(c2) from t1;
|
||||||
hex(c1) hex(c2)
|
hex(c1) hex(c2)
|
||||||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||||||
stop slave;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
delete from t1;
|
SET TIMESTAMP=1000000000;
|
||||||
change master to master_log_pos=6809;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=6967;
|
SET @@session.sql_mode=0;
|
||||||
start slave;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
select hex(c1), hex(c2) from t1;
|
drop database if exists mysqltest2;
|
||||||
hex(c1) hex(c2)
|
SET TIMESTAMP=1000000000;
|
||||||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
drop database if exists mysqltest3;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
create database mysqltest2 character set latin2;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30;
|
||||||
|
create database mysqltest3;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=64;
|
||||||
|
drop database mysqltest3;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
create database mysqltest3;
|
||||||
|
use mysqltest2;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
create table t1 (a int auto_increment primary key, b varchar(100));
|
||||||
|
SET INSERT_ID=1;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=4,@@session.collation_connection=27,@@session.collation_server=64;
|
||||||
|
insert into t1 (b) values(@@character_set_server);
|
||||||
|
SET INSERT_ID=2;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(@@collation_server);
|
||||||
|
SET INSERT_ID=3;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(@@character_set_client);
|
||||||
|
SET INSERT_ID=4;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(@@character_set_connection);
|
||||||
|
SET INSERT_ID=5;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(@@collation_connection);
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=5,@@session.collation_server=64;
|
||||||
|
truncate table t1;
|
||||||
|
SET INSERT_ID=1;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(@@collation_connection);
|
||||||
|
SET INSERT_ID=2;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
||||||
|
SET INSERT_ID=3;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=31,@@session.collation_server=64;
|
||||||
|
insert into t1 (b) values(@@collation_connection);
|
||||||
|
SET INSERT_ID=4;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
truncate table t1;
|
||||||
|
SET INSERT_ID=1;
|
||||||
|
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
insert into t1 (b) values(collation(@a));
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
drop database mysqltest2;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
drop database mysqltest3;
|
||||||
|
use test;
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=30;
|
||||||
|
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
|
||||||
|
SET TIMESTAMP=1000000000;
|
||||||
|
SET @@session.character_set_client=7,@@session.collation_connection=51,@@session.collation_server=30;
|
||||||
|
INSERT INTO t1 (c1, c2) VALUES ('<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -9,7 +9,7 @@ insert into t1 values (1),(1);
|
|||||||
ERROR 23000: Duplicate entry '1' for key 1
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 273 # # master-bin.000001 Yes Yes test.t3,test.t1,test.t2 0 0 273 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 287 # # master-bin.000001 Yes Yes test.t3,test.t1,test.t2 0 0 287 # None 0 No #
|
||||||
show tables like 't1';
|
show tables like 't1';
|
||||||
Tables_in_test (t1)
|
Tables_in_test (t1)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
@ -28,12 +28,12 @@ kill @id;
|
|||||||
drop table t2,t3;
|
drop table t2,t3;
|
||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 187 use `test`; create table t1 (a int primary key)
|
master-bin.000001 95 Query 1 194 use `test`; create table t1 (a int primary key)
|
||||||
master-bin.000001 187 Query 1 273 use `test`; insert into t1 values (1),(1)
|
master-bin.000001 194 Query 1 287 use `test`; insert into t1 values (1),(1)
|
||||||
master-bin.000001 273 Query 1 343 use `test`; drop table t1
|
master-bin.000001 287 Query 1 364 use `test`; drop table t1
|
||||||
master-bin.000001 343 Query 1 435 use `test`; create table t2 (a int primary key)
|
master-bin.000001 364 Query 1 463 use `test`; create table t2 (a int primary key)
|
||||||
master-bin.000001 435 Query 1 516 use `test`; insert into t2 values(1)
|
master-bin.000001 463 Query 1 551 use `test`; insert into t2 values(1)
|
||||||
master-bin.000001 516 Query 1 597 use `test`; create table t3 (id int)
|
master-bin.000001 551 Query 1 639 use `test`; create table t3 (id int)
|
||||||
master-bin.000001 597 Query 1 692 use `test`; insert into t3 values(connection_id())
|
master-bin.000001 639 Query 1 741 use `test`; insert into t3 values(connection_id())
|
||||||
master-bin.000001 692 Query 1 805 use `test`; update t2 set a = a + 1 + get_lock('crash_lock%20C', 10)
|
master-bin.000001 741 Query 1 861 use `test`; update t2 set a = a + 1 + get_lock('crash_lock%20C', 10)
|
||||||
master-bin.000001 805 Query 1 878 use `test`; drop table t2,t3
|
master-bin.000001 861 Query 1 941 use `test`; drop table t2,t3
|
||||||
|
@ -14,4 +14,4 @@ start slave;
|
|||||||
flush logs;
|
flush logs;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 199 # # slave-bin.000001 Yes Yes 0 0 199 # None 0 No #
|
# 127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 206 # # slave-bin.000001 Yes Yes 0 0 206 # None 0 No #
|
||||||
|
@ -15,26 +15,26 @@ flush no_write_to_binlog tables;
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: SERVER_VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: SERVER_VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 175 use `test`; create table t1 (a int)
|
master-bin.000001 95 Query 1 182 use `test`; create table t1 (a int)
|
||||||
master-bin.000001 175 Query 1 258 use `test`; insert into t1 values (10)
|
master-bin.000001 182 Query 1 272 use `test`; insert into t1 values (10)
|
||||||
master-bin.000001 258 Query 1 338 use `test`; create table t2 (a int)
|
master-bin.000001 272 Query 1 359 use `test`; create table t2 (a int)
|
||||||
master-bin.000001 338 Query 1 441 use `test`; create table t3 (a int) engine=merge union(t1)
|
master-bin.000001 359 Query 1 469 use `test`; create table t3 (a int) engine=merge union(t1)
|
||||||
master-bin.000001 441 Query 1 521 use `test`; create table t4 (a int)
|
master-bin.000001 469 Query 1 556 use `test`; create table t4 (a int)
|
||||||
master-bin.000001 521 Query 1 609 use `test`; insert into t4 select * from t3
|
master-bin.000001 556 Query 1 651 use `test`; insert into t4 select * from t3
|
||||||
master-bin.000001 609 Query 1 697 use `test`; rename table t1 to t5, t2 to t1
|
master-bin.000001 651 Query 1 746 use `test`; rename table t1 to t5, t2 to t1
|
||||||
select * from t3;
|
select * from t3;
|
||||||
a
|
a
|
||||||
flush tables;
|
flush tables;
|
||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: SERVER_VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: SERVER_VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 175 use `test`; create table t1 (a int)
|
master-bin.000001 95 Query 1 182 use `test`; create table t1 (a int)
|
||||||
master-bin.000001 175 Query 1 258 use `test`; insert into t1 values (10)
|
master-bin.000001 182 Query 1 272 use `test`; insert into t1 values (10)
|
||||||
master-bin.000001 258 Query 1 338 use `test`; create table t2 (a int)
|
master-bin.000001 272 Query 1 359 use `test`; create table t2 (a int)
|
||||||
master-bin.000001 338 Query 1 441 use `test`; create table t3 (a int) engine=merge union(t1)
|
master-bin.000001 359 Query 1 469 use `test`; create table t3 (a int) engine=merge union(t1)
|
||||||
master-bin.000001 441 Query 1 521 use `test`; create table t4 (a int)
|
master-bin.000001 469 Query 1 556 use `test`; create table t4 (a int)
|
||||||
master-bin.000001 521 Query 1 609 use `test`; insert into t4 select * from t3
|
master-bin.000001 556 Query 1 651 use `test`; insert into t4 select * from t3
|
||||||
master-bin.000001 609 Query 1 697 use `test`; rename table t1 to t5, t2 to t1
|
master-bin.000001 651 Query 1 746 use `test`; rename table t1 to t5, t2 to t1
|
||||||
master-bin.000001 697 Query 1 766 use `test`; flush tables
|
master-bin.000001 746 Query 1 822 use `test`; flush tables
|
||||||
select * from t3;
|
select * from t3;
|
||||||
a
|
a
|
||||||
|
@ -22,7 +22,7 @@ day id category name
|
|||||||
2003-03-22 2416 a bbbbb
|
2003-03-22 2416 a bbbbb
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
slave-bin.000001 1068
|
slave-bin.000001 1096
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
drop table t3;
|
drop table t3;
|
||||||
@ -33,7 +33,7 @@ set global sql_slave_skip_counter=1;
|
|||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1503 # # master-bin.000001 Yes Yes 0 0 1503 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1559 # # master-bin.000001 Yes Yes 0 0 1559 # None 0 No #
|
||||||
set sql_log_bin=0;
|
set sql_log_bin=0;
|
||||||
delete from t1;
|
delete from t1;
|
||||||
set sql_log_bin=1;
|
set sql_log_bin=1;
|
||||||
@ -43,7 +43,7 @@ change master to master_user='test';
|
|||||||
change master to master_user='root';
|
change master to master_user='root';
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1611 # # master-bin.000001 No No 0 0 1611 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1667 # # master-bin.000001 No No 0 0 1667 # None 0 No #
|
||||||
set global sql_slave_skip_counter=1;
|
set global sql_slave_skip_counter=1;
|
||||||
start slave;
|
start slave;
|
||||||
set sql_log_bin=0;
|
set sql_log_bin=0;
|
||||||
@ -64,5 +64,5 @@ terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
|
|||||||
ERROR 23000: Duplicate entry '2003-03-22' for key 1
|
ERROR 23000: Duplicate entry '2003-03-22' for key 1
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
master-bin.000001 529
|
master-bin.000001 536
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
@ -12,6 +12,6 @@ use mysqltest;
|
|||||||
load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
|
load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
|
||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 190 drop database if exists mysqltest
|
master-bin.000001 95 Query 1 197 drop database if exists mysqltest
|
||||||
master-bin.000001 190 Query 1 277 create database mysqltest
|
master-bin.000001 197 Query 1 291 create database mysqltest
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
@ -20,24 +20,24 @@ drop table t1;
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key)
|
master-bin.000001 95 Query 1 217 use `test`; create table t1(n int not null auto_increment primary key)
|
||||||
master-bin.000001 210 Intvar 1 238 INSERT_ID=1
|
master-bin.000001 217 Intvar 1 245 INSERT_ID=1
|
||||||
master-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL)
|
master-bin.000001 245 Query 1 337 use `test`; insert into t1 values (NULL)
|
||||||
master-bin.000001 323 Query 1 393 use `test`; drop table t1
|
master-bin.000001 337 Query 1 414 use `test`; drop table t1
|
||||||
master-bin.000001 393 Query 1 490 use `test`; create table t1 (word char(20) not null)
|
master-bin.000001 414 Query 1 518 use `test`; create table t1 (word char(20) not null)
|
||||||
master-bin.000001 490 Create_file 1 1160 db=test;table=t1;file_id=1;block_len=581
|
master-bin.000001 518 Create_file 1 1188 db=test;table=t1;file_id=1;block_len=581
|
||||||
master-bin.000001 1160 Exec_load 1 1183 ;file_id=1
|
master-bin.000001 1188 Exec_load 1 1211 ;file_id=1
|
||||||
master-bin.000001 1183 Query 1 1253 use `test`; drop table t1
|
master-bin.000001 1211 Query 1 1288 use `test`; drop table t1
|
||||||
show binlog events from 95 limit 1;
|
show binlog events from 95 limit 1;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key)
|
master-bin.000001 95 Query 1 217 use `test`; create table t1(n int not null auto_increment primary key)
|
||||||
show binlog events from 95 limit 2;
|
show binlog events from 95 limit 2;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key)
|
master-bin.000001 95 Query 1 217 use `test`; create table t1(n int not null auto_increment primary key)
|
||||||
master-bin.000001 210 Intvar 1 238 INSERT_ID=1
|
master-bin.000001 217 Intvar 1 245 INSERT_ID=1
|
||||||
show binlog events from 95 limit 2,1;
|
show binlog events from 95 limit 2,1;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL)
|
master-bin.000001 245 Query 1 337 use `test`; insert into t1 values (NULL)
|
||||||
flush logs;
|
flush logs;
|
||||||
create table t5 (a int);
|
create table t5 (a int);
|
||||||
drop table t5;
|
drop table t5;
|
||||||
@ -50,23 +50,23 @@ drop table t1;
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key)
|
master-bin.000001 95 Query 1 217 use `test`; create table t1(n int not null auto_increment primary key)
|
||||||
master-bin.000001 210 Intvar 1 238 INSERT_ID=1
|
master-bin.000001 217 Intvar 1 245 INSERT_ID=1
|
||||||
master-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL)
|
master-bin.000001 245 Query 1 337 use `test`; insert into t1 values (NULL)
|
||||||
master-bin.000001 323 Query 1 393 use `test`; drop table t1
|
master-bin.000001 337 Query 1 414 use `test`; drop table t1
|
||||||
master-bin.000001 393 Query 1 490 use `test`; create table t1 (word char(20) not null)
|
master-bin.000001 414 Query 1 518 use `test`; create table t1 (word char(20) not null)
|
||||||
master-bin.000001 490 Create_file 1 1160 db=test;table=t1;file_id=1;block_len=581
|
master-bin.000001 518 Create_file 1 1188 db=test;table=t1;file_id=1;block_len=581
|
||||||
master-bin.000001 1160 Exec_load 1 1183 ;file_id=1
|
master-bin.000001 1188 Exec_load 1 1211 ;file_id=1
|
||||||
master-bin.000001 1183 Query 1 1253 use `test`; drop table t1
|
master-bin.000001 1211 Query 1 1288 use `test`; drop table t1
|
||||||
master-bin.000001 1253 Rotate 1 1297 master-bin.000002;pos=4
|
master-bin.000001 1288 Rotate 1 1332 master-bin.000002;pos=4
|
||||||
show binlog events in 'master-bin.000002';
|
show binlog events in 'master-bin.000002';
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000002 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000002 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000002 95 Query 1 175 use `test`; create table t5 (a int)
|
master-bin.000002 95 Query 1 182 use `test`; create table t5 (a int)
|
||||||
master-bin.000002 175 Query 1 245 use `test`; drop table t5
|
master-bin.000002 182 Query 1 259 use `test`; drop table t5
|
||||||
master-bin.000002 245 Query 1 325 use `test`; create table t1 (n int)
|
master-bin.000002 259 Query 1 346 use `test`; create table t1 (n int)
|
||||||
master-bin.000002 325 Query 1 407 use `test`; insert into t1 values (1)
|
master-bin.000002 346 Query 1 435 use `test`; insert into t1 values (1)
|
||||||
master-bin.000002 407 Query 1 477 use `test`; drop table t1
|
master-bin.000002 435 Query 1 512 use `test`; drop table t1
|
||||||
show binary logs;
|
show binary logs;
|
||||||
Log_name
|
Log_name
|
||||||
master-bin.000001
|
master-bin.000001
|
||||||
@ -79,25 +79,25 @@ slave-bin.000002
|
|||||||
show binlog events in 'slave-bin.000001' from 4;
|
show binlog events in 'slave-bin.000001' from 4;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
slave-bin.000001 4 Format_desc 2 95 Server ver: VERSION, Binlog ver: 4
|
slave-bin.000001 4 Format_desc 2 95 Server ver: VERSION, Binlog ver: 4
|
||||||
slave-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key)
|
slave-bin.000001 95 Query 1 217 use `test`; create table t1(n int not null auto_increment primary key)
|
||||||
slave-bin.000001 210 Intvar 1 238 INSERT_ID=1
|
slave-bin.000001 217 Intvar 1 245 INSERT_ID=1
|
||||||
slave-bin.000001 238 Query 1 323 use `test`; insert into t1 values (NULL)
|
slave-bin.000001 245 Query 1 337 use `test`; insert into t1 values (NULL)
|
||||||
slave-bin.000001 323 Query 1 393 use `test`; drop table t1
|
slave-bin.000001 337 Query 1 414 use `test`; drop table t1
|
||||||
slave-bin.000001 393 Query 1 490 use `test`; create table t1 (word char(20) not null)
|
slave-bin.000001 414 Query 1 518 use `test`; create table t1 (word char(20) not null)
|
||||||
slave-bin.000001 490 Create_file 1 1169 db=test;table=t1;file_id=1;block_len=581
|
slave-bin.000001 518 Create_file 1 1197 db=test;table=t1;file_id=1;block_len=581
|
||||||
slave-bin.000001 1169 Exec_load 1 1192 ;file_id=1
|
slave-bin.000001 1197 Exec_load 1 1220 ;file_id=1
|
||||||
slave-bin.000001 1192 Query 1 1262 use `test`; drop table t1
|
slave-bin.000001 1220 Query 1 1297 use `test`; drop table t1
|
||||||
slave-bin.000001 1262 Query 1 1342 use `test`; create table t5 (a int)
|
slave-bin.000001 1297 Query 1 1384 use `test`; create table t5 (a int)
|
||||||
slave-bin.000001 1342 Query 1 1412 use `test`; drop table t5
|
slave-bin.000001 1384 Query 1 1461 use `test`; drop table t5
|
||||||
slave-bin.000001 1412 Rotate 2 1455 slave-bin.000002;pos=4
|
slave-bin.000001 1461 Rotate 2 1504 slave-bin.000002;pos=4
|
||||||
show binlog events in 'slave-bin.000002' from 4;
|
show binlog events in 'slave-bin.000002' from 4;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
slave-bin.000002 4 Format_desc 2 95 Server ver: VERSION, Binlog ver: 4
|
slave-bin.000002 4 Format_desc 2 95 Server ver: VERSION, Binlog ver: 4
|
||||||
slave-bin.000002 95 Query 1 175 use `test`; create table t1 (n int)
|
slave-bin.000002 95 Query 1 182 use `test`; create table t1 (n int)
|
||||||
slave-bin.000002 175 Query 1 257 use `test`; insert into t1 values (1)
|
slave-bin.000002 182 Query 1 271 use `test`; insert into t1 values (1)
|
||||||
slave-bin.000002 257 Query 1 327 use `test`; drop table t1
|
slave-bin.000002 271 Query 1 348 use `test`; drop table t1
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002 477 # # master-bin.000002 Yes Yes 0 0 477 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000002 512 # # master-bin.000002 Yes Yes 0 0 512 # None 0 No #
|
||||||
show binlog events in 'slave-bin.000005' from 4;
|
show binlog events in 'slave-bin.000005' from 4;
|
||||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
|
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
|
||||||
|
@ -16,7 +16,7 @@ select @@global.max_relay_log_size;
|
|||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68137 # # master-bin.000001 Yes Yes 0 0 68137 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73751 # # master-bin.000001 Yes Yes 0 0 73751 # None 0 No #
|
||||||
stop slave;
|
stop slave;
|
||||||
reset slave;
|
reset slave;
|
||||||
set global max_relay_log_size=(5*4096);
|
set global max_relay_log_size=(5*4096);
|
||||||
@ -26,7 +26,7 @@ select @@global.max_relay_log_size;
|
|||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68137 # # master-bin.000001 Yes Yes 0 0 68137 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73751 # # master-bin.000001 Yes Yes 0 0 73751 # None 0 No #
|
||||||
stop slave;
|
stop slave;
|
||||||
reset slave;
|
reset slave;
|
||||||
set global max_relay_log_size=0;
|
set global max_relay_log_size=0;
|
||||||
@ -36,7 +36,7 @@ select @@global.max_relay_log_size;
|
|||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68137 # # master-bin.000001 Yes Yes 0 0 68137 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73751 # # master-bin.000001 Yes Yes 0 0 73751 # None 0 No #
|
||||||
stop slave;
|
stop slave;
|
||||||
reset slave;
|
reset slave;
|
||||||
flush logs;
|
flush logs;
|
||||||
@ -49,12 +49,12 @@ flush logs;
|
|||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68217 # # master-bin.000001 Yes Yes 0 0 68217 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73838 # # master-bin.000001 Yes Yes 0 0 73838 # None 0 No #
|
||||||
flush logs;
|
flush logs;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 68287 # # master-bin.000001 Yes Yes 0 0 68287 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73915 # # master-bin.000001 Yes Yes 0 0 73915 # None 0 No #
|
||||||
flush logs;
|
flush logs;
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
|
@ -18,5 +18,5 @@ max(a)
|
|||||||
8000
|
8000
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 687207 # # master-bin.000001 Yes Yes 0 0 687207 # None 0 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 743228 # # master-bin.000001 Yes Yes 0 0 743228 # None 0 No #
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -28,4 +28,4 @@ ERROR 42S02: Table 'test.t11' doesn't exist
|
|||||||
drop table if exists t1,t2,t11;
|
drop table if exists t1,t2,t11;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1554 # # master-bin.000001 Yes Yes test.t1 0 0 1554 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1617 # # master-bin.000001 Yes Yes test.t1 0 0 1617 # None 0 No #
|
||||||
|
@ -16,7 +16,7 @@ create table t1 (s text);
|
|||||||
insert into t1 values('Could not break slave'),('Tried hard');
|
insert into t1 values('Could not break slave'),('Tried hard');
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 60 master-bin.000001 521 # # master-bin.000001 Yes Yes 0 0 521 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 60 master-bin.000001 549 # # master-bin.000001 Yes Yes 0 0 549 # None 0 No #
|
||||||
select * from t1;
|
select * from t1;
|
||||||
s
|
s
|
||||||
Could not break slave
|
Could not break slave
|
||||||
@ -57,7 +57,7 @@ master-bin.000003
|
|||||||
insert into t2 values (65);
|
insert into t2 values (65);
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 60 master-bin.000003 469 # # master-bin.000003 Yes Yes 0 0 469 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 60 master-bin.000003 497 # # master-bin.000003 Yes Yes 0 0 497 # None 0 No #
|
||||||
select * from t2;
|
select * from t2;
|
||||||
m
|
m
|
||||||
34
|
34
|
||||||
@ -79,13 +79,13 @@ master-bin.000004
|
|||||||
master-bin.000005
|
master-bin.000005
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
master-bin.000005 1387
|
master-bin.000005 2050
|
||||||
select * from t4;
|
select * from t4;
|
||||||
a
|
a
|
||||||
testing temporary tables part 2
|
testing temporary tables part 2
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_PORT 60 master-bin.000005 1387 # # master-bin.000005 Yes Yes 0 0 1387 # None 0 No #
|
# 127.0.0.1 root MASTER_PORT 60 master-bin.000005 2050 # # master-bin.000005 Yes Yes 0 0 2050 # None 0 No #
|
||||||
lock tables t3 read;
|
lock tables t3 read;
|
||||||
select count(*) from t3 where n >= 4;
|
select count(*) from t3 where n >= 4;
|
||||||
count(*)
|
count(*)
|
||||||
|
@ -39,18 +39,18 @@ f
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 178 use `test`; drop table if exists t1,t2
|
master-bin.000001 95 Query 1 185 use `test`; drop table if exists t1,t2
|
||||||
master-bin.000001 178 Query 1 257 use `test`; create table t1(f int)
|
master-bin.000001 185 Query 1 271 use `test`; create table t1(f int)
|
||||||
master-bin.000001 257 Query 1 336 use `test`; create table t2(f int)
|
master-bin.000001 271 Query 1 357 use `test`; create table t2(f int)
|
||||||
master-bin.000001 336 Query 1 455 use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
|
master-bin.000001 357 Query 1 483 use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
|
||||||
master-bin.000001 455 Query 1 544 use `test`; create temporary table t3(f int)
|
master-bin.000001 483 Query 1 579 use `test`; create temporary table t3(f int)
|
||||||
master-bin.000001 544 Query 1 642 use `test`; insert into t3 select * from t1 where f<6
|
master-bin.000001 579 Query 1 684 use `test`; insert into t3 select * from t1 where f<6
|
||||||
master-bin.000001 642 Query 1 731 use `test`; create temporary table t3(f int)
|
master-bin.000001 684 Query 1 780 use `test`; create temporary table t3(f int)
|
||||||
master-bin.000001 731 Query 1 826 use `test`; insert into t2 select count(*) from t3
|
master-bin.000001 780 Query 1 882 use `test`; insert into t2 select count(*) from t3
|
||||||
master-bin.000001 826 Query 1 925 use `test`; insert into t3 select * from t1 where f>=4
|
master-bin.000001 882 Query 1 988 use `test`; insert into t3 select * from t1 where f>=4
|
||||||
master-bin.000001 925 Query 1 1005 use `test`; drop temporary table t3
|
master-bin.000001 988 Query 1 1075 use `test`; drop temporary table t3
|
||||||
master-bin.000001 1005 Query 1 1100 use `test`; insert into t2 select count(*) from t3
|
master-bin.000001 1075 Query 1 1177 use `test`; insert into t2 select count(*) from t3
|
||||||
master-bin.000001 1100 Query 1 1180 use `test`; drop temporary table t3
|
master-bin.000001 1177 Query 1 1264 use `test`; drop temporary table t3
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=1040323920;
|
SET TIMESTAMP=1040323920;
|
||||||
|
@ -33,12 +33,12 @@ t
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 181 use `test`; create table t1 (t timestamp)
|
master-bin.000001 95 Query 1 188 use `test`; create table t1 (t timestamp)
|
||||||
master-bin.000001 181 Query 1 266 use `test`; create table t2 (t char(32))
|
master-bin.000001 188 Query 1 280 use `test`; create table t2 (t char(32))
|
||||||
master-bin.000001 266 Query 1 351 use `test`; SET ONE_SHOT TIME_ZONE='UTC'
|
master-bin.000001 280 Query 1 372 use `test`; SET ONE_SHOT TIME_ZONE='UTC'
|
||||||
master-bin.000001 351 Query 1 468 use `test`; insert into t1 values ('20040101000000'), ('20040611093902')
|
master-bin.000001 372 Query 1 496 use `test`; insert into t1 values ('20040101000000'), ('20040611093902')
|
||||||
master-bin.000001 468 Query 1 539 use `test`; delete from t1
|
master-bin.000001 496 Query 1 574 use `test`; delete from t1
|
||||||
master-bin.000001 539 Query 1 656 use `test`; insert into t1 values ('20040101000000'), ('20040611093902')
|
master-bin.000001 574 Query 1 698 use `test`; insert into t1 values ('20040101000000'), ('20040611093902')
|
||||||
set time_zone='MET';
|
set time_zone='MET';
|
||||||
insert into t2 (select t from t1);
|
insert into t2 (select t from t1);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@ -15,13 +15,13 @@ drop table t2;
|
|||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 210 use `test`; create table t1(n int not null auto_increment primary key)
|
master-bin.000001 95 Query 1 217 use `test`; create table t1(n int not null auto_increment primary key)
|
||||||
master-bin.000001 210 Query 1 304 use `test`; insert into t1 values (1),(2),(3),(4)
|
master-bin.000001 217 Query 1 318 use `test`; insert into t1 values (1),(2),(3),(4)
|
||||||
master-bin.000001 304 Query 1 374 use `test`; drop table t1
|
master-bin.000001 318 Query 1 395 use `test`; drop table t1
|
||||||
master-bin.000001 374 Query 1 489 use `test`; create table t2(n int not null auto_increment primary key)
|
master-bin.000001 395 Query 1 517 use `test`; create table t2(n int not null auto_increment primary key)
|
||||||
master-bin.000001 489 Query 1 575 use `test`; insert into t2 values (1),(2)
|
master-bin.000001 517 Query 1 610 use `test`; insert into t2 values (1),(2)
|
||||||
master-bin.000001 575 Query 1 661 use `test`; insert into t2 values (3),(4)
|
master-bin.000001 610 Query 1 703 use `test`; insert into t2 values (3),(4)
|
||||||
master-bin.000001 661 Query 1 731 use `test`; drop table t2
|
master-bin.000001 703 Query 1 780 use `test`; drop table t2
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=304;
|
start slave until master_log_file='master-bin.000001', master_log_pos=304;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
n
|
n
|
||||||
@ -31,7 +31,7 @@ n
|
|||||||
4
|
4
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 304 # Master master-bin.000001 304 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 318 # Master master-bin.000001 304 No #
|
||||||
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
n
|
n
|
||||||
@ -41,7 +41,7 @@ n
|
|||||||
4
|
4
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 304 # Master master-no-such-bin.000001 291 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 318 # Master master-no-such-bin.000001 291 No #
|
||||||
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=710;
|
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=710;
|
||||||
select * from t2;
|
select * from t2;
|
||||||
n
|
n
|
||||||
@ -49,13 +49,13 @@ n
|
|||||||
2
|
2
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 575 # Relay slave-relay-bin.000004 710 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 610 # Relay slave-relay-bin.000004 710 No #
|
||||||
start slave;
|
start slave;
|
||||||
stop slave;
|
stop slave;
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=710;
|
start slave until master_log_file='master-bin.000001', master_log_pos=710;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 731 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 731 # Master master-bin.000001 710 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 780 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 780 # Master master-bin.000001 710 No #
|
||||||
start slave until master_log_file='master-bin', master_log_pos=561;
|
start slave until master_log_file='master-bin', master_log_pos=561;
|
||||||
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
|
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
|
||||||
|
@ -76,34 +76,35 @@ abcn1n2
|
|||||||
NULL
|
NULL
|
||||||
NULL
|
NULL
|
||||||
NULL
|
NULL
|
||||||
show binlog events from 179;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
slave-bin.000001 179 User var 2 222 @`i1`=12345678901234
|
slave-bin.000001 95 Query 1 186 use `test`; create table t1(n char(30))
|
||||||
slave-bin.000001 222 User var 2 265 @`i2`=-12345678901234
|
slave-bin.000001 186 User var 2 229 @`i1`=12345678901234
|
||||||
slave-bin.000001 265 User var 2 308 @`i3`=0
|
slave-bin.000001 229 User var 2 272 @`i2`=-12345678901234
|
||||||
slave-bin.000001 308 User var 2 351 @`i4`=-1
|
slave-bin.000001 272 User var 2 315 @`i3`=0
|
||||||
slave-bin.000001 351 Query 1 456 use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4)
|
slave-bin.000001 315 User var 2 358 @`i4`=-1
|
||||||
slave-bin.000001 456 User var 2 499 @`r1`=12.5
|
slave-bin.000001 358 Query 1 470 use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4)
|
||||||
slave-bin.000001 499 User var 2 542 @`r2`=-12.5
|
slave-bin.000001 470 User var 2 513 @`r1`=12.5
|
||||||
slave-bin.000001 542 Query 1 633 use `test`; insert into t1 values (@r1), (@r2)
|
slave-bin.000001 513 User var 2 556 @`r2`=-12.5
|
||||||
slave-bin.000001 633 User var 2 682 @`s1`=_latin1 0x5468697320697320612074657374 COLLATE latin1_swedish_ci
|
slave-bin.000001 556 Query 1 654 use `test`; insert into t1 values (@r1), (@r2)
|
||||||
slave-bin.000001 682 User var 2 717 @`s2`=_latin1 "" COLLATE latin1_swedish_ci
|
slave-bin.000001 654 User var 2 703 @`s1`=_latin1 0x5468697320697320612074657374 COLLATE latin1_swedish_ci
|
||||||
slave-bin.000001 717 User var 2 759 @`s3`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
|
slave-bin.000001 703 User var 2 738 @`s2`=_latin1 "" COLLATE latin1_swedish_ci
|
||||||
slave-bin.000001 759 User var 2 801 @`s4`=_latin1 0x6162635C646566 COLLATE latin1_swedish_ci
|
slave-bin.000001 738 User var 2 780 @`s3`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
|
||||||
slave-bin.000001 801 User var 2 843 @`s5`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
|
slave-bin.000001 780 User var 2 822 @`s4`=_latin1 0x6162635C646566 COLLATE latin1_swedish_ci
|
||||||
slave-bin.000001 843 Query 1 955 use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5)
|
slave-bin.000001 822 User var 2 864 @`s5`=_latin1 0x61626327646566 COLLATE latin1_swedish_ci
|
||||||
slave-bin.000001 955 User var 2 981 @`n1`=NULL
|
slave-bin.000001 864 Query 1 983 use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5)
|
||||||
slave-bin.000001 981 Query 1 1065 use `test`; insert into t1 values (@n1)
|
slave-bin.000001 983 User var 2 1009 @`n1`=NULL
|
||||||
slave-bin.000001 1065 User var 2 1091 @`n2`=NULL
|
slave-bin.000001 1009 Query 1 1100 use `test`; insert into t1 values (@n1)
|
||||||
slave-bin.000001 1091 Query 1 1175 use `test`; insert into t1 values (@n2)
|
slave-bin.000001 1100 User var 2 1126 @`n2`=NULL
|
||||||
slave-bin.000001 1175 Query 1 1285 use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1)
|
slave-bin.000001 1126 Query 1 1217 use `test`; insert into t1 values (@n2)
|
||||||
slave-bin.000001 1285 User var 2 1327 @`a`=2
|
slave-bin.000001 1217 Query 1 1334 use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1)
|
||||||
slave-bin.000001 1327 Query 1 1421 use `test`; insert into t1 values (@a+(@b:=@a+1))
|
slave-bin.000001 1334 User var 2 1376 @`a`=2
|
||||||
slave-bin.000001 1421 User var 2 1458 @`q`=_latin1 0x616263 COLLATE latin1_swedish_ci
|
slave-bin.000001 1376 Query 1 1477 use `test`; insert into t1 values (@a+(@b:=@a+1))
|
||||||
slave-bin.000001 1458 Query 1 1584 use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'))
|
slave-bin.000001 1477 User var 2 1514 @`q`=_latin1 0x616263 COLLATE latin1_swedish_ci
|
||||||
slave-bin.000001 1584 User var 2 1626 @`a`=5
|
slave-bin.000001 1514 Query 1 1647 use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'))
|
||||||
slave-bin.000001 1626 Query 1 1714 use `test`; insert into t1 values (@a),(@a)
|
slave-bin.000001 1647 User var 2 1689 @`a`=5
|
||||||
slave-bin.000001 1714 User var 2 1739 @`a`=NULL
|
slave-bin.000001 1689 Query 1 1784 use `test`; insert into t1 values (@a),(@a)
|
||||||
slave-bin.000001 1739 Query 1 1834 use `test`; insert into t1 values (@a),(@a),(@a*5)
|
slave-bin.000001 1784 User var 2 1809 @`a`=NULL
|
||||||
|
slave-bin.000001 1809 Query 1 1911 use `test`; insert into t1 values (@a),(@a),(@a*5)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
stop slave;
|
stop slave;
|
||||||
|
@ -177,16 +177,17 @@ insert into t1 values (@var1),(@var2);
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 95 User var 1 136 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
master-bin.000001 95 User var 1 136 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 136 Query 1 222 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
master-bin.000001 136 Query 1 229 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
||||||
master-bin.000001 222 User var 1 264 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
master-bin.000001 229 User var 1 271 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 264 User var 1 302 @`var2`=_latin1 0x61 COLLATE latin1_swedish_ci
|
master-bin.000001 271 User var 1 309 @`var2`=_latin1 0x61 COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 302 Query 1 396 use `test`; insert into t1 values (@var1),(@var2)
|
master-bin.000001 309 Query 1 410 use `test`; insert into t1 values (@var1),(@var2)
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`;
|
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`;
|
||||||
use test;
|
use test;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
||||||
SET @@session.sql_mode=0;
|
SET @@session.sql_mode=0;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
||||||
INSERT INTO t1 VALUES(@`a b`);
|
INSERT INTO t1 VALUES(@`a b`);
|
||||||
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
|
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`;
|
||||||
SET @`var2`:=_latin1 0x61 COLLATE `latin1_swedish_ci`;
|
SET @`var2`:=_latin1 0x61 COLLATE `latin1_swedish_ci`;
|
||||||
|
@ -107,3 +107,12 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
|
|||||||
#
|
#
|
||||||
|
|
||||||
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#6726: NOT BETWEEN parse failure
|
||||||
|
#
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
insert into t1 values (1,2), (2,3), (3,4), (4,5);
|
||||||
|
select * from t1 where a not between 1 and 2;
|
||||||
|
select * from t1 where a not between 1 and 2 and b not between 3 and 4;
|
||||||
|
drop table t1;
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
# Replication of character sets.
|
# Replication of character sets.
|
||||||
# This test will fail if the server/client does not support enough charsets.
|
# This test will fail if the server/client does not support enough charsets.
|
||||||
|
|
||||||
# Remember that there currently exists
|
|
||||||
# Bug #2326: Charset of table is determined by charset of db only if "USE db;"
|
|
||||||
|
|
||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
|
set timestamp=1000000000;
|
||||||
drop database if exists mysqltest2;
|
drop database if exists mysqltest2;
|
||||||
drop database if exists mysqltest3;
|
drop database if exists mysqltest3;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
@ -46,7 +44,7 @@ set character_set_client=cp850, collation_connection=latin2_croatian_ci;
|
|||||||
insert into t1 (b) values(@@character_set_server);
|
insert into t1 (b) values(@@character_set_server);
|
||||||
insert into t1 (b) values(@@collation_server);
|
insert into t1 (b) values(@@collation_server);
|
||||||
# character_set_database and collation_database are not tested as they
|
# character_set_database and collation_database are not tested as they
|
||||||
# are not replicated (Bar said that this variable may be removed shortly).
|
# needn't be replicated (Bar said in Jan 2005).
|
||||||
insert into t1 (b) values(@@character_set_client);
|
insert into t1 (b) values(@@character_set_client);
|
||||||
# collation_client does not exist
|
# collation_client does not exist
|
||||||
insert into t1 (b) values(@@character_set_connection);
|
insert into t1 (b) values(@@character_set_connection);
|
||||||
@ -79,9 +77,10 @@ select "--- --slave--" as "";
|
|||||||
--enable_query_log
|
--enable_query_log
|
||||||
select * from mysqltest2.t1 order by a;
|
select * from mysqltest2.t1 order by a;
|
||||||
|
|
||||||
# See if SET ONE_SHOT gets into binlog when LOAD DATA
|
# Presently charset info is not logged with LOAD DATA but it will
|
||||||
connection master;
|
# change in Jan 2005 when Dmitri pushes his new LOAD DATA,
|
||||||
load data infile '../../std_data/words.dat' into table t1 (b);
|
# before 5.0.3 goes out. When done, LOAD DATA INFILE should be tested
|
||||||
|
# here.
|
||||||
|
|
||||||
# See if user var is prefixed with collation in binlog and replicated well.
|
# See if user var is prefixed with collation in binlog and replicated well.
|
||||||
# Note: replication of user variables is broken as far as derivation is
|
# Note: replication of user variables is broken as far as derivation is
|
||||||
@ -90,6 +89,7 @@ load data infile '../../std_data/words.dat' into table t1 (b);
|
|||||||
# know if the collation was explicit or not, so we use DERIVATION_NONE,
|
# know if the collation was explicit or not, so we use DERIVATION_NONE,
|
||||||
# which provokes error messages (like 'Illegal mix of collation') when
|
# which provokes error messages (like 'Illegal mix of collation') when
|
||||||
# we replay the master's INSERT/etc statements.
|
# we replay the master's INSERT/etc statements.
|
||||||
|
connection master;
|
||||||
set @a= _cp850 'M<>ller' collate cp850_general_ci;
|
set @a= _cp850 'M<>ller' collate cp850_general_ci;
|
||||||
truncate table t1;
|
truncate table t1;
|
||||||
insert into t1 (b) values(collation(@a));
|
insert into t1 (b) values(collation(@a));
|
||||||
@ -110,13 +110,13 @@ drop database mysqltest3;
|
|||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
# Check that we can't change global.collation_server
|
# Check that we can change global.collation_server (since 5.0.3)
|
||||||
|
|
||||||
error 1387;
|
|
||||||
set global character_set_server=latin2;
|
set global character_set_server=latin2;
|
||||||
|
set global character_set_server=latin1; # back
|
||||||
connection master;
|
connection master;
|
||||||
error 1387;
|
|
||||||
set global character_set_server=latin2;
|
set global character_set_server=latin2;
|
||||||
|
set global character_set_server=latin1; # back
|
||||||
|
|
||||||
# Check that SET ONE_SHOT is really one shot
|
# Check that SET ONE_SHOT is really one shot
|
||||||
|
|
||||||
@ -150,35 +150,9 @@ select hex(c1), hex(c2) from t1;
|
|||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
select hex(c1), hex(c2) from t1;
|
select hex(c1), hex(c2) from t1;
|
||||||
|
|
||||||
# Now test for BUG##5705: SET CHARACTER_SET_SERVER etc will be lost if
|
|
||||||
# STOP SLAVE before following query
|
|
||||||
|
|
||||||
stop slave;
|
|
||||||
delete from t1;
|
|
||||||
# Slave is now supposed to have stopped _after_ the INSERT
|
|
||||||
|
|
||||||
# Note that the following positions may change between MySQL versions!
|
|
||||||
|
|
||||||
# This position should be position for the SET ONE SHOT CHARACTER_SET_CLIENT
|
|
||||||
# command just before the INSERT.
|
|
||||||
# You can find it by doing:
|
|
||||||
# ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 CHARACTER_SET | tail -7
|
|
||||||
change master to master_log_pos=6809;
|
|
||||||
|
|
||||||
# This position should be position of the INSERT command.
|
|
||||||
# You can find it by doing:
|
|
||||||
#
|
|
||||||
# ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 INSERT | tail -4
|
|
||||||
|
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=6967;
|
|
||||||
|
|
||||||
# Slave is supposed to stop _after_ the INSERT, even though 'master_log_pos' is
|
|
||||||
# the position of the beginning of the INSERT; after SET slave is not
|
|
||||||
# supposed to increment position.
|
|
||||||
wait_for_slave_to_stop;
|
|
||||||
start slave;
|
|
||||||
sync_with_master;
|
|
||||||
select hex(c1), hex(c2) from t1;
|
|
||||||
connection master;
|
connection master;
|
||||||
|
# Let's have a look at generated SETs.
|
||||||
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
|
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
||||||
drop table t1;
|
drop table t1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
@ -46,7 +46,7 @@ save_master_pos;
|
|||||||
connection slave;
|
connection slave;
|
||||||
sync_with_master;
|
sync_with_master;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
show binlog events from 179;
|
show binlog events from 95;
|
||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
save_master_pos;
|
save_master_pos;
|
||||||
|
@ -76,7 +76,7 @@ int NdbThread_WaitFor(struct NdbThread* p_wait_thread, void** status);
|
|||||||
*
|
*
|
||||||
* * status: exit code
|
* * status: exit code
|
||||||
*/
|
*/
|
||||||
void NdbThread_Exit(int status);
|
void NdbThread_Exit(void *status);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set thread concurrency level
|
* Set thread concurrency level
|
||||||
|
@ -54,10 +54,7 @@ extern "C" void* thread1func(void* arg)
|
|||||||
if (arg1 != 7)
|
if (arg1 != 7)
|
||||||
fail("TEST1", "Wrong arg");
|
fail("TEST1", "Wrong arg");
|
||||||
|
|
||||||
NdbThread_Exit(returnvalue);
|
return returnvalue;
|
||||||
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// test 2 variables and funcs
|
// test 2 variables and funcs
|
||||||
@ -80,10 +77,7 @@ extern "C" void* test2func(void* arg)
|
|||||||
fail("TEST2", "Failed to unlock mutex");
|
fail("TEST2", "Failed to unlock mutex");
|
||||||
|
|
||||||
int returnvalue = arg1;
|
int returnvalue = arg1;
|
||||||
NdbThread_Exit(returnvalue);
|
return returnvalue;
|
||||||
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -129,8 +123,7 @@ extern "C" void* testfunc(void* arg)
|
|||||||
}
|
}
|
||||||
while(tmpVar<100);
|
while(tmpVar<100);
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
return 0;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void* testTryLockfunc(void* arg)
|
extern "C" void* testTryLockfunc(void* arg)
|
||||||
@ -169,8 +162,7 @@ extern "C" void* testTryLockfunc(void* arg)
|
|||||||
}
|
}
|
||||||
while(tmpVar<100);
|
while(tmpVar<100);
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
return 0;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#include <ndb_global.h>
|
#include <ndb_global.h>
|
||||||
#include <NdbThread.h>
|
#include <NdbThread.h>
|
||||||
#include <pthread.h>
|
#include <my_pthread.h>
|
||||||
#include <NdbMem.h>
|
#include <NdbMem.h>
|
||||||
|
|
||||||
#define MAX_THREAD_NAME 16
|
#define MAX_THREAD_NAME 16
|
||||||
@ -39,21 +39,28 @@ struct NdbThread
|
|||||||
static
|
static
|
||||||
void*
|
void*
|
||||||
ndb_thread_wrapper(void* _ss){
|
ndb_thread_wrapper(void* _ss){
|
||||||
void * ret;
|
my_thread_init();
|
||||||
struct NdbThread * ss = (struct NdbThread *)_ss;
|
|
||||||
DBUG_ENTER("ndb_thread_wrapper");
|
|
||||||
#ifdef NDB_SHM_TRANSPORTER
|
|
||||||
if (g_ndb_shm_signum)
|
|
||||||
{
|
{
|
||||||
sigset_t mask;
|
DBUG_ENTER("ndb_thread_wrapper");
|
||||||
DBUG_PRINT("info",("Block signum %d",g_ndb_shm_signum));
|
#ifdef NDB_SHM_TRANSPORTER
|
||||||
sigemptyset(&mask);
|
if (g_ndb_shm_signum)
|
||||||
sigaddset(&mask, g_ndb_shm_signum);
|
{
|
||||||
pthread_sigmask(SIG_BLOCK, &mask, 0);
|
sigset_t mask;
|
||||||
}
|
DBUG_PRINT("info",("Block signum %d",g_ndb_shm_signum));
|
||||||
|
sigemptyset(&mask);
|
||||||
|
sigaddset(&mask, g_ndb_shm_signum);
|
||||||
|
pthread_sigmask(SIG_BLOCK, &mask, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
ret= (* ss->func)(ss->object);
|
{
|
||||||
DBUG_RETURN(ret);
|
void *ret;
|
||||||
|
struct NdbThread * ss = (struct NdbThread *)_ss;
|
||||||
|
ret= (* ss->func)(ss->object);
|
||||||
|
NdbThread_Exit(ret);
|
||||||
|
}
|
||||||
|
/* will never be reached */
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -130,9 +137,10 @@ int NdbThread_WaitFor(struct NdbThread* p_wait_thread, void** status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void NdbThread_Exit(int status)
|
void NdbThread_Exit(void *status)
|
||||||
{
|
{
|
||||||
pthread_exit(&status);
|
my_thread_end();
|
||||||
|
pthread_exit(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1108,11 +1108,8 @@ TransporterRegistry::setIOState(NodeId nodeId, IOState state) {
|
|||||||
static void *
|
static void *
|
||||||
run_start_clients_C(void * me)
|
run_start_clients_C(void * me)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
((TransporterRegistry*) me)->start_clients_thread();
|
((TransporterRegistry*) me)->start_clients_thread();
|
||||||
my_thread_end();
|
return 0;
|
||||||
NdbThread_Exit(0);
|
|
||||||
return me;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run by kernel thread
|
// Run by kernel thread
|
||||||
|
@ -186,11 +186,7 @@ extern "C"
|
|||||||
void*
|
void*
|
||||||
socketServerThread_C(void* _ss){
|
socketServerThread_C(void* _ss){
|
||||||
SocketServer * ss = (SocketServer *)_ss;
|
SocketServer * ss = (SocketServer *)_ss;
|
||||||
|
|
||||||
my_thread_init();
|
|
||||||
ss->doRun();
|
ss->doRun();
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,11 +305,8 @@ void*
|
|||||||
sessionThread_C(void* _sc){
|
sessionThread_C(void* _sc){
|
||||||
SocketServer::Session * si = (SocketServer::Session *)_sc;
|
SocketServer::Session * si = (SocketServer::Session *)_sc;
|
||||||
|
|
||||||
my_thread_init();
|
|
||||||
if(!transfer(si->m_socket)){
|
if(!transfer(si->m_socket)){
|
||||||
si->m_stopped = true;
|
si->m_stopped = true;
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -325,8 +318,6 @@ sessionThread_C(void* _sc){
|
|||||||
}
|
}
|
||||||
|
|
||||||
si->m_stopped = true;
|
si->m_stopped = true;
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +82,6 @@ static int numAsyncFiles = 0;
|
|||||||
|
|
||||||
extern "C" void * runAsyncFile(void* arg)
|
extern "C" void * runAsyncFile(void* arg)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
((AsyncFile*)arg)->run();
|
((AsyncFile*)arg)->run();
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@ -876,8 +875,6 @@ void AsyncFile::endReq()
|
|||||||
{
|
{
|
||||||
// Thread is ended with return
|
// Thread is ended with return
|
||||||
if (theWriteBuffer) NdbMem_Free(theWriteBuffer);
|
if (theWriteBuffer) NdbMem_Free(theWriteBuffer);
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,6 @@ extern "C" void* runProducer(void*arg)
|
|||||||
NdbSleep_MilliSleep(i);
|
NdbSleep_MilliSleep(i);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +57,6 @@ extern "C" void* runConsumer(void* arg)
|
|||||||
delete p;
|
delete p;
|
||||||
|
|
||||||
}
|
}
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +90,6 @@ extern "C" void* runProducer2(void*arg)
|
|||||||
NdbSleep_MilliSleep(i);
|
NdbSleep_MilliSleep(i);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +108,6 @@ extern "C" void* runConsumer2(void* arg)
|
|||||||
delete p;
|
delete p;
|
||||||
}
|
}
|
||||||
ndbout << "Consumer2: " << count << " received" << endl;
|
ndbout << "Consumer2: " << count << " received" << endl;
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,19 +76,26 @@ FastScheduler::activateSendPacked()
|
|||||||
globalData.loopMax = 2048;
|
globalData.loopMax = 2048;
|
||||||
}//FastScheduler::activateSendPacked()
|
}//FastScheduler::activateSendPacked()
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
// sendPacked is executed at the end of the loop.
|
||||||
|
// To ensure that we don't send any messages before executing all local
|
||||||
|
// packed signals we do another turn in the loop (unless we have already
|
||||||
|
// executed too many signals in the loop).
|
||||||
|
//------------------------------------------------------------------------
|
||||||
void
|
void
|
||||||
FastScheduler::doJob()
|
FastScheduler::doJob()
|
||||||
{
|
{
|
||||||
|
Uint32 init_loopCount = 0;
|
||||||
|
Uint32 TminLoops = getBOccupancy() + EXTRA_SIGNALS_PER_DO_JOB;
|
||||||
|
Uint32 TloopMax = (Uint32)globalData.loopMax;
|
||||||
|
if (TminLoops < TloopMax) {
|
||||||
|
TloopMax = TminLoops;
|
||||||
|
}//if
|
||||||
|
if (TloopMax < MIN_NUMBER_OF_SIG_PER_DO_JOB) {
|
||||||
|
TloopMax = MIN_NUMBER_OF_SIG_PER_DO_JOB;
|
||||||
|
}//if
|
||||||
do{
|
do{
|
||||||
Uint32 loopCount = 0;
|
Uint32 loopCount = init_loopCount;
|
||||||
Uint32 TminLoops = getBOccupancy() + EXTRA_SIGNALS_PER_DO_JOB;
|
|
||||||
Uint32 TloopMax = (Uint32)globalData.loopMax;
|
|
||||||
if (TminLoops < TloopMax) {
|
|
||||||
TloopMax = TminLoops;
|
|
||||||
}//if
|
|
||||||
if (TloopMax < MIN_NUMBER_OF_SIG_PER_DO_JOB) {
|
|
||||||
TloopMax = MIN_NUMBER_OF_SIG_PER_DO_JOB;
|
|
||||||
}//if
|
|
||||||
register Uint32 tHighPrio = globalData.highestAvailablePrio;
|
register Uint32 tHighPrio = globalData.highestAvailablePrio;
|
||||||
register Signal* signal = getVMSignals();
|
register Signal* signal = getVMSignals();
|
||||||
while ((tHighPrio < LEVEL_IDLE) && (loopCount < TloopMax)) {
|
while ((tHighPrio < LEVEL_IDLE) && (loopCount < TloopMax)) {
|
||||||
@ -151,7 +158,7 @@ FastScheduler::doJob()
|
|||||||
if (globalData.sendPackedActivated == 1) {
|
if (globalData.sendPackedActivated == 1) {
|
||||||
Uint32 t1 = theDoJobTotalCounter;
|
Uint32 t1 = theDoJobTotalCounter;
|
||||||
Uint32 t2 = theDoJobCallCounter;
|
Uint32 t2 = theDoJobCallCounter;
|
||||||
t1 += loopCount;
|
t1 += (loopCount - init_loopCount);
|
||||||
t2++;
|
t2++;
|
||||||
theDoJobTotalCounter = t1;
|
theDoJobTotalCounter = t1;
|
||||||
theDoJobCallCounter = t2;
|
theDoJobCallCounter = t2;
|
||||||
@ -161,7 +168,11 @@ FastScheduler::doJob()
|
|||||||
theDoJobTotalCounter = 0;
|
theDoJobTotalCounter = 0;
|
||||||
}//if
|
}//if
|
||||||
}//if
|
}//if
|
||||||
} while (getBOccupancy() > MAX_OCCUPANCY);
|
init_loopCount = loopCount;
|
||||||
|
sendPacked();
|
||||||
|
} while ((getBOccupancy() > MAX_OCCUPANCY) ||
|
||||||
|
((init_loopCount < TloopMax) &&
|
||||||
|
(globalData.highestAvailablePrio < LEVEL_IDLE)));
|
||||||
}//FastScheduler::doJob()
|
}//FastScheduler::doJob()
|
||||||
|
|
||||||
void FastScheduler::sendPacked()
|
void FastScheduler::sendPacked()
|
||||||
|
@ -173,9 +173,6 @@ void ThreadConfig::ipControlLoop()
|
|||||||
// until all buffers are empty or until we have executed 2048 signals.
|
// until all buffers are empty or until we have executed 2048 signals.
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
globalScheduler.doJob();
|
globalScheduler.doJob();
|
||||||
|
|
||||||
globalScheduler.sendPacked();
|
|
||||||
|
|
||||||
}//while
|
}//while
|
||||||
|
|
||||||
globalData.incrementWatchDogCounter(6);
|
globalData.incrementWatchDogCounter(6);
|
||||||
|
@ -27,10 +27,7 @@
|
|||||||
extern "C"
|
extern "C"
|
||||||
void*
|
void*
|
||||||
runWatchDog(void* w){
|
runWatchDog(void* w){
|
||||||
my_thread_init();
|
|
||||||
((WatchDog*)w)->run();
|
((WatchDog*)w)->run();
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,8 +457,6 @@ event_thread_run(void* m)
|
|||||||
{
|
{
|
||||||
NdbMgmHandle handle= *(NdbMgmHandle*)m;
|
NdbMgmHandle handle= *(NdbMgmHandle*)m;
|
||||||
|
|
||||||
my_thread_init();
|
|
||||||
|
|
||||||
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0 };
|
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0 };
|
||||||
int fd = ndb_mgm_listen_event(handle, filter);
|
int fd = ndb_mgm_listen_event(handle, filter);
|
||||||
if (fd > 0)
|
if (fd > 0)
|
||||||
@ -478,9 +476,7 @@ event_thread_run(void* m)
|
|||||||
do_event_thread= -1;
|
do_event_thread= -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my_thread_end();
|
return NULL;
|
||||||
NdbThread_Exit(0);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -3204,13 +3204,27 @@ fixShmKey(InitConfigFileParser::Context & ctx, const char *)
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("fixShmKey");
|
DBUG_ENTER("fixShmKey");
|
||||||
{
|
{
|
||||||
|
static int last_signum= -1;
|
||||||
Uint32 signum;
|
Uint32 signum;
|
||||||
if(!ctx.m_currentSection->get("Signum", &signum))
|
if(!ctx.m_currentSection->get("Signum", &signum))
|
||||||
{
|
{
|
||||||
signum= OPT_NDB_SHM_SIGNUM_DEFAULT;
|
signum= OPT_NDB_SHM_SIGNUM_DEFAULT;
|
||||||
|
if (signum <= 0)
|
||||||
|
{
|
||||||
|
ctx.reportError("Unable to set default parameter for [SHM]Signum"
|
||||||
|
" please specify [SHM DEFAULT]Signum");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
ctx.m_currentSection->put("Signum", signum);
|
ctx.m_currentSection->put("Signum", signum);
|
||||||
DBUG_PRINT("info",("Added Signum=%u", signum));
|
DBUG_PRINT("info",("Added Signum=%u", signum));
|
||||||
}
|
}
|
||||||
|
if ( last_signum != (int)signum && last_signum >= 0 )
|
||||||
|
{
|
||||||
|
ctx.reportError("All shared memory transporters must have same [SHM]Signum defined."
|
||||||
|
" Use [SHM DEFAULT]Signum");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
last_signum= (int)signum;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Uint32 id1= 0, id2= 0, key= 0;
|
Uint32 id1= 0, id2= 0, key= 0;
|
||||||
|
@ -70,12 +70,7 @@ void *
|
|||||||
MgmtSrvr::logLevelThread_C(void* m)
|
MgmtSrvr::logLevelThread_C(void* m)
|
||||||
{
|
{
|
||||||
MgmtSrvr *mgm = (MgmtSrvr*)m;
|
MgmtSrvr *mgm = (MgmtSrvr*)m;
|
||||||
my_thread_init();
|
|
||||||
mgm->logLevelThreadRun();
|
mgm->logLevelThreadRun();
|
||||||
|
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
/* NOTREACHED */
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,12 +78,7 @@ void *
|
|||||||
MgmtSrvr::signalRecvThread_C(void *m)
|
MgmtSrvr::signalRecvThread_C(void *m)
|
||||||
{
|
{
|
||||||
MgmtSrvr *mgm = (MgmtSrvr*)m;
|
MgmtSrvr *mgm = (MgmtSrvr*)m;
|
||||||
my_thread_init();
|
|
||||||
mgm->signalRecvThreadRun();
|
mgm->signalRecvThreadRun();
|
||||||
|
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
/* NOTREACHED */
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,6 @@ runClusterMgr_C(void * me)
|
|||||||
#ifdef NDB_OSE
|
#ifdef NDB_OSE
|
||||||
NdbSleep_MilliSleep(50);
|
NdbSleep_MilliSleep(50);
|
||||||
#endif
|
#endif
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -563,10 +562,7 @@ extern "C"
|
|||||||
void*
|
void*
|
||||||
runArbitMgr_C(void* me)
|
runArbitMgr_C(void* me)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
((ArbitMgr*) me)->threadMain();
|
((ArbitMgr*) me)->threadMain();
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,11 +405,8 @@ extern "C"
|
|||||||
void*
|
void*
|
||||||
runSendRequest_C(void * me)
|
runSendRequest_C(void * me)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
((TransporterFacade*) me)->threadMainSend();
|
((TransporterFacade*) me)->threadMainSend();
|
||||||
my_thread_end();
|
return 0;
|
||||||
NdbThread_Exit(0);
|
|
||||||
return me;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransporterFacade::threadMainSend(void)
|
void TransporterFacade::threadMainSend(void)
|
||||||
@ -443,11 +440,8 @@ extern "C"
|
|||||||
void*
|
void*
|
||||||
runReceiveResponse_C(void * me)
|
runReceiveResponse_C(void * me)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
((TransporterFacade*) me)->threadMainReceive();
|
((TransporterFacade*) me)->threadMainReceive();
|
||||||
my_thread_end();
|
return 0;
|
||||||
NdbThread_Exit(0);
|
|
||||||
return me;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransporterFacade::threadMainReceive(void)
|
void TransporterFacade::threadMainReceive(void)
|
||||||
|
@ -87,11 +87,8 @@ const char *Ndb_cluster_connection::get_connectstring(char *buf,
|
|||||||
|
|
||||||
extern "C" pthread_handler_decl(run_ndb_cluster_connection_connect_thread, me)
|
extern "C" pthread_handler_decl(run_ndb_cluster_connection_connect_thread, me)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
g_run_connect_thread= 1;
|
g_run_connect_thread= 1;
|
||||||
((Ndb_cluster_connection_impl*) me)->connect_thread();
|
((Ndb_cluster_connection_impl*) me)->connect_thread();
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return me;
|
return me;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -984,7 +984,6 @@ void* ThreadExec(void* ThreadData){
|
|||||||
delete pMyNdb;
|
delete pMyNdb;
|
||||||
pMyNdb = NULL ;
|
pMyNdb = NULL ;
|
||||||
ThreadReady[thread_no] = 1;
|
ThreadReady[thread_no] = 1;
|
||||||
NdbThread_Exit(0) ;
|
|
||||||
return 0 ;
|
return 0 ;
|
||||||
}//if
|
}//if
|
||||||
|
|
||||||
@ -1197,7 +1196,6 @@ void* ThreadExec(void* ThreadData){
|
|||||||
} // for(;;)
|
} // for(;;)
|
||||||
|
|
||||||
delete pMyNdb ;
|
delete pMyNdb ;
|
||||||
NdbThread_Exit(0) ;
|
return 0 ;
|
||||||
return 0 ; // Compiler is happy now
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,8 +504,7 @@ threadLoop(void* ThreadData)
|
|||||||
delete localNdb;
|
delete localNdb;
|
||||||
ThreadReady[threadNo] = 1;
|
ThreadReady[threadNo] = 1;
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
return NULL;
|
||||||
return NULL; // Just to keep compiler happy
|
|
||||||
}//threadLoop()
|
}//threadLoop()
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -628,7 +628,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
free(attrRefValue) ;
|
free(attrRefValue) ;
|
||||||
free(pOps) ;
|
free(pOps) ;
|
||||||
delete pNdb ;
|
delete pNdb ;
|
||||||
NdbThread_Exit(0) ;
|
return 0; // thread exits
|
||||||
}
|
}
|
||||||
|
|
||||||
pNdb->init();
|
pNdb->init();
|
||||||
@ -945,8 +945,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
free(longKeyAttrValue);
|
free(longKeyAttrValue);
|
||||||
} // if
|
} // if
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
return NULL; // Thread exits
|
||||||
return NULL; // Just to keep compiler happy
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -621,10 +621,7 @@ flexHammerThread(void* pArg)
|
|||||||
|
|
||||||
flexHammerErrorData->resetErrorCounters();
|
flexHammerErrorData->resetErrorCounters();
|
||||||
|
|
||||||
// And exit using NDBT
|
return NULL; // thread exits
|
||||||
NdbThread_Exit(0);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
} // flexHammerThread
|
} // flexHammerThread
|
||||||
|
|
||||||
|
@ -701,8 +701,7 @@ flexScanThread(void* ThreadData)
|
|||||||
free(pkValue);
|
free(pkValue);
|
||||||
} // if
|
} // if
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
return NULL; // thread exits
|
||||||
return NULL;
|
|
||||||
|
|
||||||
} // flexScanThread
|
} // flexScanThread
|
||||||
|
|
||||||
|
@ -398,8 +398,7 @@ threadLoop(void* ThreadData)
|
|||||||
delete localNdb;
|
delete localNdb;
|
||||||
ThreadReady[loc_threadNo] = 1;
|
ThreadReady[loc_threadNo] = 1;
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
return NULL; // Thread exits
|
||||||
return NULL; // Just to keep compiler happy
|
|
||||||
}//threadLoop()
|
}//threadLoop()
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -406,9 +406,8 @@ threadLoop(void* ThreadData)
|
|||||||
|
|
||||||
delete localNdb;
|
delete localNdb;
|
||||||
ThreadReady[threadNo] = 1;
|
ThreadReady[threadNo] = 1;
|
||||||
NdbThread_Exit(0);
|
|
||||||
|
|
||||||
return NULL;
|
return NULL; // thread exits
|
||||||
}
|
}
|
||||||
|
|
||||||
void executeThread(StartType aType, Ndb* aNdbObject, ThreadNdb* threadInfo)
|
void executeThread(StartType aType, Ndb* aNdbObject, ThreadNdb* threadInfo)
|
||||||
|
@ -711,7 +711,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
the_socket_name,
|
the_socket_name,
|
||||||
0) == NULL ) {
|
0) == NULL ) {
|
||||||
ndbout << "failed" << endl;
|
ndbout << "failed" << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
mysql.reconnect= 1;
|
mysql.reconnect= 1;
|
||||||
ndbout << "ok" << endl;
|
ndbout << "ok" << endl;
|
||||||
@ -724,7 +724,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
|
|
||||||
if (r) {
|
if (r) {
|
||||||
ndbout << "autocommit on/off failed" << endl;
|
ndbout << "autocommit on/off failed" << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -743,7 +743,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
ndbout << threadNo << endl ;
|
ndbout << threadNo << endl ;
|
||||||
ndbout << "Thread #" << threadNo << " will now exit" << endl ;
|
ndbout << "Thread #" << threadNo << " will now exit" << endl ;
|
||||||
tResult = 13 ;
|
tResult = 13 ;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_ndb) {
|
if (use_ndb) {
|
||||||
@ -752,7 +752,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
ndbout << "Failed to get an NDB object" << endl;
|
ndbout << "Failed to get an NDB object" << endl;
|
||||||
ndbout << "Thread #" << threadNo << " will now exit" << endl ;
|
ndbout << "Thread #" << threadNo << " will now exit" << endl ;
|
||||||
tResult = 13;
|
tResult = 13;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
pNdb->waitUntilReady();
|
pNdb->waitUntilReady();
|
||||||
return_ndb_object(pNdb, ndb_id);
|
return_ndb_object(pNdb, ndb_id);
|
||||||
@ -902,11 +902,11 @@ static void* flexBenchThread(void* pArg)
|
|||||||
prep_insert[i] = mysql_prepare(&mysql, buf, pos);
|
prep_insert[i] = mysql_prepare(&mysql, buf, pos);
|
||||||
if (prep_insert[i] == 0) {
|
if (prep_insert[i] == 0) {
|
||||||
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_bind_param(prep_insert[i], bind_insert)) {
|
if (mysql_bind_param(prep_insert[i], bind_insert)) {
|
||||||
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -928,11 +928,11 @@ static void* flexBenchThread(void* pArg)
|
|||||||
prep_update[i] = mysql_prepare(&mysql, buf, pos);
|
prep_update[i] = mysql_prepare(&mysql, buf, pos);
|
||||||
if (prep_update[i] == 0) {
|
if (prep_update[i] == 0) {
|
||||||
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_bind_param(prep_update[i], bind_update)) {
|
if (mysql_bind_param(prep_update[i], bind_update)) {
|
||||||
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -955,15 +955,15 @@ static void* flexBenchThread(void* pArg)
|
|||||||
prep_read[i] = mysql_prepare(&mysql, buf, pos);
|
prep_read[i] = mysql_prepare(&mysql, buf, pos);
|
||||||
if (prep_read[i] == 0) {
|
if (prep_read[i] == 0) {
|
||||||
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_bind_param(prep_read[i], bind_read)) {
|
if (mysql_bind_param(prep_read[i], bind_read)) {
|
||||||
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_bind_result(prep_read[i], &bind_read[1])) {
|
if (mysql_bind_result(prep_read[i], &bind_read[1])) {
|
||||||
ndbout << "mysql_bind_result: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_bind_result: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -980,11 +980,11 @@ static void* flexBenchThread(void* pArg)
|
|||||||
prep_delete[i] = mysql_prepare(&mysql, buf, pos);
|
prep_delete[i] = mysql_prepare(&mysql, buf, pos);
|
||||||
if (prep_delete[i] == 0) {
|
if (prep_delete[i] == 0) {
|
||||||
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_prepare: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_bind_param(prep_delete[i], bind_delete)) {
|
if (mysql_bind_param(prep_delete[i], bind_delete)) {
|
||||||
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
ndbout << "mysql_bind_param: " << mysql_error(&mysql) << endl;
|
||||||
NdbThread_Exit(0) ;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1433,8 +1433,7 @@ static void* flexBenchThread(void* pArg)
|
|||||||
ndbout << "I got here " << endl;
|
ndbout << "I got here " << endl;
|
||||||
return_ndb_object(pNdb, ndb_id);
|
return_ndb_object(pNdb, ndb_id);
|
||||||
}
|
}
|
||||||
NdbThread_Exit(0);
|
return NULL;
|
||||||
return NULL; // Just to keep compiler happy
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -274,8 +274,6 @@ threadRoutine(void *arg)
|
|||||||
|
|
||||||
asyncDbDisconnect(pNDB);
|
asyncDbDisconnect(pNDB);
|
||||||
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,10 +481,7 @@ extern "C"
|
|||||||
void *
|
void *
|
||||||
runStep_C(void * s)
|
runStep_C(void * s)
|
||||||
{
|
{
|
||||||
my_thread_init();
|
|
||||||
runStep(s);
|
runStep(s);
|
||||||
my_thread_end();
|
|
||||||
NdbThread_Exit(0);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,7 +291,6 @@ extern "C" void*
|
|||||||
copyrun_C(void* copy)
|
copyrun_C(void* copy)
|
||||||
{
|
{
|
||||||
((Copy*) copy)->run();
|
((Copy*) copy)->run();
|
||||||
NdbThread_Exit(0);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,7 +321,6 @@ extern "C" void*
|
|||||||
connrun_C(void* conn)
|
connrun_C(void* conn)
|
||||||
{
|
{
|
||||||
((Conn*) conn)->run();
|
((Conn*) conn)->run();
|
||||||
NdbThread_Exit(0);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1346,7 +1346,7 @@ bool MYSQL_LOG::write(Log_event* event_info)
|
|||||||
|
|
||||||
if (thd)
|
if (thd)
|
||||||
{
|
{
|
||||||
/* NOTE: CHARSET AND TZ REPL WILL BE REWRITTEN SHORTLY */
|
#if MYSQL_VERSION_ID < 50003
|
||||||
/*
|
/*
|
||||||
To make replication of charsets working in 4.1 we are writing values
|
To make replication of charsets working in 4.1 we are writing values
|
||||||
of charset related variables before every statement in the binlog,
|
of charset related variables before every statement in the binlog,
|
||||||
@ -1375,9 +1375,15 @@ COLLATION_CONNECTION=%u,COLLATION_DATABASE=%u,COLLATION_SERVER=%u",
|
|||||||
if (e.write(file))
|
if (e.write(file))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
We use the same ONE_SHOT trick for making replication of time zones
|
We use the same ONE_SHOT trick for making replication of time zones
|
||||||
working in 4.1. Again in 5.0 we have better means for doing this.
|
working in 4.1. Again in 5.0 we have better means for doing this.
|
||||||
|
|
||||||
|
TODO: we should do like we now do with charsets (no more ONE_SHOT;
|
||||||
|
logging in each event in a compact format). Dmitri says we can do:
|
||||||
|
if (time_zone_used) write the timezone to binlog (in a format to be
|
||||||
|
defined).
|
||||||
*/
|
*/
|
||||||
if (thd->time_zone_used &&
|
if (thd->time_zone_used &&
|
||||||
thd->variables.time_zone != global_system_variables.time_zone)
|
thd->variables.time_zone != global_system_variables.time_zone)
|
||||||
|
161
sql/log_event.cc
161
sql/log_event.cc
@ -953,7 +953,13 @@ void Query_log_event::pack_info(Protocol *protocol)
|
|||||||
|
|
||||||
bool Query_log_event::write(IO_CACHE* file)
|
bool Query_log_event::write(IO_CACHE* file)
|
||||||
{
|
{
|
||||||
uchar buf[QUERY_HEADER_LEN+1+4+1+8+1+1+FN_REFLEN+5], *start, *start_of_status;
|
uchar buf[QUERY_HEADER_LEN+
|
||||||
|
1+4+ // code of flags2 and flags2
|
||||||
|
1+8+ // code of sql_mode and sql_mode
|
||||||
|
1+1+FN_REFLEN+ // code of catalog and catalog length and catalog
|
||||||
|
1+4+ // code of autoinc and the 2 autoinc variables
|
||||||
|
1+6 // code of charset and charset
|
||||||
|
], *start, *start_of_status;
|
||||||
ulong event_length;
|
ulong event_length;
|
||||||
|
|
||||||
if (!query)
|
if (!query)
|
||||||
@ -1048,9 +1054,15 @@ bool Query_log_event::write(IO_CACHE* file)
|
|||||||
int2store(start+2, auto_increment_offset);
|
int2store(start+2, auto_increment_offset);
|
||||||
start+= 4;
|
start+= 4;
|
||||||
}
|
}
|
||||||
|
if (charset_inited)
|
||||||
|
{
|
||||||
|
*(start++)= Q_CHARSET_CODE;
|
||||||
|
memcpy(start, charset, 6);
|
||||||
|
start+= 6;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
Here there could be code like
|
Here there could be code like
|
||||||
if (command-line-option-which-says-"log_this_variable")
|
if (command-line-option-which-says-"log_this_variable" && inited)
|
||||||
{
|
{
|
||||||
*(start++)= Q_THIS_VARIABLE_CODE;
|
*(start++)= Q_THIS_VARIABLE_CODE;
|
||||||
int4store(start, this_variable);
|
int4store(start, this_variable);
|
||||||
@ -1095,7 +1107,7 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
|
|||||||
thread_id(thd_arg->thread_id),
|
thread_id(thd_arg->thread_id),
|
||||||
/* save the original thread id; we already know the server id */
|
/* save the original thread id; we already know the server id */
|
||||||
slave_proxy_id(thd_arg->variables.pseudo_thread_id),
|
slave_proxy_id(thd_arg->variables.pseudo_thread_id),
|
||||||
flags2_inited(1), sql_mode_inited(1), flags2(0),
|
flags2_inited(1), sql_mode_inited(1), charset_inited(1),
|
||||||
sql_mode(thd_arg->variables.sql_mode),
|
sql_mode(thd_arg->variables.sql_mode),
|
||||||
auto_increment_increment(thd_arg->variables.auto_increment_increment),
|
auto_increment_increment(thd_arg->variables.auto_increment_increment),
|
||||||
auto_increment_offset(thd_arg->variables.auto_increment_offset)
|
auto_increment_offset(thd_arg->variables.auto_increment_offset)
|
||||||
@ -1104,7 +1116,7 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
|
|||||||
time(&end_time);
|
time(&end_time);
|
||||||
exec_time = (ulong) (end_time - thd->start_time);
|
exec_time = (ulong) (end_time - thd->start_time);
|
||||||
catalog_len = (catalog) ? (uint32) strlen(catalog) : 0;
|
catalog_len = (catalog) ? (uint32) strlen(catalog) : 0;
|
||||||
status_vars_len= 1+4+1+8+1+1+catalog_len+1;
|
/* status_vars_len is set just before writing the event */
|
||||||
db_len = (db) ? (uint32) strlen(db) : 0;
|
db_len = (db) ? (uint32) strlen(db) : 0;
|
||||||
/*
|
/*
|
||||||
If we don't use flags2 for anything else than options contained in
|
If we don't use flags2 for anything else than options contained in
|
||||||
@ -1114,7 +1126,12 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
|
|||||||
we will probably want to reclaim the 29 bits. So we need the &.
|
we will probably want to reclaim the 29 bits. So we need the &.
|
||||||
*/
|
*/
|
||||||
flags2= thd_arg->options & OPTIONS_WRITTEN_TO_BIN_LOG;
|
flags2= thd_arg->options & OPTIONS_WRITTEN_TO_BIN_LOG;
|
||||||
|
DBUG_ASSERT(thd->variables.character_set_client->number < 256*256);
|
||||||
|
DBUG_ASSERT(thd->variables.collation_connection->number < 256*256);
|
||||||
|
DBUG_ASSERT(thd->variables.collation_server->number < 256*256);
|
||||||
|
int2store(charset, thd_arg->variables.character_set_client->number);
|
||||||
|
int2store(charset+2, thd_arg->variables.collation_connection->number);
|
||||||
|
int2store(charset+4, thd_arg->variables.collation_server->number);
|
||||||
DBUG_PRINT("info",("Query_log_event has flags2=%lu sql_mode=%lu",flags2,sql_mode));
|
DBUG_PRINT("info",("Query_log_event has flags2=%lu sql_mode=%lu",flags2,sql_mode));
|
||||||
}
|
}
|
||||||
#endif /* MYSQL_CLIENT */
|
#endif /* MYSQL_CLIENT */
|
||||||
@ -1129,7 +1146,8 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
|
|||||||
const Format_description_log_event *description_event)
|
const Format_description_log_event *description_event)
|
||||||
:Log_event(buf, description_event), data_buf(0), query(NullS), catalog(NullS),
|
:Log_event(buf, description_event), data_buf(0), query(NullS), catalog(NullS),
|
||||||
db(NullS), catalog_len(0), status_vars_len(0),
|
db(NullS), catalog_len(0), status_vars_len(0),
|
||||||
flags2_inited(0), sql_mode_inited(0)
|
flags2_inited(0), sql_mode_inited(0), charset_inited(0),
|
||||||
|
auto_increment_increment(1), auto_increment_offset(1)
|
||||||
{
|
{
|
||||||
ulong data_len;
|
ulong data_len;
|
||||||
uint32 tmp;
|
uint32 tmp;
|
||||||
@ -1156,8 +1174,6 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
|
|||||||
exec_time = uint4korr(buf + Q_EXEC_TIME_OFFSET);
|
exec_time = uint4korr(buf + Q_EXEC_TIME_OFFSET);
|
||||||
db_len = (uint)buf[Q_DB_LEN_OFFSET];
|
db_len = (uint)buf[Q_DB_LEN_OFFSET];
|
||||||
error_code = uint2korr(buf + Q_ERR_CODE_OFFSET);
|
error_code = uint2korr(buf + Q_ERR_CODE_OFFSET);
|
||||||
/* If auto_increment is not set by query_event, they should not be used */
|
|
||||||
auto_increment_increment= auto_increment_offset= 1;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
5.0 format starts here.
|
5.0 format starts here.
|
||||||
@ -1216,6 +1232,13 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
|
|||||||
auto_increment_offset= uint2korr(pos+2);
|
auto_increment_offset= uint2korr(pos+2);
|
||||||
pos+= 4;
|
pos+= 4;
|
||||||
break;
|
break;
|
||||||
|
case Q_CHARSET_CODE:
|
||||||
|
{
|
||||||
|
charset_inited= 1;
|
||||||
|
memcpy(charset, pos, 6);
|
||||||
|
pos+= 6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
/* That's why you must write status vars in growing order of code */
|
/* That's why you must write status vars in growing order of code */
|
||||||
DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\
|
DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\
|
||||||
@ -1348,6 +1371,27 @@ void Query_log_event::print(FILE* file, bool short_form,
|
|||||||
last_event_info->auto_increment_offset= auto_increment_offset;
|
last_event_info->auto_increment_offset= auto_increment_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (likely(charset_inited))
|
||||||
|
{
|
||||||
|
if (unlikely(!last_event_info->charset_inited)) /* first Query event */
|
||||||
|
{
|
||||||
|
last_event_info->charset_inited= 1;
|
||||||
|
last_event_info->charset[0]= ~charset[0]; // force a difference to force write
|
||||||
|
}
|
||||||
|
if (unlikely(bcmp(last_event_info->charset, charset, 6)))
|
||||||
|
{
|
||||||
|
fprintf(file,"SET "
|
||||||
|
"@@session.character_set_client=%d,"
|
||||||
|
"@@session.collation_connection=%d,"
|
||||||
|
"@@session.collation_server=%d"
|
||||||
|
";\n",
|
||||||
|
uint2korr(charset),
|
||||||
|
uint2korr(charset+2),
|
||||||
|
uint2korr(charset+4));
|
||||||
|
memcpy(last_event_info->charset, charset, 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my_fwrite(file, (byte*) query, q_len, MYF(MY_NABP | MY_WME));
|
my_fwrite(file, (byte*) query, q_len, MYF(MY_NABP | MY_WME));
|
||||||
fputs(";\n", file);
|
fputs(";\n", file);
|
||||||
}
|
}
|
||||||
@ -1400,34 +1444,64 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
|
|||||||
thd->variables.pseudo_thread_id= thread_id; // for temp tables
|
thd->variables.pseudo_thread_id= thread_id; // for temp tables
|
||||||
mysql_log.write(thd,COM_QUERY,"%s",thd->query);
|
mysql_log.write(thd,COM_QUERY,"%s",thd->query);
|
||||||
DBUG_PRINT("query",("%s",thd->query));
|
DBUG_PRINT("query",("%s",thd->query));
|
||||||
|
|
||||||
if (flags2_inited)
|
|
||||||
/*
|
|
||||||
all bits of thd->options which are 1 in OPTIONS_WRITTEN_TO_BIN_LOG must
|
|
||||||
take their value from flags2.
|
|
||||||
*/
|
|
||||||
thd->options= flags2|(thd->options & ~(ulong)OPTIONS_WRITTEN_TO_BIN_LOG);
|
|
||||||
/*
|
|
||||||
else, we are in a 3.23/4.0 binlog; we previously received a
|
|
||||||
Rotate_log_event which reset thd->options and sql_mode, so nothing to do.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
We do not replicate IGNORE_DIR_IN_CREATE. That is, if the master is a
|
|
||||||
slave which runs with SQL_MODE=IGNORE_DIR_IN_CREATE, this should not
|
|
||||||
force us to ignore the dir too. Imagine you are a ring of machines, and
|
|
||||||
one has a disk problem so that you temporarily need IGNORE_DIR_IN_CREATE
|
|
||||||
on this machine; you don't want it to propagate elsewhere (you don't want
|
|
||||||
all slaves to start ignoring the dirs).
|
|
||||||
*/
|
|
||||||
if (sql_mode_inited)
|
|
||||||
thd->variables.sql_mode=
|
|
||||||
(ulong) ((thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE) |
|
|
||||||
(sql_mode & ~(ulong) MODE_NO_DIR_IN_CREATE));
|
|
||||||
|
|
||||||
if (ignored_error_code((expected_error= error_code)) ||
|
if (ignored_error_code((expected_error= error_code)) ||
|
||||||
!check_expected_error(thd,rli,expected_error))
|
!check_expected_error(thd,rli,expected_error))
|
||||||
|
{
|
||||||
|
if (flags2_inited)
|
||||||
|
/*
|
||||||
|
all bits of thd->options which are 1 in OPTIONS_WRITTEN_TO_BIN_LOG must
|
||||||
|
take their value from flags2.
|
||||||
|
*/
|
||||||
|
thd->options= flags2|(thd->options & ~(ulong)OPTIONS_WRITTEN_TO_BIN_LOG);
|
||||||
|
/*
|
||||||
|
else, we are in a 3.23/4.0 binlog; we previously received a
|
||||||
|
Rotate_log_event which reset thd->options and sql_mode etc, so nothing to do.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
We do not replicate IGNORE_DIR_IN_CREATE. That is, if the master is a
|
||||||
|
slave which runs with SQL_MODE=IGNORE_DIR_IN_CREATE, this should not
|
||||||
|
force us to ignore the dir too. Imagine you are a ring of machines, and
|
||||||
|
one has a disk problem so that you temporarily need IGNORE_DIR_IN_CREATE
|
||||||
|
on this machine; you don't want it to propagate elsewhere (you don't want
|
||||||
|
all slaves to start ignoring the dirs).
|
||||||
|
*/
|
||||||
|
if (sql_mode_inited)
|
||||||
|
thd->variables.sql_mode=
|
||||||
|
(ulong) ((thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE) |
|
||||||
|
(sql_mode & ~(ulong) MODE_NO_DIR_IN_CREATE));
|
||||||
|
if (charset_inited)
|
||||||
|
{
|
||||||
|
if (rli->cached_charset_compare(charset))
|
||||||
|
{
|
||||||
|
/* Verify that we support the charsets found in the event. */
|
||||||
|
if (!(thd->variables.character_set_client=
|
||||||
|
get_charset(uint2korr(charset), MYF(MY_WME))) ||
|
||||||
|
!(thd->variables.collation_connection=
|
||||||
|
get_charset(uint2korr(charset+2), MYF(MY_WME))) ||
|
||||||
|
!(thd->variables.collation_server=
|
||||||
|
get_charset(uint2korr(charset+4), MYF(MY_WME))))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
We updated the thd->variables with nonsensical values (0), and the
|
||||||
|
thread is not guaranteed to terminate now (as it may be configured
|
||||||
|
to ignore EE_UNKNOWN_CHARSET);if we're going to execute a next
|
||||||
|
statement we'll have a new charset info with it, so no problem to
|
||||||
|
have stored 0 in thd->variables. But we invalidate cached
|
||||||
|
charset to force a check next time (otherwise if next time
|
||||||
|
charset is unknown again we won't detect it).
|
||||||
|
*/
|
||||||
|
rli->cached_charset_invalidate();
|
||||||
|
goto compare_errors;
|
||||||
|
}
|
||||||
|
thd->update_charset(); // for the charset change to take effect
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Execute the query (note that we bypass dispatch_command()) */
|
||||||
mysql_parse(thd, thd->query, q_len);
|
mysql_parse(thd, thd->query, q_len);
|
||||||
|
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -1452,6 +1526,8 @@ START SLAVE; . Query: '%s'", expected_error, thd->query);
|
|||||||
}
|
}
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compare_errors:
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If we expected a non-zero error code, and we don't get the same error
|
If we expected a non-zero error code, and we don't get the same error
|
||||||
@ -1666,12 +1742,7 @@ bool Start_log_event_v3::write(IO_CACHE* file)
|
|||||||
int Start_log_event_v3::exec_event(struct st_relay_log_info* rli)
|
int Start_log_event_v3::exec_event(struct st_relay_log_info* rli)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("Start_log_event_v3::exec_event");
|
DBUG_ENTER("Start_log_event_v3::exec_event");
|
||||||
/*
|
switch (binlog_version)
|
||||||
If the I/O thread has not started, mi->old_format is BINLOG_FORMAT_CURRENT
|
|
||||||
(that's what the MASTER_INFO constructor does), so the test below is not
|
|
||||||
perfect at all.
|
|
||||||
*/
|
|
||||||
switch (rli->relay_log.description_event_for_exec->binlog_version)
|
|
||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
@ -2789,14 +2860,24 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli)
|
|||||||
rli->group_master_log_name,
|
rli->group_master_log_name,
|
||||||
(ulong) rli->group_master_log_pos));
|
(ulong) rli->group_master_log_pos));
|
||||||
/*
|
/*
|
||||||
Reset thd->options and sql_mode, because this could be the signal of a
|
Reset thd->options and sql_mode etc, because this could be the signal of
|
||||||
master's downgrade from 5.0 to 4.0.
|
a master's downgrade from 5.0 to 4.0.
|
||||||
However, no need to reset description_event_for_exec: indeed, if the next
|
However, no need to reset description_event_for_exec: indeed, if the next
|
||||||
master is 5.0 (even 5.0.1) we will soon get a Format_desc; if the next
|
master is 5.0 (even 5.0.1) we will soon get a Format_desc; if the next
|
||||||
master is 4.0 then the events are in the slave's format (conversion).
|
master is 4.0 then the events are in the slave's format (conversion).
|
||||||
*/
|
*/
|
||||||
set_slave_thread_options(thd);
|
set_slave_thread_options(thd);
|
||||||
thd->variables.sql_mode= global_system_variables.sql_mode;
|
thd->variables.sql_mode= global_system_variables.sql_mode;
|
||||||
|
thd->variables.auto_increment_increment=
|
||||||
|
thd->variables.auto_increment_offset= 1;
|
||||||
|
thd->variables.character_set_client=
|
||||||
|
global_system_variables.character_set_client;
|
||||||
|
thd->variables.collation_connection=
|
||||||
|
global_system_variables.collation_connection;
|
||||||
|
thd->variables.collation_server=
|
||||||
|
global_system_variables.collation_server;
|
||||||
|
thd->update_charset();
|
||||||
|
rli->cached_charset_invalidate();
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&rli->data_lock);
|
pthread_mutex_unlock(&rli->data_lock);
|
||||||
pthread_cond_broadcast(&rli->data_cond);
|
pthread_cond_broadcast(&rli->data_cond);
|
||||||
|
@ -232,6 +232,7 @@ struct sql_ex_info
|
|||||||
#define Q_SQL_MODE_CODE 1
|
#define Q_SQL_MODE_CODE 1
|
||||||
#define Q_CATALOG_CODE 2
|
#define Q_CATALOG_CODE 2
|
||||||
#define Q_AUTO_INCREMENT 3
|
#define Q_AUTO_INCREMENT 3
|
||||||
|
#define Q_CHARSET_CODE 4
|
||||||
|
|
||||||
/* Intvar event post-header */
|
/* Intvar event post-header */
|
||||||
|
|
||||||
@ -401,11 +402,19 @@ typedef struct st_last_event_info
|
|||||||
bool sql_mode_inited;
|
bool sql_mode_inited;
|
||||||
ulong sql_mode; /* must be same as THD.variables.sql_mode */
|
ulong sql_mode; /* must be same as THD.variables.sql_mode */
|
||||||
ulong auto_increment_increment, auto_increment_offset;
|
ulong auto_increment_increment, auto_increment_offset;
|
||||||
|
bool charset_inited;
|
||||||
|
char charset[6]; // 3 variables, each of them storable in 2 bytes
|
||||||
st_last_event_info()
|
st_last_event_info()
|
||||||
:flags2_inited(0), flags2(0), sql_mode_inited(0), sql_mode(0),
|
:flags2_inited(0), sql_mode_inited(0),
|
||||||
auto_increment_increment(1),auto_increment_offset(1)
|
auto_increment_increment(1),auto_increment_offset(1), charset_inited(0)
|
||||||
{
|
{
|
||||||
db[0]= 0; /* initially, the db is unknown */
|
/*
|
||||||
|
Currently we only use static LAST_EVENT_INFO objects, so zeroed at
|
||||||
|
program's startup, but these explicit bzero() is for the day someone
|
||||||
|
creates dynamic instances.
|
||||||
|
*/
|
||||||
|
bzero(db, sizeof(db));
|
||||||
|
bzero(charset, sizeof(charset));
|
||||||
}
|
}
|
||||||
} LAST_EVENT_INFO;
|
} LAST_EVENT_INFO;
|
||||||
#endif
|
#endif
|
||||||
@ -634,7 +643,7 @@ public:
|
|||||||
status_vars on disk is a sequence of pairs (code, value) where 'code' means
|
status_vars on disk is a sequence of pairs (code, value) where 'code' means
|
||||||
'sql_mode', 'affected' etc. Sometimes 'value' must be a short string, so
|
'sql_mode', 'affected' etc. Sometimes 'value' must be a short string, so
|
||||||
its first byte is its length. For now the order of status vars is:
|
its first byte is its length. For now the order of status vars is:
|
||||||
flags2 - sql_mode - catalog.
|
flags2 - sql_mode - catalog - autoinc - charset
|
||||||
We should add the same thing to Load_log_event, but in fact
|
We should add the same thing to Load_log_event, but in fact
|
||||||
LOAD DATA INFILE is going to be logged with a new type of event (logging of
|
LOAD DATA INFILE is going to be logged with a new type of event (logging of
|
||||||
the plain text query), so Load_log_event would be frozen, so no need. The
|
the plain text query), so Load_log_event would be frozen, so no need. The
|
||||||
@ -655,11 +664,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool flags2_inited;
|
bool flags2_inited;
|
||||||
bool sql_mode_inited;
|
bool sql_mode_inited;
|
||||||
|
bool charset_inited;
|
||||||
|
|
||||||
uint32 flags2;
|
uint32 flags2;
|
||||||
/* In connections sql_mode is 32 bits now but will be 64 bits soon */
|
/* In connections sql_mode is 32 bits now but will be 64 bits soon */
|
||||||
ulong sql_mode;
|
ulong sql_mode;
|
||||||
ulong auto_increment_increment, auto_increment_offset;
|
ulong auto_increment_increment, auto_increment_offset;
|
||||||
|
char charset[6];
|
||||||
|
|
||||||
#ifndef MYSQL_CLIENT
|
#ifndef MYSQL_CLIENT
|
||||||
|
|
||||||
|
@ -285,6 +285,12 @@ extern CHARSET_INFO *national_charset_info, *table_alias_charset;
|
|||||||
#define MODE_TRADITIONAL (MODE_ERROR_FOR_DIVISION_BY_ZERO*2)
|
#define MODE_TRADITIONAL (MODE_ERROR_FOR_DIVISION_BY_ZERO*2)
|
||||||
#define MODE_NO_AUTO_CREATE_USER (MODE_TRADITIONAL*2)
|
#define MODE_NO_AUTO_CREATE_USER (MODE_TRADITIONAL*2)
|
||||||
#define MODE_HIGH_NOT_PRECEDENCE (MODE_NO_AUTO_CREATE_USER*2)
|
#define MODE_HIGH_NOT_PRECEDENCE (MODE_NO_AUTO_CREATE_USER*2)
|
||||||
|
/*
|
||||||
|
Replication uses 8 bytes to store SQL_MODE in the binary log. The day you
|
||||||
|
use strictly more than 64 bits by adding one more define above, you should
|
||||||
|
contact the replication team because the replication code should then be
|
||||||
|
updated (to store more bytes on disk).
|
||||||
|
*/
|
||||||
|
|
||||||
#define RAID_BLOCK_SIZE 1024
|
#define RAID_BLOCK_SIZE 1024
|
||||||
|
|
||||||
|
@ -2061,9 +2061,15 @@ void sys_var_character_set_server::set_default(THD *thd, enum_var_type type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_REPLICATION)
|
#if defined(HAVE_REPLICATION) && (MYSQL_VERSION_ID < 50003)
|
||||||
bool sys_var_character_set_server::check(THD *thd, set_var *var)
|
bool sys_var_character_set_server::check(THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
To be perfect we should fail even if we are a 5.0.3 slave, a 4.1 master,
|
||||||
|
and user wants to change our global character set variables. Because
|
||||||
|
replicating a 4.1 assumes those are not changed. But that's not easy to
|
||||||
|
do.
|
||||||
|
*/
|
||||||
if ((var->type == OPT_GLOBAL) &&
|
if ((var->type == OPT_GLOBAL) &&
|
||||||
(mysql_bin_log.is_open() ||
|
(mysql_bin_log.is_open() ||
|
||||||
active_mi->slave_running || active_mi->rli.slave_running))
|
active_mi->slave_running || active_mi->rli.slave_running))
|
||||||
@ -2168,7 +2174,7 @@ void sys_var_collation_database::set_default(THD *thd, enum_var_type type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_REPLICATION)
|
#if defined(HAVE_REPLICATION) && (MYSQL_VERSION_ID < 50003)
|
||||||
bool sys_var_collation_server::check(THD *thd, set_var *var)
|
bool sys_var_collation_server::check(THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
if ((var->type == OPT_GLOBAL) &&
|
if ((var->type == OPT_GLOBAL) &&
|
||||||
|
@ -564,7 +564,7 @@ class sys_var_character_set_server :public sys_var_character_set
|
|||||||
public:
|
public:
|
||||||
sys_var_character_set_server(const char *name_arg) :
|
sys_var_character_set_server(const char *name_arg) :
|
||||||
sys_var_character_set(name_arg) {}
|
sys_var_character_set(name_arg) {}
|
||||||
#if defined(HAVE_REPLICATION)
|
#if defined(HAVE_REPLICATION) && (MYSQL_VERSION_ID < 50003)
|
||||||
bool check(THD *thd, set_var *var);
|
bool check(THD *thd, set_var *var);
|
||||||
#endif
|
#endif
|
||||||
void set_default(THD *thd, enum_var_type type);
|
void set_default(THD *thd, enum_var_type type);
|
||||||
@ -602,7 +602,7 @@ class sys_var_collation_server :public sys_var_collation
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
sys_var_collation_server(const char *name_arg) :sys_var_collation(name_arg) {}
|
sys_var_collation_server(const char *name_arg) :sys_var_collation(name_arg) {}
|
||||||
#if defined(HAVE_REPLICATION)
|
#if defined(HAVE_REPLICATION) && (MYSQL_VERSION_ID < 50003)
|
||||||
bool check(THD *thd, set_var *var);
|
bool check(THD *thd, set_var *var);
|
||||||
#endif
|
#endif
|
||||||
bool update(THD *thd, set_var *var);
|
bool update(THD *thd, set_var *var);
|
||||||
|
50
sql/slave.cc
50
sql/slave.cc
@ -660,13 +660,14 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
|
|||||||
pthread_cond_t* term_cond,
|
pthread_cond_t* term_cond,
|
||||||
volatile uint *slave_running)
|
volatile uint *slave_running)
|
||||||
{
|
{
|
||||||
|
DBUG_ENTER("terminate_slave_thread");
|
||||||
if (term_lock)
|
if (term_lock)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock(term_lock);
|
pthread_mutex_lock(term_lock);
|
||||||
if (!*slave_running)
|
if (!*slave_running)
|
||||||
{
|
{
|
||||||
pthread_mutex_unlock(term_lock);
|
pthread_mutex_unlock(term_lock);
|
||||||
return ER_SLAVE_NOT_RUNNING;
|
DBUG_RETURN(ER_SLAVE_NOT_RUNNING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DBUG_ASSERT(thd != 0);
|
DBUG_ASSERT(thd != 0);
|
||||||
@ -678,6 +679,7 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
|
|||||||
|
|
||||||
while (*slave_running) // Should always be true
|
while (*slave_running) // Should always be true
|
||||||
{
|
{
|
||||||
|
DBUG_PRINT("loop", ("killing slave thread"));
|
||||||
KICK_SLAVE(thd);
|
KICK_SLAVE(thd);
|
||||||
/*
|
/*
|
||||||
There is a small chance that slave thread might miss the first
|
There is a small chance that slave thread might miss the first
|
||||||
@ -689,7 +691,7 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
|
|||||||
}
|
}
|
||||||
if (term_lock)
|
if (term_lock)
|
||||||
pthread_mutex_unlock(term_lock);
|
pthread_mutex_unlock(term_lock);
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1418,13 +1420,20 @@ not always make sense; please check the manual before using it).";
|
|||||||
values of these 2 are never used (new connections don't use them).
|
values of these 2 are never used (new connections don't use them).
|
||||||
We don't test equality of global collation_database either as it's is
|
We don't test equality of global collation_database either as it's is
|
||||||
going to be deprecated (made read-only) in 4.1 very soon.
|
going to be deprecated (made read-only) in 4.1 very soon.
|
||||||
We don't do it for <3.23.57 because masters <3.23.50 hang on
|
The test is only relevant if master < 5.0.3 (we'll test only if it's older
|
||||||
SELECT @@unknown_var (BUG#7965 - see changelog of 3.23.50).
|
than the 5 branch; < 5.0.3 was alpha...), as >= 5.0.3 master stores
|
||||||
|
charset info in each binlog event.
|
||||||
|
We don't do it for 3.23 because masters <3.23.50 hang on
|
||||||
|
SELECT @@unknown_var (BUG#7965 - see changelog of 3.23.50). So finally we
|
||||||
|
test only if master is 4.x.
|
||||||
*/
|
*/
|
||||||
if (strncmp(mi->rli.relay_log.description_event_for_queue->server_version,
|
|
||||||
"3.23.57",7) < 0)
|
/* redundant with rest of code but safer against later additions */
|
||||||
|
if (*mysql->server_version == '3')
|
||||||
goto err;
|
goto err;
|
||||||
if (!mysql_real_query(mysql, "SELECT @@GLOBAL.COLLATION_SERVER", 32) &&
|
|
||||||
|
if ((*mysql->server_version == '4') &&
|
||||||
|
!mysql_real_query(mysql, "SELECT @@GLOBAL.COLLATION_SERVER", 32) &&
|
||||||
(master_res= mysql_store_result(mysql)))
|
(master_res= mysql_store_result(mysql)))
|
||||||
{
|
{
|
||||||
if ((master_row= mysql_fetch_row(master_res)) &&
|
if ((master_row= mysql_fetch_row(master_res)) &&
|
||||||
@ -1447,8 +1456,12 @@ be equal for replication to work";
|
|||||||
such check will broke everything for them. (And now everything will
|
such check will broke everything for them. (And now everything will
|
||||||
work for them because by default both their master and slave will have
|
work for them because by default both their master and slave will have
|
||||||
'SYSTEM' time zone).
|
'SYSTEM' time zone).
|
||||||
|
|
||||||
|
TODO: when the new replication of timezones is sorted out with Dmitri,
|
||||||
|
change >= '4' to == '4'.
|
||||||
*/
|
*/
|
||||||
if (!mysql_real_query(mysql, "SELECT @@GLOBAL.TIME_ZONE", 25) &&
|
if ((*mysql->server_version >= '4') &&
|
||||||
|
!mysql_real_query(mysql, "SELECT @@GLOBAL.TIME_ZONE", 25) &&
|
||||||
(master_res= mysql_store_result(mysql)))
|
(master_res= mysql_store_result(mysql)))
|
||||||
{
|
{
|
||||||
if ((master_row= mysql_fetch_row(master_res)) &&
|
if ((master_row= mysql_fetch_row(master_res)) &&
|
||||||
@ -2527,6 +2540,7 @@ st_relay_log_info::st_relay_log_info()
|
|||||||
|
|
||||||
bzero((char*) &info_file, sizeof(info_file));
|
bzero((char*) &info_file, sizeof(info_file));
|
||||||
bzero((char*) &cache_buf, sizeof(cache_buf));
|
bzero((char*) &cache_buf, sizeof(cache_buf));
|
||||||
|
cached_charset_invalidate();
|
||||||
pthread_mutex_init(&run_lock, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&run_lock, MY_MUTEX_INIT_FAST);
|
||||||
pthread_mutex_init(&data_lock, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&data_lock, MY_MUTEX_INIT_FAST);
|
||||||
pthread_mutex_init(&log_space_lock, MY_MUTEX_INIT_FAST);
|
pthread_mutex_init(&log_space_lock, MY_MUTEX_INIT_FAST);
|
||||||
@ -3078,6 +3092,24 @@ bool st_relay_log_info::is_until_satisfied()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void st_relay_log_info::cached_charset_invalidate()
|
||||||
|
{
|
||||||
|
/* Full of zeroes means uninitialized. */
|
||||||
|
bzero(cached_charset, sizeof(cached_charset));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool st_relay_log_info::cached_charset_compare(char *charset)
|
||||||
|
{
|
||||||
|
if (bcmp(cached_charset, charset, sizeof(cached_charset)))
|
||||||
|
{
|
||||||
|
memcpy(cached_charset, charset, sizeof(cached_charset));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
|
static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -3722,6 +3754,8 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \
|
|||||||
DBUG_PRINT("info",("Signaling possibly waiting master_pos_wait() functions"));
|
DBUG_PRINT("info",("Signaling possibly waiting master_pos_wait() functions"));
|
||||||
pthread_cond_broadcast(&rli->data_cond);
|
pthread_cond_broadcast(&rli->data_cond);
|
||||||
rli->ignore_log_space_limit= 0; /* don't need any lock */
|
rli->ignore_log_space_limit= 0; /* don't need any lock */
|
||||||
|
/* we die so won't remember charset - re-update them on next thread start */
|
||||||
|
rli->cached_charset_invalidate();
|
||||||
rli->save_temporary_tables = thd->temporary_tables;
|
rli->save_temporary_tables = thd->temporary_tables;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
10
sql/slave.h
10
sql/slave.h
@ -291,6 +291,8 @@ typedef struct st_relay_log_info
|
|||||||
UNTIL_LOG_NAMES_CMP_UNKNOWN= -2, UNTIL_LOG_NAMES_CMP_LESS= -1,
|
UNTIL_LOG_NAMES_CMP_UNKNOWN= -2, UNTIL_LOG_NAMES_CMP_LESS= -1,
|
||||||
UNTIL_LOG_NAMES_CMP_EQUAL= 0, UNTIL_LOG_NAMES_CMP_GREATER= 1
|
UNTIL_LOG_NAMES_CMP_EQUAL= 0, UNTIL_LOG_NAMES_CMP_GREATER= 1
|
||||||
} until_log_names_cmp_result;
|
} until_log_names_cmp_result;
|
||||||
|
|
||||||
|
char cached_charset[6];
|
||||||
|
|
||||||
st_relay_log_info();
|
st_relay_log_info();
|
||||||
~st_relay_log_info();
|
~st_relay_log_info();
|
||||||
@ -334,6 +336,14 @@ typedef struct st_relay_log_info
|
|||||||
return ((until_condition == UNTIL_MASTER_POS) ? group_master_log_pos :
|
return ((until_condition == UNTIL_MASTER_POS) ? group_master_log_pos :
|
||||||
group_relay_log_pos);
|
group_relay_log_pos);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
Last charset (6 bytes) seen by slave SQL thread is cached here; it helps
|
||||||
|
the thread save 3 get_charset() per Query_log_event if the charset is not
|
||||||
|
changing from event to event (common situation).
|
||||||
|
When the 6 bytes are equal to 0 is used to mean "cache is invalidated".
|
||||||
|
*/
|
||||||
|
void cached_charset_invalidate();
|
||||||
|
bool cached_charset_compare(char *charset);
|
||||||
} RELAY_LOG_INFO;
|
} RELAY_LOG_INFO;
|
||||||
|
|
||||||
|
|
||||||
|
@ -4032,14 +4032,15 @@ bool_test:
|
|||||||
bool_pri:
|
bool_pri:
|
||||||
bool_pri IS NULL_SYM { $$= new Item_func_isnull($1); }
|
bool_pri IS NULL_SYM { $$= new Item_func_isnull($1); }
|
||||||
| bool_pri IS not NULL_SYM { $$= new Item_func_isnotnull($1); }
|
| bool_pri IS not NULL_SYM { $$= new Item_func_isnotnull($1); }
|
||||||
| predicate BETWEEN_SYM bit_expr AND_SYM bool_pri
|
| bool_pri EQUAL_SYM predicate { $$= new Item_func_equal($1,$3); }
|
||||||
{ $$= new Item_func_between($1,$3,$5); }
|
| bool_pri comp_op predicate %prec EQ
|
||||||
| predicate not BETWEEN_SYM bit_expr AND_SYM bool_pri
|
{ $$= (*$2)(0)->create($1,$3); }
|
||||||
{ $$= negate_expression(YYTHD, new Item_func_between($1,$4,$6)); }
|
| bool_pri comp_op all_or_any in_subselect %prec EQ
|
||||||
|
{ $$= all_any_subquery_creator($1, $2, $3, $4); }
|
||||||
| predicate ;
|
| predicate ;
|
||||||
|
|
||||||
predicate:
|
predicate:
|
||||||
bit_expr IN_SYM '(' expr_list ')'
|
bit_expr IN_SYM '(' expr_list ')'
|
||||||
{ $4->push_front($1); $$= new Item_func_in(*$4); }
|
{ $4->push_front($1); $$= new Item_func_in(*$4); }
|
||||||
| bit_expr not IN_SYM '(' expr_list ')'
|
| bit_expr not IN_SYM '(' expr_list ')'
|
||||||
{ $5->push_front($1); $$= negate_expression(YYTHD, new Item_func_in(*$5)); }
|
{ $5->push_front($1); $$= negate_expression(YYTHD, new Item_func_in(*$5)); }
|
||||||
@ -4047,6 +4048,10 @@ predicate:
|
|||||||
{ $$= new Item_in_subselect($1, $3); }
|
{ $$= new Item_in_subselect($1, $3); }
|
||||||
| bit_expr not IN_SYM in_subselect
|
| bit_expr not IN_SYM in_subselect
|
||||||
{ $$= negate_expression(YYTHD, new Item_in_subselect($1, $4)); }
|
{ $$= negate_expression(YYTHD, new Item_in_subselect($1, $4)); }
|
||||||
|
| bit_expr BETWEEN_SYM bit_expr AND_SYM predicate
|
||||||
|
{ $$= new Item_func_between($1,$3,$5); }
|
||||||
|
| bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate
|
||||||
|
{ $$= negate_expression(YYTHD, new Item_func_between($1,$4,$6)); }
|
||||||
| bit_expr SOUNDS_SYM LIKE bit_expr
|
| bit_expr SOUNDS_SYM LIKE bit_expr
|
||||||
{ $$= new Item_func_eq(new Item_func_soundex($1),
|
{ $$= new Item_func_eq(new Item_func_soundex($1),
|
||||||
new Item_func_soundex($4)); }
|
new Item_func_soundex($4)); }
|
||||||
@ -4057,11 +4062,6 @@ predicate:
|
|||||||
| bit_expr REGEXP bit_expr { $$= new Item_func_regex($1,$3); }
|
| bit_expr REGEXP bit_expr { $$= new Item_func_regex($1,$3); }
|
||||||
| bit_expr not REGEXP bit_expr
|
| bit_expr not REGEXP bit_expr
|
||||||
{ $$= negate_expression(YYTHD, new Item_func_regex($1,$4)); }
|
{ $$= negate_expression(YYTHD, new Item_func_regex($1,$4)); }
|
||||||
| bit_expr EQUAL_SYM bit_expr { $$= new Item_func_equal($1,$3); }
|
|
||||||
| bit_expr comp_op bit_expr %prec EQ
|
|
||||||
{ $$= (*$2)(0)->create($1,$3); }
|
|
||||||
| bit_expr comp_op all_or_any in_subselect %prec EQ
|
|
||||||
{ $$= all_any_subquery_creator($1, $2, $3, $4); }
|
|
||||||
| bit_expr ;
|
| bit_expr ;
|
||||||
|
|
||||||
bit_expr:
|
bit_expr:
|
||||||
|
@ -27,7 +27,8 @@ EXTRA_DIST = mysql.spec.sh \
|
|||||||
mysql.server.sh \
|
mysql.server.sh \
|
||||||
binary-configure.sh \
|
binary-configure.sh \
|
||||||
magic \
|
magic \
|
||||||
MySQL-shared-compat.spec.sh
|
MySQL-shared-compat.spec.sh \
|
||||||
|
ndb-config-2-node.ini.sh
|
||||||
|
|
||||||
SUBDIRS = MacOSX
|
SUBDIRS = MacOSX
|
||||||
|
|
||||||
@ -38,7 +39,8 @@ pkgdata_DATA = my-small.cnf \
|
|||||||
my-innodb-heavy-4G.cnf \
|
my-innodb-heavy-4G.cnf \
|
||||||
mysql-log-rotate \
|
mysql-log-rotate \
|
||||||
mysql-@VERSION@.spec \
|
mysql-@VERSION@.spec \
|
||||||
MySQL-shared-compat.spec
|
MySQL-shared-compat.spec \
|
||||||
|
ndb-config-2-node.ini
|
||||||
|
|
||||||
pkgdata_SCRIPTS = mysql.server
|
pkgdata_SCRIPTS = mysql.server
|
||||||
|
|
||||||
@ -52,7 +54,8 @@ CLEANFILES = my-small.cnf \
|
|||||||
mysql-log-rotate \
|
mysql-log-rotate \
|
||||||
mysql.server \
|
mysql.server \
|
||||||
binary-configure \
|
binary-configure \
|
||||||
MySQL-shared-compat.spec
|
MySQL-shared-compat.spec \
|
||||||
|
ndb-config-2-node.ini
|
||||||
|
|
||||||
mysql-@VERSION@.spec: mysql.spec
|
mysql-@VERSION@.spec: mysql.spec
|
||||||
rm -f $@
|
rm -f $@
|
||||||
|
@ -104,6 +104,53 @@ This package contains the standard MySQL clients and administration tools.
|
|||||||
%description client -l pt_BR
|
%description client -l pt_BR
|
||||||
Este pacote cont<6E>m os clientes padr<64>o para o MySQL.
|
Este pacote cont<6E>m os clientes padr<64>o para o MySQL.
|
||||||
|
|
||||||
|
%package ndb-storage
|
||||||
|
Release: %{release}
|
||||||
|
Summary: MySQL - ndbcluster storage engine
|
||||||
|
Group: Applications/Databases
|
||||||
|
|
||||||
|
%description ndb-storage
|
||||||
|
This package contains the ndbcluster storage engine.
|
||||||
|
It is necessary to have this package installed on all
|
||||||
|
computers that should store ndbcluster table data.
|
||||||
|
Note that this storage engine can only be used in conjunction
|
||||||
|
with the MySQL Max server.
|
||||||
|
|
||||||
|
%{see_base}
|
||||||
|
|
||||||
|
%package ndb-management
|
||||||
|
Release: %{release}
|
||||||
|
Summary: MySQL - ndbcluster storage engine management
|
||||||
|
Group: Applications/Databases
|
||||||
|
|
||||||
|
%description ndb-management
|
||||||
|
This package contains ndbcluster storage engine management.
|
||||||
|
It is necessary to have this package installed on at least
|
||||||
|
one computer in the cluster.
|
||||||
|
|
||||||
|
%{see_base}
|
||||||
|
|
||||||
|
%package ndb-tools
|
||||||
|
Release: %{release}
|
||||||
|
Summary: MySQL - ndbcluster storage engine basic tools
|
||||||
|
Group: Applications/Databases
|
||||||
|
|
||||||
|
%description ndb-tools
|
||||||
|
This package contains ndbcluster storage engine basic tools.
|
||||||
|
|
||||||
|
%{see_base}
|
||||||
|
|
||||||
|
%package ndb-extra
|
||||||
|
Release: %{release}
|
||||||
|
Summary: MySQL - ndbcluster storage engine extra tools
|
||||||
|
Group: Applications/Databases
|
||||||
|
|
||||||
|
%description ndb-extra
|
||||||
|
This package contains some extra ndbcluster storage engine tools for the advanced user.
|
||||||
|
They should be used with caution.
|
||||||
|
|
||||||
|
%{see_base}
|
||||||
|
|
||||||
%package bench
|
%package bench
|
||||||
Release: %{release}
|
Release: %{release}
|
||||||
Requires: %{name}-client perl-DBI perl
|
Requires: %{name}-client perl-DBI perl
|
||||||
@ -162,6 +209,7 @@ Requires: MySQL-server >= 4.0
|
|||||||
Optional MySQL server binary that supports additional features like:
|
Optional MySQL server binary that supports additional features like:
|
||||||
|
|
||||||
- Berkeley DB Storage Engine
|
- Berkeley DB Storage Engine
|
||||||
|
- Ndbcluster Storage Engine interface
|
||||||
- Archive Storage Engine
|
- Archive Storage Engine
|
||||||
- CSV Storage Engine
|
- CSV Storage Engine
|
||||||
- Example Storage Engine
|
- Example Storage Engine
|
||||||
@ -280,6 +328,7 @@ BuildMySQL "--enable-shared \
|
|||||||
--without-openssl \
|
--without-openssl \
|
||||||
--with-berkeley-db \
|
--with-berkeley-db \
|
||||||
--with-innodb \
|
--with-innodb \
|
||||||
|
--with-ndbcluster \
|
||||||
--with-raid \
|
--with-raid \
|
||||||
--with-archive \
|
--with-archive \
|
||||||
--with-csv-storage-engine \
|
--with-csv-storage-engine \
|
||||||
@ -295,6 +344,9 @@ BuildMySQL "--enable-shared \
|
|||||||
mv sql/mysqld sql/mysqld-max
|
mv sql/mysqld sql/mysqld-max
|
||||||
nm --numeric-sort sql/mysqld-max > sql/mysqld-max.sym
|
nm --numeric-sort sql/mysqld-max > sql/mysqld-max.sym
|
||||||
|
|
||||||
|
# Install the ndb binaries
|
||||||
|
(cd ndb; make install DESTDIR=$RBR)
|
||||||
|
|
||||||
# Install embedded server library in the build root
|
# Install embedded server library in the build root
|
||||||
install -m 644 libmysqld/libmysqld.a $RBR%{_libdir}/mysql/
|
install -m 644 libmysqld/libmysqld.a $RBR%{_libdir}/mysql/
|
||||||
|
|
||||||
@ -437,6 +489,21 @@ chmod -R og-rw $mysql_datadir/mysql
|
|||||||
# Allow safe_mysqld to start mysqld and print a message before we exit
|
# Allow safe_mysqld to start mysqld and print a message before we exit
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
|
|
||||||
|
%pre ndb-storage
|
||||||
|
mysql_clusterdir=/var/lib/mysql-cluster
|
||||||
|
|
||||||
|
# Create cluster directory if needed
|
||||||
|
if test ! -d $mysql_clusterdir; then mkdir -m755 $mysql_clusterdir; fi
|
||||||
|
|
||||||
|
|
||||||
|
%pre ndb-storage
|
||||||
|
mysql_clusterdir=/var/lib/mysql-cluster
|
||||||
|
|
||||||
|
# Create cluster directory if needed
|
||||||
|
if test ! -d $mysql_clusterdir; then mkdir -m755 $mysql_clusterdir; fi
|
||||||
|
|
||||||
|
|
||||||
%post Max
|
%post Max
|
||||||
# Restart mysqld, to use the new binary.
|
# Restart mysqld, to use the new binary.
|
||||||
echo "Restarting mysqld."
|
echo "Restarting mysqld."
|
||||||
@ -477,6 +544,7 @@ fi
|
|||||||
%doc Docs/manual.{html,ps,texi,txt}
|
%doc Docs/manual.{html,ps,texi,txt}
|
||||||
%doc Docs/manual_toc.html
|
%doc Docs/manual_toc.html
|
||||||
%doc support-files/my-*.cnf
|
%doc support-files/my-*.cnf
|
||||||
|
%doc support-files/ndb-*.ini
|
||||||
|
|
||||||
%doc %attr(644, root, root) %{_infodir}/mysql.info*
|
%doc %attr(644, root, root) %{_infodir}/mysql.info*
|
||||||
|
|
||||||
@ -553,6 +621,32 @@ fi
|
|||||||
%postun shared
|
%postun shared
|
||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
|
||||||
|
%files ndb-storage
|
||||||
|
%defattr(-,root,root,0755)
|
||||||
|
%attr(755, root, root) %{_sbindir}/ndbd
|
||||||
|
|
||||||
|
%files ndb-management
|
||||||
|
%defattr(-,root,root,0755)
|
||||||
|
%attr(755, root, root) %{_sbindir}/ndb_mgmd
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_mgm
|
||||||
|
|
||||||
|
%files ndb-tools
|
||||||
|
%defattr(-,root,root,0755)
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_mgm
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_restore
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_waiter
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_select_all
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_select_count
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_desc
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_show_tables
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_test_platform
|
||||||
|
|
||||||
|
%files ndb-extra
|
||||||
|
%defattr(-,root,root,0755)
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_drop_index
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_drop_table
|
||||||
|
%attr(755, root, root) %{_bindir}/ndb_delete_all
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-, root, root, 0755)
|
%defattr(-, root, root, 0755)
|
||||||
%doc EXCEPTIONS-CLIENT
|
%doc EXCEPTIONS-CLIENT
|
||||||
|
43
support-files/ndb-config-2-node.ini.sh
Normal file
43
support-files/ndb-config-2-node.ini.sh
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Example Ndbcluster storage engine config file.
|
||||||
|
#
|
||||||
|
[ndbd default]
|
||||||
|
NoOfReplicas= 2
|
||||||
|
MaxNoOfConcurrentOperations= 10000
|
||||||
|
DataMemory= 80M
|
||||||
|
IndexMemory= 24M
|
||||||
|
TimeBetweenWatchDogCheck= 30000
|
||||||
|
DataDir= /var/lib/mysql-cluster
|
||||||
|
MaxNoOfOrderedIndexes= 512
|
||||||
|
|
||||||
|
[ndb_mgmd default]
|
||||||
|
DataDir= /var/lib/mysql-cluster
|
||||||
|
|
||||||
|
[ndb_mgmd]
|
||||||
|
Id=1
|
||||||
|
HostName= localhost
|
||||||
|
|
||||||
|
[ndbd]
|
||||||
|
Id= 2
|
||||||
|
HostName= localhost
|
||||||
|
|
||||||
|
[ndbd]
|
||||||
|
Id= 3
|
||||||
|
HostName= localhost
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
Id= 4
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
Id= 5
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
Id= 6
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
Id= 7
|
||||||
|
|
||||||
|
# choose an unused port number
|
||||||
|
# in this configuration 63132, 63133, and 63134
|
||||||
|
# will be used
|
||||||
|
[tcp default]
|
||||||
|
PortNumber= 63132
|
Reference in New Issue
Block a user